sso page to manually cancel sso connection

This commit is contained in:
Gaelle Braud 2026-01-16 17:12:12 +01:00
parent af4e8d2685
commit 638c53dad6
19 changed files with 666 additions and 446 deletions

View file

@ -329,6 +329,9 @@ App::App(int &argc, char *argv[])
mEventCountNotifier = new EventCountNotifier(this);
mDateUpdateTimer.start();
mOIDCRefreshTimer.setInterval(1000);
mOIDCRefreshTimer.setSingleShot(false);
#ifdef Q_OS_LINUX
exportDesktopFile();
#endif
@ -384,7 +387,29 @@ void App::setSelf(QSharedPointer<App>(me)) {
mCoreModelConnection->makeConnectToModel(
&CoreModel::globalStateChanged,
[this](const std::shared_ptr<linphone::Core> &core, linphone::GlobalState gstate, const std::string &message) {
mCoreModelConnection->invokeToCore([this, gstate] { setCoreStarted(gstate == linphone::GlobalState::On); });
mCoreModelConnection->invokeToCore([this, gstate] {
setCoreStarted(gstate == linphone::GlobalState::On);
if (gstate == linphone::GlobalState::Configuring) {
if (mMainWindow) {
QMetaObject::invokeMethod(mMainWindow, "openSSOPage", Qt::DirectConnection);
} else {
connect(
this, &App::mainWindowChanged, this,
[this] {
mCoreModelConnection->invokeToModel([this] {
auto gstate = CoreModel::getInstance()->getCore()->getGlobalState();
if (gstate == linphone::GlobalState::Configuring)
mCoreModelConnection->invokeToCore([this] {
if (mMainWindow)
QMetaObject::invokeMethod(mMainWindow, "openSSOPage",
Qt::DirectConnection);
});
});
},
Qt::SingleShotConnection);
}
}
});
});
mCoreModelConnection->makeConnectToModel(&CoreModel::authenticationRequested, &App::onAuthenticationRequested);
// Config error message
@ -425,7 +450,28 @@ void App::setSelf(QSharedPointer<App>(me)) {
// Synchronize state for because linphoneCore was ran before any connections.
mCoreModelConnection->invokeToModel([this]() {
auto state = CoreModel::getInstance()->getCore()->getGlobalState();
mCoreModelConnection->invokeToCore([this, state] { setCoreStarted(state == linphone::GlobalState::On); });
mCoreModelConnection->invokeToCore([this, state] {
setCoreStarted(state == linphone::GlobalState::On);
if (state == linphone::GlobalState::Configuring) {
if (mMainWindow) {
QMetaObject::invokeMethod(mMainWindow, "openSSOPage", Qt::DirectConnection);
} else {
connect(
this, &App::mainWindowChanged, this,
[this] {
mCoreModelConnection->invokeToModel([this] {
auto gstate = CoreModel::getInstance()->getCore()->getGlobalState();
if (gstate == linphone::GlobalState::Configuring)
mCoreModelConnection->invokeToCore([this] {
if (mMainWindow)
QMetaObject::invokeMethod(mMainWindow, "openSSOPage", Qt::DirectConnection);
});
});
},
Qt::SingleShotConnection);
}
}
});
});
mCoreModelConnection->makeConnectToModel(&CoreModel::unreadNotificationsChanged, [this] {
@ -477,6 +523,30 @@ void App::setSelf(QSharedPointer<App>(me)) {
});
});
mCoreModelConnection->makeConnectToModel(&CoreModel::oidcRemainingTimeBeforeTimeoutChanged,
[this](int remainingTime) {
qDebug() << "App: oidc timeout changed";
mCoreModelConnection->invokeToCore([this, remainingTime] {
mRemainingTimeBeforeOidcTimeout = remainingTime;
emit remainingTimeBeforeOidcTimeoutChanged();
});
});
mCoreModelConnection->makeConnectToCore(&App::lForceOidcTimeout, [this] {
qDebug() << "App: force oidc timeout";
mCoreModelConnection->invokeToModel([this] { emit CoreModel::getInstance()->forceOidcTimeout(); });
});
mCoreModelConnection->makeConnectToModel(&CoreModel::timeoutTimerStarted, [this]() {
qDebug() << "App: oidc timer started";
mCoreModelConnection->invokeToCore([this] { mOIDCRefreshTimer.start(); });
});
mCoreModelConnection->makeConnectToModel(&CoreModel::timeoutTimerStopped, [this]() {
qDebug() << "App: oidc timer stopped";
mCoreModelConnection->invokeToCore([this] { mOIDCRefreshTimer.stop(); });
});
connect(&mOIDCRefreshTimer, &QTimer::timeout, this, [this]() {
mCoreModelConnection->invokeToModel([this] { CoreModel::getInstance()->refreshOidcRemainingTime(); });
});
//---------------------------------------------------------------------------------------------
mCliModelConnection = SafeConnection<App, CliModel>::create(me, CliModel::getInstance());
mCliModelConnection->makeConnectToCore(&App::receivedMessage, [this](int, const QByteArray &byteArray) {
@ -1090,7 +1160,7 @@ bool App::notify(QObject *receiver, QEvent *event) {
}
if (event->type() == QEvent::MouseButtonPress) {
auto window = findParentWindow(receiver);
if (getMainWindow() == window) {
if (getMainWindow() == window && mAccountList) {
auto defaultAccountCore = mAccountList->getDefaultAccountCore();
if (defaultAccountCore && defaultAccountCore->getUnreadCallNotifications() > 0) {
emit defaultAccountCore->lResetMissedCalls();

View file

@ -55,6 +55,8 @@ class App : public SingleApplication, public AbstractObject {
Q_PROPERTY(QString sdkVersion READ getSdkVersion CONSTANT)
Q_PROPERTY(ChatGui *currentChat READ getCurrentChat WRITE setCurrentChat NOTIFY currentChatChanged)
Q_PROPERTY(QString localeAsString READ getLocaleAsString CONSTANT)
Q_PROPERTY(int remainingTimeBeforeOidcTimeout MEMBER mRemainingTimeBeforeOidcTimeout NOTIFY
remainingTimeBeforeOidcTimeoutChanged)
public:
App(int &argc, char *argv[]);
@ -219,6 +221,8 @@ signals:
void chatsChanged();
void callHistoryChanged();
void localeChanged();
void lForceOidcTimeout();
void remainingTimeBeforeOidcTimeoutChanged();
// void executeCommand(QString command);
private:
@ -257,6 +261,8 @@ private:
QTimer mDateUpdateTimer;
QDate mCurrentDate;
float mScreenRatio = 1;
QTimer mOIDCRefreshTimer;
int mRemainingTimeBeforeOidcTimeout = 0;
DECLARE_ABSTRACT_OBJECT
};

View file

@ -24,6 +24,12 @@
#include "core/App.hpp"
AccountProxy::AccountProxy(QObject *parent) : LimitProxy(parent) {
if (!App::getInstance()->getAccountList()) {
mList = AccountList::create();
App::getInstance()->setAccountList(mList);
}
mList = App::getInstance()->getAccountList();
setSourceModel(mList.get());
connect(this, &AccountProxy::initializedChanged, this, &AccountProxy::resetDefaultAccount);
connect(this, &AccountProxy::initializedChanged, this, &AccountProxy::haveAccountChanged);
}

View file

@ -59,6 +59,7 @@ signals:
protected:
bool mInitialized = false;
QSharedPointer<AccountList> mList;
QSharedPointer<AccountCore> mDefaultAccount; // When null, a new UI object is build from List
};

View file

@ -73,7 +73,9 @@ void ChatList::connectItem(QSharedPointer<ChatCore> chat) {
};
connect(chat.get(), &ChatCore::unreadMessagesCountChanged, this, [this, dataChange] {
dataChange();
auto defaultAccount = App::getInstance()->getAccountList()->getDefaultAccountCore();
auto defaultAccount = App::getInstance()->getAccountList()
? App::getInstance()->getAccountList()->getDefaultAccountCore()
: nullptr;
if (defaultAccount) emit defaultAccount->lRefreshNotifications();
});
connect(chat.get(), &ChatCore::lastUpdatedTimeChanged, this, dataChange);

View file

@ -95,7 +95,7 @@
<context>
<name>AccountListView</name>
<message>
<location filename="../../view/Page/Main/Account/AccountListView.qml" line="89"/>
<location filename="../../view/Page/Main/Account/AccountListView.qml" line="88"/>
<source>add_an_account</source>
<extracomment>Add an account</extracomment>
<translation>Konto hinzufügen</translation>
@ -674,141 +674,141 @@
<context>
<name>App</name>
<message>
<location filename="../../core/App.cpp" line="365"/>
<location filename="../../core/App.cpp" line="368"/>
<source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment>
<translation>Möchten Sie die Remote-Konfiguration von dieser Adresse herunterladen und anwenden?</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="400"/>
<location filename="../../core/App.cpp" line="452"/>
<location filename="../../core/App.cpp" line="715"/>
<location filename="../../core/App.cpp" line="425"/>
<location filename="../../core/App.cpp" line="498"/>
<location filename="../../core/App.cpp" line="785"/>
<source>info_popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="401"/>
<location filename="../../core/App.cpp" line="717"/>
<location filename="../../core/App.cpp" line="426"/>
<location filename="../../core/App.cpp" line="787"/>
<source>info_popup_configuration_failed_message</source>
<extracomment>Remote provisioning failed : %1</extracomment>
<translation>Remote-Provisionierung fehlgeschlagen: %1</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="455"/>
<location filename="../../core/App.cpp" line="501"/>
<source>info_popup_error_checking_update</source>
<extracomment>An error occured while trying to check update. Please try again later or contact support team.</extracomment>
<translation>Fehler bei der Update-Prüfung. Bitte später erneut versuchen oder Support-Team kontaktieren.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="462"/>
<location filename="../../core/App.cpp" line="508"/>
<source>info_popup_new_version_download_label</source>
<translation>Herunterladen!</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="465"/>
<location filename="../../core/App.cpp" line="511"/>
<source>info_popup_new_version_available_title</source>
<extracomment>New version available !</extracomment>
<translation>Neue Version verfügbar!</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="467"/>
<location filename="../../core/App.cpp" line="513"/>
<source>info_popup_new_version_available_message</source>
<extracomment>A new version of Linphone (%1) is available. %2</extracomment>
<translation>Eine neue Version von Linphone (%1) ist unter %1 verfügbar</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="473"/>
<location filename="../../core/App.cpp" line="519"/>
<source>info_popup_version_up_to_date_title</source>
<translation>Auf dem neuesten Stand</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="475"/>
<location filename="../../core/App.cpp" line="521"/>
<source>info_popup_version_up_to_date_message</source>
<extracomment>Your version is up to date</extracomment>
<translation>Ihre Version ist auf dem neuesten Stand</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="711"/>
<location filename="../../core/App.cpp" line="781"/>
<source>configuration_error_detail</source>
<extracomment>not reachable</extracomment>
<translation>nicht erreichbar</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1002"/>
<location filename="../../core/App.cpp" line="1072"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>Ein kostenloses Open-Source SIP Video-Telefon.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1004"/>
<location filename="../../core/App.cpp" line="1074"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Kommandozeilen-Befehl an die Anwendung schicken</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1008"/>
<location filename="../../core/App.cpp" line="1078"/>
<source>command_line_option_show_help</source>
<translation>Zeige Hilfe</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1013"/>
<location filename="../../core/App.cpp" line="1083"/>
<source>command_line_option_show_app_version</source>
<translation>App-Version anzeigen</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1021"/>
<location filename="../../core/App.cpp" line="1091"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Abzurufende Linphone-Konfigurationsdatei angeben. Sie wird mit der aktuellen Konfiguration zusammengeführt.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1023"/>
<location filename="../../core/App.cpp" line="1093"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, Pfad oder Datei</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1028"/>
<location filename="../../core/App.cpp" line="1098"/>
<source>command_line_option_minimized</source>
<translation>Minimieren</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1031"/>
<location filename="../../core/App.cpp" line="1101"/>
<source>command_line_option_log_to_stdout</source>
<translation>Debug-Informationen auf der Standardausgabe ausgeben</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1034"/>
<location filename="../../core/App.cpp" line="1104"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Nur Anwendungs-Logs ausgeben</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1490"/>
<location filename="../../core/App.cpp" line="1560"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Ausblenden</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1490"/>
<location filename="../../core/App.cpp" line="1560"/>
<source>show_action</source>
<translation>Zeigen</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1505"/>
<location filename="../../core/App.cpp" line="1575"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Beenden</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1523"/>
<location filename="../../core/App.cpp" line="1593"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Auf Updates prüfen</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1646"/>
<location filename="../../core/App.cpp" line="1716"/>
<source>mark_all_read_action</source>
<translation>Alle als gelesen markieren</translation>
</message>
@ -833,19 +833,19 @@
<translation>Passwort</translation>
</message>
<message>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="86"/>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="87"/>
<source>cancel</source>
<extracomment>&quot;Annuler</extracomment>
<translation>Abbrechen</translation>
</message>
<message>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="96"/>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="97"/>
<source>assistant_account_login</source>
<extracomment>Connexion</extracomment>
<translation>Anmelden</translation>
</message>
<message>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="104"/>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="105"/>
<source>assistant_account_login_missing_password</source>
<extracomment>Veuillez saisir un mot de passe</extracomment>
<translation>Bitte Passwort eingeben</translation>
@ -1026,7 +1026,7 @@
<context>
<name>CallHistoryListView</name>
<message>
<location filename="../../view/Control/Display/Call/CallHistoryListView.qml" line="204"/>
<location filename="../../view/Control/Display/Call/CallHistoryListView.qml" line="198"/>
<source>call_name_accessible_button</source>
<extracomment>Call %1</extracomment>
<translation>Anruf %1</translation>
@ -1236,101 +1236,101 @@
<translation>Anrufprotokoll leer</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="86"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="85"/>
<source>history_dialog_delete_all_call_logs_title</source>
<extracomment>Supprimer l&apos;historique d&apos;appels ?</extracomment>
<translation>Anrufprotokoll löschen?</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="88"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="87"/>
<source>history_dialog_delete_all_call_logs_message</source>
<extracomment>&quot;L&apos;ensemble de votre historique d&apos;appels sera définitivement supprimé.&quot;</extracomment>
<translation>Das gesamte Anrufprotokoll wird dauerhaft gelöscht.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="94"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="93"/>
<source>history_dialog_delete_call_logs_title</source>
<extracomment>Supprimer l&apos;historique d&apos;appels ?</extracomment>
<translation>Anrufprotokoll löschen?</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="96"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="95"/>
<source>history_dialog_delete_call_logs_message</source>
<extracomment>&quot;L&apos;ensemble de votre historique d&apos;appels avec ce correspondant sera définitivement supprimé.&quot;</extracomment>
<translation>Das Anrufprotokoll mit diesem Benutzer wird dauerhaft gelöscht.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="151"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="150"/>
<source>call_history_call_list_title</source>
<extracomment>&quot;Appels&quot;</extracomment>
<translation>Anrufe</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="459"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="458"/>
<source>call_history_options_accessible_name</source>
<translation>Anrufverlaufsoptionen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="171"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="551"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="170"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="550"/>
<source>menu_delete_history</source>
<extracomment>&quot;Supprimer l&apos;historique&quot;</extracomment>
<translation>Verlauf löschen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="165"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="164"/>
<source>call_history_list_options_accessible_name</source>
<extracomment>Call history options</extracomment>
<translation>Anrufverlaufsoptionen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="199"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="198"/>
<source>create_new_call_accessible_name</source>
<extracomment>Create new call</extracomment>
<translation>Neuen Anruf erstellen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="212"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="211"/>
<source>call_search_in_history</source>
<extracomment>&quot;Rechercher un appel&quot;</extracomment>
<translation>Anruf suchen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="246"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="245"/>
<source>call_forward_to_address_info</source>
<translation>Anrufe weiterleiten an: </translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="246"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="245"/>
<source>call_forward_to_address_info_voicemail</source>
<translation>Anrufbeantworter</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="275"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="274"/>
<source>list_filter_no_result_found</source>
<extracomment>&quot;Aucun résultat&quot;</extracomment>
<translation>Kein Ergebnis gefunden</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="277"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="276"/>
<source>history_list_empty_history</source>
<extracomment>&quot;Aucun appel dans votre historique&quot;</extracomment>
<translation>Anrufprotokoll leer</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="354"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="353"/>
<source>return_to_call_history_accessible_name</source>
<extracomment>Return to call history</extracomment>
<translation>Zum Anrufverlauf zurückkehren</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="365"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="364"/>
<source>call_action_start_new_call</source>
<extracomment>&quot;Nouvel appel&quot;</extracomment>
<translation>Neuer Anruf</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="406"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="405"/>
<source>call_start_group_call_title</source>
<extracomment>&quot;Appel de groupe&quot;</extracomment>
<translation>Gruppenanruf</translation>
@ -1344,7 +1344,7 @@
</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="408"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="407"/>
<source>call_action_start_group_call</source>
<extracomment>&quot;Lancer&quot;</extracomment>
<translation>Starten</translation>
@ -1360,74 +1360,74 @@
<translation type="vanished">Erforderlich</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="418"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="422"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="520"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="417"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="421"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="519"/>
<source>information_popup_error_title</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="420"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="419"/>
<source>group_call_error_must_have_name</source>
<extracomment>&quot;Un nom doit être donné à l&apos;appel de groupe</extracomment>
<translation>Es muss ein Name für den Anruf angegeben werden</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="424"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="423"/>
<source>group_call_error_not_connected</source>
<extracomment>&quot;Vous n&apos;etes pas connecté&quot;</extracomment>
<translation>Sie sind nicht verbunden</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="478"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="477"/>
<source>menu_see_existing_contact</source>
<extracomment>&quot;Show contact&quot;</extracomment>
<translation>Kontakt anzeigen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="480"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="479"/>
<source>menu_add_address_to_contacts</source>
<extracomment>&quot;Add to contacts&quot;</extracomment>
<translation>Zu Kontakten hinzufügen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="502"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="501"/>
<source>menu_copy_sip_address</source>
<extracomment>&quot;Copier l&apos;adresse SIP&quot;</extracomment>
<translation>SIP-Adresse kopieren</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="514"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="513"/>
<source>sip_address_copied_to_clipboard_toast</source>
<extracomment>Adresse copiée</extracomment>
<translation>SIP-Adresse kopiert</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="516"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="515"/>
<source>sip_address_copied_to_clipboard_message</source>
<extracomment>L&apos;adresse a é copié dans le presse_papiers</extracomment>
<translation>Die Adresse wurde in die Zwischenablage kopiert</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="522"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="521"/>
<source>sip_address_copy_to_clipboard_error</source>
<extracomment>&quot;Erreur lors de la copie de l&apos;adresse&quot;</extracomment>
<translation>Fehler beim Kopieren der Adresse</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="642"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="641"/>
<source>notification_missed_call_title</source>
<extracomment>&quot;Appel manqué&quot;</extracomment>
<translation>Verpasster Anruf</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="645"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="644"/>
<source>call_outgoing</source>
<extracomment>&quot;Appel sortant&quot;</extracomment>
<translation>Ausgehender Anruf</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="647"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="646"/>
<source>call_audio_incoming</source>
<extracomment>&quot;Appel entrant&quot;</extracomment>
<translation>Eingehender Anruf</translation>
@ -2546,91 +2546,91 @@ Stellen Sie sicher, dass Sie keine sensiblen Informationen teilen!</translation>
<translation>Keine Chats</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="46"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="45"/>
<source>info_popup_error_title</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="48"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="47"/>
<source>info_popup_chatroom_creation_failed</source>
<extracomment>Chat room creation failed !</extracomment>
<translation>Chat konnte nicht erstellt werden!</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="42"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="41"/>
<source>loading_popup_chatroom_creation_pending_message</source>
<extracomment>Chat room is being created...</extracomment>
<translation>Chat wird erstellt...</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="97"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="96"/>
<source>chat_dialog_delete_chat_title</source>
<extracomment>Supprimer la conversation ?</extracomment>
<translation>Chat löschen?</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="99"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="98"/>
<source>chat_dialog_delete_chat_message</source>
<extracomment>&quot;La conversation et tous ses messages seront supprimés.&quot;</extracomment>
<translation>Dieser Chat und alle seine Nachrichten werden gelöscht.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="132"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="131"/>
<source>chat_list_title</source>
<extracomment>&quot;Conversations&quot;</extracomment>
<translation>Chats</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="150"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="149"/>
<source>menu_mark_all_as_read</source>
<extracomment>&quot;mark all as read&quot;</extracomment>
<translation>Alle als gelesen markieren</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="180"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="179"/>
<source>chat_search_in_history</source>
<extracomment>&quot;Rechercher une conversation&quot;</extracomment>
<translation>Chat suchen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="203"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="202"/>
<source>list_filter_no_result_found</source>
<extracomment>&quot;Aucun résultat&quot;</extracomment>
<translation>Kein Ergebnis</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="205"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="204"/>
<source>chat_list_empty_history</source>
<extracomment>&quot;Aucune conversation dans votre historique&quot;</extracomment>
<translation>Keine Chats in der Historie</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="279"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="278"/>
<source>chat_action_start_new_chat</source>
<extracomment>&quot;New chat&quot;</extracomment>
<translation>Neuer Chat</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="317"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="316"/>
<source>chat_start_group_chat_title</source>
<extracomment>&quot;Nouveau groupe&quot;</extracomment>
<translation>Neuer Gruppenchat</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="319"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="318"/>
<source>chat_action_start_group_chat</source>
<extracomment>&quot;Créer&quot;</extracomment>
<translation>Erstellen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="335"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="358"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="363"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="334"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="357"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="362"/>
<source>information_popup_error_title</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="337"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="336"/>
<source>information_popup_chat_creation_failed_message</source>
<extracomment>&quot;La création a échoué&quot;</extracomment>
<translation>Erstellen fehlgeschlagen</translation>
@ -2641,25 +2641,25 @@ Stellen Sie sicher, dass Sie keine sensiblen Informationen teilen!</translation>
<translation type="obsolete">Der Codec konnte nicht installiert werden.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="355"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="354"/>
<source>group_chat_error_must_have_name</source>
<extracomment>&quot;Un nom doit être donné au groupe</extracomment>
<translation>Für den Gruppenchat muss ein Name festgelegt werden</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="360"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="359"/>
<source>group_chat_error_no_participant</source>
<extracomment>&quot;Please select at least one participant</extracomment>
<translation>Bitte wählen Sie mindestens einen Teilnehmer aus</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="365"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="364"/>
<source>group_call_error_not_connected</source>
<extracomment>&quot;Vous n&apos;etes pas connecté&quot;</extracomment>
<translation>Sie sind nicht verbunden</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="371"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="370"/>
<source>chat_creation_in_progress</source>
<extracomment>Creation de la conversation en cours </extracomment>
<translation>Chat-Erstellung ausstehend</translation>
@ -3573,12 +3573,12 @@ Stellen Sie sicher, dass Sie keine sensiblen Informationen teilen!</translation>
<context>
<name>CoreModel</name>
<message>
<location filename="../../model/core/CoreModel.cpp" line="207"/>
<location filename="../../model/core/CoreModel.cpp" line="215"/>
<source>info_popup_error_title</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../model/core/CoreModel.cpp" line="209"/>
<location filename="../../model/core/CoreModel.cpp" line="217"/>
<source>fetching_config_failed_error_message</source>
<extracomment>&quot;Remote provisioning cannot be retrieved&quot;</extracomment>
<translation>Die externe Bereitstellung kann nicht abgerufen werden</translation>
@ -4370,144 +4370,144 @@ Ablauf: %1</translation>
<context>
<name>MainLayout</name>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="143"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="142"/>
<source>bottom_navigation_calls_label</source>
<extracomment>&quot;Appels&quot;</extracomment>
<translation>Anrufe</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="145"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="144"/>
<source>open_calls_page_accessible_name</source>
<extracomment>&quot;Open calls page&quot;</extracomment>
<translation>Anrufe öffnen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="151"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="150"/>
<source>bottom_navigation_contacts_label</source>
<extracomment>&quot;Contacts&quot;</extracomment>
<translation>Kontakte</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="153"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="152"/>
<source>open_contacts_page_accessible_name</source>
<extracomment>&quot;Open contacts page&quot;</extracomment>
<translation>Kontakte öffnen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="159"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="158"/>
<source>bottom_navigation_conversations_label</source>
<extracomment>&quot;Conversations&quot;</extracomment>
<translation>Chats</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="161"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="160"/>
<source>open_conversations_page_accessible_name</source>
<extracomment>&quot;Open conversations page&quot;</extracomment>
<translation>Chats öffnen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="168"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="167"/>
<source>bottom_navigation_meetings_label</source>
<extracomment>&quot;Réunions&quot;</extracomment>
<translation>Besprechungen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="170"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="169"/>
<source>open_contact_page_accessible_name</source>
<extracomment>&quot;Open meetings page&quot;</extracomment>
<translation>Meetings öffnen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="221"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="220"/>
<source>searchbar_placeholder_text</source>
<extracomment>&quot;Rechercher un contact, appeler %1&quot;</extracomment>
<translation>Kontakt suchen, %1 anrufen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="223"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="222"/>
<source>searchbar_placeholder_text_chat_feature_enabled</source>
<extracomment>&quot;ou envoyer un message &quot;</extracomment>
<translation>oder eine Nachricht senden </translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="309"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="308"/>
<source>do_not_disturb_accessible_name</source>
<extracomment>&quot;Do not disturb&quot;</extracomment>
<translation>Nicht stören</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="327"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="470"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="326"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="469"/>
<source>contact_presence_status_disable_do_not_disturb</source>
<extracomment>&quot;Désactiver ne pas déranger&quot;</extracomment>
<translation>Nicht stören deaktivieren</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="381"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="380"/>
<source>information_popup_error_title</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="383"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="382"/>
<source>no_voicemail_uri_error_message</source>
<extracomment>&quot;L&apos;URI de messagerie vocale n&apos;est pas définie.&quot;</extracomment>
<translation>Die Voicemail-URI ist nicht definiert.</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="396"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="395"/>
<source>account_list_accessible_name</source>
<extracomment>&quot;Account list&quot;</extracomment>
<translation>Kontoliste</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="434"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="433"/>
<source>application_options_accessible_name</source>
<extracomment>&quot;Application options&quot;</extracomment>
<translation>App-Einstellungen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="459"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="458"/>
<source>drawer_menu_manage_account</source>
<extracomment>Mon compte</extracomment>
<translation>Mein Konto</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="472"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="471"/>
<source>contact_presence_status_enable_do_not_disturb</source>
<extracomment>&quot;Activer ne pas déranger&quot;</extracomment>
<translation>Nicht stören aktivieren</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="487"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="486"/>
<source>settings_title</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="503"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="502"/>
<source>recordings_title</source>
<extracomment>&quot;Enregistrements&quot;</extracomment>
<translation>Aufnahmen</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="514"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="513"/>
<source>help_title</source>
<extracomment>&quot;Aide&quot;</extracomment>
<translation>Hilfe</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="529"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="528"/>
<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="534"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="533"/>
<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="557"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="556"/>
<source>drawer_menu_add_account</source>
<extracomment>&quot;Ajouter un compte&quot;</extracomment>
<translation>Konto hinzufügen</translation>
@ -4546,42 +4546,54 @@ Ablauf: %1</translation>
<translation>Ihr Gesprächspartner wurde an den ausgewählten Kontakt weitergeleitet</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="128"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="132"/>
<source>information_popup_success_title</source>
<translation>Gespeichert</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="130"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="134"/>
<source>information_popup_changes_saved</source>
<extracomment>&quot;Les changements ont é sauvegardés&quot;</extracomment>
<translation>Änderungen wurden gespeichert</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="215"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="207"/>
<source>oidc_connection_waiting_message</source>
<extracomment>&quot;Trying to connect to single sign on on web page ...&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="220"/>
<source>cancel</source>
<extracomment>Cancel</extracomment>
<translation type="unfinished">Abbrechen</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="257"/>
<source>captcha_validation_loading_message</source>
<extracomment>&quot;Veuillez valider le captcha sur la page web&quot;</extracomment>
<translation>Bitte das Captcha auf der Webseite bestätigen</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="223"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="265"/>
<source>assistant_register_error_title</source>
<extracomment>&quot;Erreur lors de la création&quot;</extracomment>
<translation>Fehler bei der Erstellung</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="243"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="285"/>
<source>assistant_register_success_title</source>
<extracomment>&quot;Compte créé&quot;</extracomment>
<translation>Konto erstellt</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="245"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="287"/>
<source>assistant_register_success_message</source>
<extracomment>&quot;Le compte a é créé. Vous pouvez maintenant vous connecter&quot;</extracomment>
<translation>Das Konto wurde erstellt. Sie können sich jetzt anmelden.</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="250"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="292"/>
<source>assistant_register_error_code</source>
<extracomment>&quot;Erreur dans le code de validation&quot;</extracomment>
<translation>Fehler im Bestätigungscode</translation>
@ -5093,108 +5105,109 @@ Ablauf: %1</translation>
<translation>OAuthHttpServerReplyHandler ist nicht aktiv</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="106"/>
<location filename="../../model/auth/OIDCModel.cpp" line="107"/>
<location filename="../../model/auth/OIDCModel.cpp" line="273"/>
<source>oidc_authentication_timeout_message</source>
<extracomment>Timeout: Not authenticated</extracomment>
<translation>Zeitüberschreitung: Nicht authentifiziert</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="125"/>
<location filename="../../model/auth/OIDCModel.cpp" line="126"/>
<source>oidc_authentication_granted_message</source>
<extracomment>Authentication granted</extracomment>
<translation>Authentifizierung erfolgreich</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="132"/>
<location filename="../../model/auth/OIDCModel.cpp" line="133"/>
<source>oidc_authentication_not_authenticated_message</source>
<extracomment>Not authenticated</extracomment>
<translation>Nicht authentifiziert</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="138"/>
<location filename="../../model/auth/OIDCModel.cpp" line="139"/>
<source>oidc_authentication_refresh_message</source>
<extracomment>Refreshing token</extracomment>
<translation>Token wird aktualisiert</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="143"/>
<location filename="../../model/auth/OIDCModel.cpp" line="144"/>
<source>oidc_authentication_temporary_credentials_message</source>
<extracomment>Temporary credentials received</extracomment>
<translation>Temporäre Anmeldedaten erhalten</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="161"/>
<location filename="../../model/auth/OIDCModel.cpp" line="162"/>
<source>oidc_authentication_network_error</source>
<extracomment>Network error</extracomment>
<translation>Netzwerkfehler</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="165"/>
<location filename="../../model/auth/OIDCModel.cpp" line="166"/>
<source>oidc_authentication_server_error</source>
<extracomment>Server error</extracomment>
<translation>Serverfehler</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="169"/>
<location filename="../../model/auth/OIDCModel.cpp" line="170"/>
<source>oidc_authentication_token_not_found_error</source>
<extracomment>OAuth token not found</extracomment>
<translation>OAuth-Token nicht gefunden</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="173"/>
<location filename="../../model/auth/OIDCModel.cpp" line="174"/>
<source>oidc_authentication_token_secret_not_found_error</source>
<extracomment>OAuth token secret not found</extracomment>
<translation>OAuth-Token-Geheimnis nicht gefunden</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="177"/>
<location filename="../../model/auth/OIDCModel.cpp" line="178"/>
<source>oidc_authentication_callback_not_verified_error</source>
<extracomment>OAuth callback not verified</extracomment>
<translation>OAuth-Callback nicht verifiziert</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="188"/>
<location filename="../../model/auth/OIDCModel.cpp" line="190"/>
<source>oidc_authentication_request_auth_message</source>
<extracomment>Requesting authorization from browser</extracomment>
<translation>Autorisierung über den Browser anfordern</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="219"/>
<location filename="../../model/auth/OIDCModel.cpp" line="222"/>
<source>oidc_authentication_no_token_found_error</source>
<translation>Kein Token gefunden</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="232"/>
<location filename="../../model/auth/OIDCModel.cpp" line="235"/>
<source>oidc_authentication_request_token_message</source>
<extracomment>Requesting access token</extracomment>
<translation>Zugriffstoken wird angefordert</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="237"/>
<location filename="../../model/auth/OIDCModel.cpp" line="240"/>
<source>oidc_authentication_refresh_token_message</source>
<extracomment>Refreshing access token</extracomment>
<translation>Zugriffstoken wird aktualisiert</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="242"/>
<location filename="../../model/auth/OIDCModel.cpp" line="245"/>
<source>oidc_authentication_request_authorization_message</source>
<extracomment>Requesting authorization</extracomment>
<translation>Autorisierung wird angefordert</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="247"/>
<location filename="../../model/auth/OIDCModel.cpp" line="250"/>
<source>oidc_authentication_request_temporary_credentials_message</source>
<extracomment>Requesting temporary credentials</extracomment>
<translation>Temporäre Anmeldedaten werden angefordert</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="274"/>
<location filename="../../model/auth/OIDCModel.cpp" line="300"/>
<source>oidc_authentication_no_auth_found_in_config_error</source>
<extracomment>No authorization endpoint found in OpenID configuration</extracomment>
<translation>Kein Autorisierungs-Endpunkt in der OpenID-Konfiguration gefunden</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="289"/>
<location filename="../../model/auth/OIDCModel.cpp" line="315"/>
<source>oidc_authentication_no_token_found_in_config_error</source>
<extracomment>No token endpoint found in OpenID configuration</extracomment>
<translation>Kein Token-Endpunkt in der OpenID-Konfiguration gefunden</translation>
@ -6321,32 +6334,32 @@ Um sie in einem kommerziellen Projekt zu aktivieren, kontaktieren Sie uns bitte.
<context>
<name>WaitingRoom</name>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="99"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="98"/>
<source>meeting_waiting_room_title</source>
<extracomment>Participer à :</extracomment>
<translation>Beitreten :</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="121"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="120"/>
<source>meeting_waiting_room_join</source>
<extracomment>&quot;Rejoindre&quot;</extracomment>
<translation>Beitreten</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="132"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="175"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="131"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="174"/>
<source>cancel</source>
<extracomment>Cancel</extracomment>
<translation>Abbrechen</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="146"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="145"/>
<source>meeting_waiting_room_joining_title</source>
<extracomment>&quot;Connexion à la réunion&quot;</extracomment>
<translation>Verbindung zur Besprechung</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="156"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="155"/>
<source>meeting_waiting_room_joining_subtitle</source>
<extracomment>&quot;Vous allez rejoindre la réunion dans quelques instants&quot;</extracomment>
<translation>Sie werden der Besprechung in wenigen Momenten beitreten...</translation>

View file

@ -95,7 +95,7 @@
<context>
<name>AccountListView</name>
<message>
<location filename="../../view/Page/Main/Account/AccountListView.qml" line="89"/>
<location filename="../../view/Page/Main/Account/AccountListView.qml" line="88"/>
<source>add_an_account</source>
<extracomment>Add an account</extracomment>
<translation>Add an account</translation>
@ -655,141 +655,141 @@
<context>
<name>App</name>
<message>
<location filename="../../core/App.cpp" line="365"/>
<location filename="../../core/App.cpp" line="368"/>
<source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment>
<translation>Do you want to download and apply remote provisioning from this address ?</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="400"/>
<location filename="../../core/App.cpp" line="452"/>
<location filename="../../core/App.cpp" line="715"/>
<location filename="../../core/App.cpp" line="425"/>
<location filename="../../core/App.cpp" line="498"/>
<location filename="../../core/App.cpp" line="785"/>
<source>info_popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Error</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="401"/>
<location filename="../../core/App.cpp" line="717"/>
<location filename="../../core/App.cpp" line="426"/>
<location filename="../../core/App.cpp" line="787"/>
<source>info_popup_configuration_failed_message</source>
<extracomment>Remote provisioning failed : %1</extracomment>
<translation>Remote provisioning failed : %1</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="455"/>
<location filename="../../core/App.cpp" line="501"/>
<source>info_popup_error_checking_update</source>
<extracomment>An error occured while trying to check update. Please try again later or contact support team.</extracomment>
<translation>An error occured while trying to check update. Please try again later or contact support team.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="462"/>
<location filename="../../core/App.cpp" line="508"/>
<source>info_popup_new_version_download_label</source>
<translation>Download it !</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="465"/>
<location filename="../../core/App.cpp" line="511"/>
<source>info_popup_new_version_available_title</source>
<extracomment>New version available !</extracomment>
<translation>New version available !</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="467"/>
<location filename="../../core/App.cpp" line="513"/>
<source>info_popup_new_version_available_message</source>
<extracomment>A new version of Linphone (%1) is available. %2</extracomment>
<translation>A new version of Linphone (%1) is available at %1</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="473"/>
<location filename="../../core/App.cpp" line="519"/>
<source>info_popup_version_up_to_date_title</source>
<translation>Up to date</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="475"/>
<location filename="../../core/App.cpp" line="521"/>
<source>info_popup_version_up_to_date_message</source>
<extracomment>Your version is up to date</extracomment>
<translation>Up to date Your version is up to date</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="711"/>
<location filename="../../core/App.cpp" line="781"/>
<source>configuration_error_detail</source>
<extracomment>not reachable</extracomment>
<translation>not reachable</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1002"/>
<location filename="../../core/App.cpp" line="1072"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>A free and open source SIP video-phone.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1004"/>
<location filename="../../core/App.cpp" line="1074"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Send an order to the application towards a command line</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1008"/>
<location filename="../../core/App.cpp" line="1078"/>
<source>command_line_option_show_help</source>
<translation>Show this help</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1013"/>
<location filename="../../core/App.cpp" line="1083"/>
<source>command_line_option_show_app_version</source>
<translation>Show app version</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1021"/>
<location filename="../../core/App.cpp" line="1091"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1023"/>
<location filename="../../core/App.cpp" line="1093"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, path or file</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1028"/>
<location filename="../../core/App.cpp" line="1098"/>
<source>command_line_option_minimized</source>
<translation>Minimize</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1031"/>
<location filename="../../core/App.cpp" line="1101"/>
<source>command_line_option_log_to_stdout</source>
<translation>Log to stdout some debug information while running</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1034"/>
<location filename="../../core/App.cpp" line="1104"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Print only logs from the application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1490"/>
<location filename="../../core/App.cpp" line="1560"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Hide</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1490"/>
<location filename="../../core/App.cpp" line="1560"/>
<source>show_action</source>
<translation>Show</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1505"/>
<location filename="../../core/App.cpp" line="1575"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quit</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1523"/>
<location filename="../../core/App.cpp" line="1593"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Check for update</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1646"/>
<location filename="../../core/App.cpp" line="1716"/>
<source>mark_all_read_action</source>
<translation>Marquer tout comme lu</translation>
</message>
@ -814,19 +814,19 @@
<translation>Password</translation>
</message>
<message>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="86"/>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="87"/>
<source>cancel</source>
<extracomment>&quot;Annuler</extracomment>
<translation>Cancel</translation>
</message>
<message>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="96"/>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="97"/>
<source>assistant_account_login</source>
<extracomment>Connexion</extracomment>
<translation>Connection</translation>
</message>
<message>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="104"/>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="105"/>
<source>assistant_account_login_missing_password</source>
<extracomment>Veuillez saisir un mot de passe</extracomment>
<translation>Please enter a password</translation>
@ -1007,7 +1007,7 @@
<context>
<name>CallHistoryListView</name>
<message>
<location filename="../../view/Control/Display/Call/CallHistoryListView.qml" line="204"/>
<location filename="../../view/Control/Display/Call/CallHistoryListView.qml" line="198"/>
<source>call_name_accessible_button</source>
<extracomment>Call %1</extracomment>
<translation>Call %1</translation>
@ -1205,12 +1205,12 @@
<context>
<name>CallPage</name>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="246"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="245"/>
<source>call_forward_to_address_info</source>
<translation>Forward calls to: </translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="246"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="245"/>
<source>call_forward_to_address_info_voicemail</source>
<translation>Voicemail</translation>
</message>
@ -1227,170 +1227,170 @@
<translation>Empty call history</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="86"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="85"/>
<source>history_dialog_delete_all_call_logs_title</source>
<extracomment>Supprimer l&apos;historique d&apos;appels ?</extracomment>
<translation>Delete call history ?</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="88"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="87"/>
<source>history_dialog_delete_all_call_logs_message</source>
<extracomment>&quot;L&apos;ensemble de votre historique d&apos;appels sera définitivement supprimé.&quot;</extracomment>
<translation>Call history will be permanently deleted.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="94"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="93"/>
<source>history_dialog_delete_call_logs_title</source>
<extracomment>Supprimer l&apos;historique d&apos;appels ?</extracomment>
<translation>Delete call history ?</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="96"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="95"/>
<source>history_dialog_delete_call_logs_message</source>
<extracomment>&quot;L&apos;ensemble de votre historique d&apos;appels avec ce correspondant sera définitivement supprimé.&quot;</extracomment>
<translation>Call history with this user will be permanently deleted.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="151"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="150"/>
<source>call_history_call_list_title</source>
<extracomment>&quot;Appels&quot;</extracomment>
<translation>Calls</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="459"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="458"/>
<source>call_history_options_accessible_name</source>
<translation>Call history options</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="171"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="551"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="170"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="550"/>
<source>menu_delete_history</source>
<extracomment>&quot;Supprimer l&apos;historique&quot;</extracomment>
<translation>Delete history</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="165"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="164"/>
<source>call_history_list_options_accessible_name</source>
<extracomment>Call history options</extracomment>
<translation>Call history options</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="199"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="198"/>
<source>create_new_call_accessible_name</source>
<extracomment>Create new call</extracomment>
<translation>Create new call</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="212"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="211"/>
<source>call_search_in_history</source>
<extracomment>&quot;Rechercher un appel&quot;</extracomment>
<translation>Find call</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="275"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="274"/>
<source>list_filter_no_result_found</source>
<extracomment>&quot;Aucun résultat&quot;</extracomment>
<translation>No result found</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="277"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="276"/>
<source>history_list_empty_history</source>
<extracomment>&quot;Aucun appel dans votre historique&quot;</extracomment>
<translation>No call in history</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="354"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="353"/>
<source>return_to_call_history_accessible_name</source>
<extracomment>Return to call history</extracomment>
<translation>Return to call history</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="365"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="364"/>
<source>call_action_start_new_call</source>
<extracomment>&quot;Nouvel appel&quot;</extracomment>
<translation>New call</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="406"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="405"/>
<source>call_start_group_call_title</source>
<extracomment>&quot;Appel de groupe&quot;</extracomment>
<translation>Group call</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="408"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="407"/>
<source>call_action_start_group_call</source>
<extracomment>&quot;Lancer&quot;</extracomment>
<translation>Start</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="418"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="422"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="520"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="417"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="421"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="519"/>
<source>information_popup_error_title</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="420"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="419"/>
<source>group_call_error_must_have_name</source>
<extracomment>&quot;Un nom doit être donné à l&apos;appel de groupe</extracomment>
<translation>A name must be provided for the call</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="424"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="423"/>
<source>group_call_error_not_connected</source>
<extracomment>&quot;Vous n&apos;etes pas connecté&quot;</extracomment>
<translation>You are not connected</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="478"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="477"/>
<source>menu_see_existing_contact</source>
<extracomment>&quot;Show contact&quot;</extracomment>
<translation>Show contact</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="480"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="479"/>
<source>menu_add_address_to_contacts</source>
<extracomment>&quot;Add to contacts&quot;</extracomment>
<translation>Add to contacts</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="502"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="501"/>
<source>menu_copy_sip_address</source>
<extracomment>&quot;Copier l&apos;adresse SIP&quot;</extracomment>
<translation>Copy SIP address</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="514"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="513"/>
<source>sip_address_copied_to_clipboard_toast</source>
<extracomment>Adresse copiée</extracomment>
<translation>SIP address copied</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="516"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="515"/>
<source>sip_address_copied_to_clipboard_message</source>
<extracomment>L&apos;adresse a é copié dans le presse_papiers</extracomment>
<translation>The address has been copied to the clipboard</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="522"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="521"/>
<source>sip_address_copy_to_clipboard_error</source>
<extracomment>&quot;Erreur lors de la copie de l&apos;adresse&quot;</extracomment>
<translation>Error copying address</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="642"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="641"/>
<source>notification_missed_call_title</source>
<extracomment>&quot;Appel manqué&quot;</extracomment>
<translation>Missed call</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="645"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="644"/>
<source>call_outgoing</source>
<extracomment>&quot;Appel sortant&quot;</extracomment>
<translation>Outgoing call</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="647"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="646"/>
<source>call_audio_incoming</source>
<extracomment>&quot;Appel entrant&quot;</extracomment>
<translation>Incoming call</translation>
@ -2504,115 +2504,115 @@ Only your correspondent can decrypt them.</translation>
<translation>No conversation</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="46"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="45"/>
<source>info_popup_error_title</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="48"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="47"/>
<source>info_popup_chatroom_creation_failed</source>
<extracomment>Chat room creation failed !</extracomment>
<translation>Chat room creation failed !</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="42"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="41"/>
<source>loading_popup_chatroom_creation_pending_message</source>
<extracomment>Chat room is being created...</extracomment>
<translation>Chat room is being created...</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="97"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="96"/>
<source>chat_dialog_delete_chat_title</source>
<extracomment>Supprimer la conversation ?</extracomment>
<translation>Delete conversation ?</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="99"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="98"/>
<source>chat_dialog_delete_chat_message</source>
<extracomment>&quot;La conversation et tous ses messages seront supprimés.&quot;</extracomment>
<translation>This conversation and all its messages will be deleted.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="132"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="131"/>
<source>chat_list_title</source>
<extracomment>&quot;Conversations&quot;</extracomment>
<translation>Conversations</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="150"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="149"/>
<source>menu_mark_all_as_read</source>
<extracomment>&quot;mark all as read&quot;</extracomment>
<translation>Mark all as read</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="180"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="179"/>
<source>chat_search_in_history</source>
<extracomment>&quot;Rechercher une conversation&quot;</extracomment>
<translation>Search for a chat</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="203"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="202"/>
<source>list_filter_no_result_found</source>
<extracomment>&quot;Aucun résultat&quot;</extracomment>
<translation>No result</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="205"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="204"/>
<source>chat_list_empty_history</source>
<extracomment>&quot;Aucune conversation dans votre historique&quot;</extracomment>
<translation>No conversation in history</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="279"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="278"/>
<source>chat_action_start_new_chat</source>
<extracomment>&quot;New chat&quot;</extracomment>
<translation>New conversation</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="317"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="316"/>
<source>chat_start_group_chat_title</source>
<extracomment>&quot;Nouveau groupe&quot;</extracomment>
<translation>New group</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="319"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="318"/>
<source>chat_action_start_group_chat</source>
<extracomment>&quot;Créer&quot;</extracomment>
<translation>Create</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="335"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="358"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="363"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="334"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="357"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="362"/>
<source>information_popup_error_title</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="337"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="336"/>
<source>information_popup_chat_creation_failed_message</source>
<extracomment>&quot;La création a échoué&quot;</extracomment>
<translation>Creation failed</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="355"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="354"/>
<source>group_chat_error_must_have_name</source>
<extracomment>&quot;Un nom doit être donné au groupe</extracomment>
<translation>A name must be set for the group</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="360"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="359"/>
<source>group_chat_error_no_participant</source>
<extracomment>&quot;Please select at least one participant</extracomment>
<translation>Please select at least one participant</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="365"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="364"/>
<source>group_call_error_not_connected</source>
<extracomment>&quot;Vous n&apos;etes pas connecté&quot;</extracomment>
<translation>You are not connected</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="371"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="370"/>
<source>chat_creation_in_progress</source>
<extracomment>Creation de la conversation en cours </extracomment>
<translation>Chat creation pending</translation>
@ -3476,12 +3476,12 @@ Only your correspondent can decrypt them.</translation>
<context>
<name>CoreModel</name>
<message>
<location filename="../../model/core/CoreModel.cpp" line="207"/>
<location filename="../../model/core/CoreModel.cpp" line="215"/>
<source>info_popup_error_title</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../model/core/CoreModel.cpp" line="209"/>
<location filename="../../model/core/CoreModel.cpp" line="217"/>
<source>fetching_config_failed_error_message</source>
<extracomment>&quot;Remote provisioning cannot be retrieved&quot;</extracomment>
<translation>Remote provisioning cannot be retrieved</translation>
@ -4268,144 +4268,144 @@ Expiration : %1</translation>
<context>
<name>MainLayout</name>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="143"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="142"/>
<source>bottom_navigation_calls_label</source>
<extracomment>&quot;Appels&quot;</extracomment>
<translation>Calls</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="145"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="144"/>
<source>open_calls_page_accessible_name</source>
<extracomment>&quot;Open calls page&quot;</extracomment>
<translation>Open calls pages</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="151"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="150"/>
<source>bottom_navigation_contacts_label</source>
<extracomment>&quot;Contacts&quot;</extracomment>
<translation>Contacts</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="153"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="152"/>
<source>open_contacts_page_accessible_name</source>
<extracomment>&quot;Open contacts page&quot;</extracomment>
<translation>Open contacts page</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="159"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="158"/>
<source>bottom_navigation_conversations_label</source>
<extracomment>&quot;Conversations&quot;</extracomment>
<translation>Conversations</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="161"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="160"/>
<source>open_conversations_page_accessible_name</source>
<extracomment>&quot;Open conversations page&quot;</extracomment>
<translation>Open conversations page</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="168"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="167"/>
<source>bottom_navigation_meetings_label</source>
<extracomment>&quot;Réunions&quot;</extracomment>
<translation>Meetings</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="170"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="169"/>
<source>open_contact_page_accessible_name</source>
<extracomment>&quot;Open meetings page&quot;</extracomment>
<translation>Open meetings page</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="221"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="220"/>
<source>searchbar_placeholder_text</source>
<extracomment>&quot;Rechercher un contact, appeler %1&quot;</extracomment>
<translation>Find contact, call %1</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="223"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="222"/>
<source>searchbar_placeholder_text_chat_feature_enabled</source>
<extracomment>&quot;ou envoyer un message &quot;</extracomment>
<translation>or send message </translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="309"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="308"/>
<source>do_not_disturb_accessible_name</source>
<extracomment>&quot;Do not disturb&quot;</extracomment>
<translation>Do not disturb</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="327"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="470"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="326"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="469"/>
<source>contact_presence_status_disable_do_not_disturb</source>
<extracomment>&quot;Désactiver ne pas déranger&quot;</extracomment>
<translation>Disable do not disturb</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="381"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="380"/>
<source>information_popup_error_title</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="383"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="382"/>
<source>no_voicemail_uri_error_message</source>
<extracomment>&quot;L&apos;URI de messagerie vocale n&apos;est pas définie.&quot;</extracomment>
<translation>The voicemail URI is not defined.</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="396"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="395"/>
<source>account_list_accessible_name</source>
<extracomment>&quot;Account list&quot;</extracomment>
<translation>account list</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="434"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="433"/>
<source>application_options_accessible_name</source>
<extracomment>&quot;Application options&quot;</extracomment>
<translation>Application options</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="459"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="458"/>
<source>drawer_menu_manage_account</source>
<extracomment>Mon compte</extracomment>
<translation>My account</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="472"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="471"/>
<source>contact_presence_status_enable_do_not_disturb</source>
<extracomment>&quot;Activer ne pas déranger&quot;</extracomment>
<translation>Enable do not disturb</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="487"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="486"/>
<source>settings_title</source>
<translation>Settings</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="503"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="502"/>
<source>recordings_title</source>
<extracomment>&quot;Enregistrements&quot;</extracomment>
<translation>Records</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="514"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="513"/>
<source>help_title</source>
<extracomment>&quot;Aide&quot;</extracomment>
<translation>Help</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="529"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="528"/>
<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="534"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="533"/>
<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="557"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="556"/>
<source>drawer_menu_add_account</source>
<extracomment>&quot;Ajouter un compte&quot;</extracomment>
<translation>Add an account</translation>
@ -4444,42 +4444,54 @@ Expiration : %1</translation>
<translation>Your correspondent has been transferred to the selected contact</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="128"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="132"/>
<source>information_popup_success_title</source>
<translation>Saved</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="130"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="134"/>
<source>information_popup_changes_saved</source>
<extracomment>&quot;Les changements ont é sauvegardés&quot;</extracomment>
<translation>Changes have been saved</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="215"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="207"/>
<source>oidc_connection_waiting_message</source>
<extracomment>&quot;Trying to connect to single sign on on web page ...&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="220"/>
<source>cancel</source>
<extracomment>Cancel</extracomment>
<translation type="unfinished">Cancel</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="257"/>
<source>captcha_validation_loading_message</source>
<extracomment>&quot;Veuillez valider le captcha sur la page web&quot;</extracomment>
<translation>Please validate the captcha on the web page</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="223"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="265"/>
<source>assistant_register_error_title</source>
<extracomment>&quot;Erreur lors de la création&quot;</extracomment>
<translation>Error while creating</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="243"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="285"/>
<source>assistant_register_success_title</source>
<extracomment>&quot;Compte créé&quot;</extracomment>
<translation>Account created</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="245"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="287"/>
<source>assistant_register_success_message</source>
<extracomment>&quot;Le compte a é créé. Vous pouvez maintenant vous connecter&quot;</extracomment>
<translation>The account has been created. You can now log in.</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="250"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="292"/>
<source>assistant_register_error_code</source>
<extracomment>&quot;Erreur dans le code de validation&quot;</extracomment>
<translation>Error in validation code</translation>
@ -4982,108 +4994,109 @@ Expiration : %1</translation>
<translation>OAuthHttpServerReplyHandler is not listening</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="106"/>
<location filename="../../model/auth/OIDCModel.cpp" line="107"/>
<location filename="../../model/auth/OIDCModel.cpp" line="273"/>
<source>oidc_authentication_timeout_message</source>
<extracomment>Timeout: Not authenticated</extracomment>
<translation>Timeout: Not authenticated</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="125"/>
<location filename="../../model/auth/OIDCModel.cpp" line="126"/>
<source>oidc_authentication_granted_message</source>
<extracomment>Authentication granted</extracomment>
<translation>Authentication granted</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="132"/>
<location filename="../../model/auth/OIDCModel.cpp" line="133"/>
<source>oidc_authentication_not_authenticated_message</source>
<extracomment>Not authenticated</extracomment>
<translation>Not authenticated</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="138"/>
<location filename="../../model/auth/OIDCModel.cpp" line="139"/>
<source>oidc_authentication_refresh_message</source>
<extracomment>Refreshing token</extracomment>
<translation>Refreshing token</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="143"/>
<location filename="../../model/auth/OIDCModel.cpp" line="144"/>
<source>oidc_authentication_temporary_credentials_message</source>
<extracomment>Temporary credentials received</extracomment>
<translation>Temporary credentials received</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="161"/>
<location filename="../../model/auth/OIDCModel.cpp" line="162"/>
<source>oidc_authentication_network_error</source>
<extracomment>Network error</extracomment>
<translation>Network error</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="165"/>
<location filename="../../model/auth/OIDCModel.cpp" line="166"/>
<source>oidc_authentication_server_error</source>
<extracomment>Server error</extracomment>
<translation>Server error</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="169"/>
<location filename="../../model/auth/OIDCModel.cpp" line="170"/>
<source>oidc_authentication_token_not_found_error</source>
<extracomment>OAuth token not found</extracomment>
<translation>OAuth token not found</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="173"/>
<location filename="../../model/auth/OIDCModel.cpp" line="174"/>
<source>oidc_authentication_token_secret_not_found_error</source>
<extracomment>OAuth token secret not found</extracomment>
<translation>OAuth token secret not found</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="177"/>
<location filename="../../model/auth/OIDCModel.cpp" line="178"/>
<source>oidc_authentication_callback_not_verified_error</source>
<extracomment>OAuth callback not verified</extracomment>
<translation>OAuth callback not verified</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="188"/>
<location filename="../../model/auth/OIDCModel.cpp" line="190"/>
<source>oidc_authentication_request_auth_message</source>
<extracomment>Requesting authorization from browser</extracomment>
<translation>Requesting authorization from browser</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="219"/>
<location filename="../../model/auth/OIDCModel.cpp" line="222"/>
<source>oidc_authentication_no_token_found_error</source>
<translation>No token found</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="232"/>
<location filename="../../model/auth/OIDCModel.cpp" line="235"/>
<source>oidc_authentication_request_token_message</source>
<extracomment>Requesting access token</extracomment>
<translation>Requesting access token</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="237"/>
<location filename="../../model/auth/OIDCModel.cpp" line="240"/>
<source>oidc_authentication_refresh_token_message</source>
<extracomment>Refreshing access token</extracomment>
<translation>Refreshing access token</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="242"/>
<location filename="../../model/auth/OIDCModel.cpp" line="245"/>
<source>oidc_authentication_request_authorization_message</source>
<extracomment>Requesting authorization</extracomment>
<translation>Requesting authorization</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="247"/>
<location filename="../../model/auth/OIDCModel.cpp" line="250"/>
<source>oidc_authentication_request_temporary_credentials_message</source>
<extracomment>Requesting temporary credentials</extracomment>
<translation>Requesting temporary credentials</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="274"/>
<location filename="../../model/auth/OIDCModel.cpp" line="300"/>
<source>oidc_authentication_no_auth_found_in_config_error</source>
<extracomment>No authorization endpoint found in OpenID configuration</extracomment>
<translation>No authorization endpoint found in OpenID configuration</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="289"/>
<location filename="../../model/auth/OIDCModel.cpp" line="315"/>
<source>oidc_authentication_no_token_found_in_config_error</source>
<extracomment>No token endpoint found in OpenID configuration</extracomment>
<translation>No token endpoint found in OpenID configuration</translation>
@ -6186,32 +6199,32 @@ To enable them in a commercial project, please contact us.</translation>
<context>
<name>WaitingRoom</name>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="99"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="98"/>
<source>meeting_waiting_room_title</source>
<extracomment>Participer à :</extracomment>
<translation>Join :</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="121"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="120"/>
<source>meeting_waiting_room_join</source>
<extracomment>&quot;Rejoindre&quot;</extracomment>
<translation>Join</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="132"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="175"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="131"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="174"/>
<source>cancel</source>
<extracomment>Cancel</extracomment>
<translation>Cancel</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="146"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="145"/>
<source>meeting_waiting_room_joining_title</source>
<extracomment>&quot;Connexion à la réunion&quot;</extracomment>
<translation>Connection to meeting</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="156"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="155"/>
<source>meeting_waiting_room_joining_subtitle</source>
<extracomment>&quot;Vous allez rejoindre la réunion dans quelques instants&quot;</extracomment>
<translation>You will be joining the meeting in a few moments...</translation>

View file

@ -95,7 +95,7 @@
<context>
<name>AccountListView</name>
<message>
<location filename="../../view/Page/Main/Account/AccountListView.qml" line="89"/>
<location filename="../../view/Page/Main/Account/AccountListView.qml" line="88"/>
<source>add_an_account</source>
<extracomment>Add an account</extracomment>
<translation>Ajouter un compte</translation>
@ -650,141 +650,141 @@
<context>
<name>App</name>
<message>
<location filename="../../core/App.cpp" line="365"/>
<location filename="../../core/App.cpp" line="368"/>
<source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment>
<translation>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="400"/>
<location filename="../../core/App.cpp" line="452"/>
<location filename="../../core/App.cpp" line="715"/>
<location filename="../../core/App.cpp" line="425"/>
<location filename="../../core/App.cpp" line="498"/>
<location filename="../../core/App.cpp" line="785"/>
<source>info_popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="401"/>
<location filename="../../core/App.cpp" line="717"/>
<location filename="../../core/App.cpp" line="426"/>
<location filename="../../core/App.cpp" line="787"/>
<source>info_popup_configuration_failed_message</source>
<extracomment>Remote provisioning failed : %1</extracomment>
<translation>La configuration distante a échoué : %1</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="455"/>
<location filename="../../core/App.cpp" line="501"/>
<source>info_popup_error_checking_update</source>
<extracomment>An error occured while trying to check update. Please try again later or contact support team.</extracomment>
<translation>Une erreur est survenue lors de la recherche de mise à jour. Merci de réessayer plus tard ou de contacter l&apos;équipe de support.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="462"/>
<location filename="../../core/App.cpp" line="508"/>
<source>info_popup_new_version_download_label</source>
<translation>Téléchargez-&#x202f;!</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="465"/>
<location filename="../../core/App.cpp" line="511"/>
<source>info_popup_new_version_available_title</source>
<extracomment>New version available !</extracomment>
<translation>Nouvelle version disponible !</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="467"/>
<location filename="../../core/App.cpp" line="513"/>
<source>info_popup_new_version_available_message</source>
<extracomment>A new version of Linphone (%1) is available. %2</extracomment>
<translation>Une nouvelle version de Linphone (%1) est disponible. %2</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="473"/>
<location filename="../../core/App.cpp" line="519"/>
<source>info_popup_version_up_to_date_title</source>
<translation>À jour</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="475"/>
<location filename="../../core/App.cpp" line="521"/>
<source>info_popup_version_up_to_date_message</source>
<extracomment>Your version is up to date</extracomment>
<translation>Votre version est à jour</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="711"/>
<location filename="../../core/App.cpp" line="781"/>
<source>configuration_error_detail</source>
<extracomment>not reachable</extracomment>
<translation>indisponible</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1002"/>
<location filename="../../core/App.cpp" line="1072"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>A free and open source SIP video-phone.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1004"/>
<location filename="../../core/App.cpp" line="1074"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Send an order to the application towards a command line</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1008"/>
<location filename="../../core/App.cpp" line="1078"/>
<source>command_line_option_show_help</source>
<translation>Show this help</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1013"/>
<location filename="../../core/App.cpp" line="1083"/>
<source>command_line_option_show_app_version</source>
<translation>Afficher la version de l&apos;application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1021"/>
<location filename="../../core/App.cpp" line="1091"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1023"/>
<location filename="../../core/App.cpp" line="1093"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, path or file</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1028"/>
<location filename="../../core/App.cpp" line="1098"/>
<source>command_line_option_minimized</source>
<translation>Minimiser</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1031"/>
<location filename="../../core/App.cpp" line="1101"/>
<source>command_line_option_log_to_stdout</source>
<translation>Log to stdout some debug information while running</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1034"/>
<location filename="../../core/App.cpp" line="1104"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Print only logs from the application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1490"/>
<location filename="../../core/App.cpp" line="1560"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Cacher</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1490"/>
<location filename="../../core/App.cpp" line="1560"/>
<source>show_action</source>
<translation>Afficher</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1505"/>
<location filename="../../core/App.cpp" line="1575"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quitter</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1523"/>
<location filename="../../core/App.cpp" line="1593"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Rechercher une mise à jour</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1646"/>
<location filename="../../core/App.cpp" line="1716"/>
<source>mark_all_read_action</source>
<translation>Marquer tout comme lu</translation>
</message>
@ -809,19 +809,19 @@
<translation>Mot de passe</translation>
</message>
<message>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="86"/>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="87"/>
<source>cancel</source>
<extracomment>&quot;Annuler</extracomment>
<translation>Annuler</translation>
</message>
<message>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="96"/>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="97"/>
<source>assistant_account_login</source>
<extracomment>Connexion</extracomment>
<translation>Connexion</translation>
</message>
<message>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="104"/>
<location filename="../../view/Control/Popup/Dialog/AuthenticationDialog.qml" line="105"/>
<source>assistant_account_login_missing_password</source>
<extracomment>Veuillez saisir un mot de passe</extracomment>
<translation>Veuillez saisir un mot de passe</translation>
@ -982,7 +982,7 @@
<context>
<name>CallHistoryListView</name>
<message>
<location filename="../../view/Control/Display/Call/CallHistoryListView.qml" line="204"/>
<location filename="../../view/Control/Display/Call/CallHistoryListView.qml" line="198"/>
<source>call_name_accessible_button</source>
<extracomment>Call %1</extracomment>
<translation>Appeler %1</translation>
@ -1192,180 +1192,180 @@
<translation>Historique d&apos;appel vide</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="86"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="85"/>
<source>history_dialog_delete_all_call_logs_title</source>
<extracomment>Supprimer l&apos;historique d&apos;appels ?</extracomment>
<translation>Supprimer l&apos;historique d&apos;appels ?</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="88"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="87"/>
<source>history_dialog_delete_all_call_logs_message</source>
<extracomment>&quot;L&apos;ensemble de votre historique d&apos;appels sera définitivement supprimé.&quot;</extracomment>
<translation>L&apos;ensemble de votre historique d&apos;appels sera définitivement supprimé.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="94"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="93"/>
<source>history_dialog_delete_call_logs_title</source>
<extracomment>Supprimer l&apos;historique d&apos;appels ?</extracomment>
<translation>Supprimer l&apos;historique d&apos;appels ?</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="96"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="95"/>
<source>history_dialog_delete_call_logs_message</source>
<extracomment>&quot;L&apos;ensemble de votre historique d&apos;appels avec ce correspondant sera définitivement supprimé.&quot;</extracomment>
<translation>L&apos;ensemble de votre historique d&apos;appels avec ce correspondant sera définitivement supprimé.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="151"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="150"/>
<source>call_history_call_list_title</source>
<extracomment>&quot;Appels&quot;</extracomment>
<translation>Appels</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="459"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="458"/>
<source>call_history_options_accessible_name</source>
<translation>Options de l&apos;</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="171"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="551"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="170"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="550"/>
<source>menu_delete_history</source>
<extracomment>&quot;Supprimer l&apos;historique&quot;</extracomment>
<translation>Supprimer l&apos;historique</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="165"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="164"/>
<source>call_history_list_options_accessible_name</source>
<extracomment>Call history options</extracomment>
<translation>Options de la liste de l&apos;historique d&apos;appel</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="199"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="198"/>
<source>create_new_call_accessible_name</source>
<extracomment>Create new call</extracomment>
<translation>Créer un nouvel appel</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="212"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="211"/>
<source>call_search_in_history</source>
<extracomment>&quot;Rechercher un appel&quot;</extracomment>
<translation>Rechercher un appel</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="246"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="245"/>
<source>call_forward_to_address_info</source>
<translation>Transférer l&apos;appel à :</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="246"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="245"/>
<source>call_forward_to_address_info_voicemail</source>
<translation>Boîte vocale</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="275"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="274"/>
<source>list_filter_no_result_found</source>
<extracomment>&quot;Aucun résultat&quot;</extracomment>
<translation>Aucun résultat</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="277"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="276"/>
<source>history_list_empty_history</source>
<extracomment>&quot;Aucun appel dans votre historique&quot;</extracomment>
<translation>Aucun appel dans votre historique</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="354"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="353"/>
<source>return_to_call_history_accessible_name</source>
<extracomment>Return to call history</extracomment>
<translation>Retourner à l&apos;historique d&apos;appels</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="365"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="364"/>
<source>call_action_start_new_call</source>
<extracomment>&quot;Nouvel appel&quot;</extracomment>
<translation>Nouvel appel</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="406"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="405"/>
<source>call_start_group_call_title</source>
<extracomment>&quot;Appel de groupe&quot;</extracomment>
<translation>Appel de groupe</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="408"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="407"/>
<source>call_action_start_group_call</source>
<extracomment>&quot;Lancer&quot;</extracomment>
<translation>Lancer</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="418"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="422"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="520"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="417"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="421"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="519"/>
<source>information_popup_error_title</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="420"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="419"/>
<source>group_call_error_must_have_name</source>
<extracomment>&quot;Un nom doit être donné à l&apos;appel de groupe</extracomment>
<translation>Un nom doit être donné à l&apos;appel de groupe</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="424"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="423"/>
<source>group_call_error_not_connected</source>
<extracomment>&quot;Vous n&apos;etes pas connecté&quot;</extracomment>
<translation>Vous n&apos;etes pas connecté</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="478"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="477"/>
<source>menu_see_existing_contact</source>
<extracomment>&quot;Show contact&quot;</extracomment>
<translation>Voir le contact</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="480"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="479"/>
<source>menu_add_address_to_contacts</source>
<extracomment>&quot;Add to contacts&quot;</extracomment>
<translation>Ajouter aux contacts</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="502"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="501"/>
<source>menu_copy_sip_address</source>
<extracomment>&quot;Copier l&apos;adresse SIP&quot;</extracomment>
<translation>Copier l&apos;adresse SIP</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="514"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="513"/>
<source>sip_address_copied_to_clipboard_toast</source>
<extracomment>Adresse copiée</extracomment>
<translation>Adresse copiée</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="516"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="515"/>
<source>sip_address_copied_to_clipboard_message</source>
<extracomment>L&apos;adresse a é copié dans le presse_papiers</extracomment>
<translation>L&apos;adresse a é copié dans le presse-papiers</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="522"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="521"/>
<source>sip_address_copy_to_clipboard_error</source>
<extracomment>&quot;Erreur lors de la copie de l&apos;adresse&quot;</extracomment>
<translation>Erreur lors de la copie de l&apos;adresse</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="642"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="641"/>
<source>notification_missed_call_title</source>
<extracomment>&quot;Appel manqué&quot;</extracomment>
<translation>Appel manqué</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="645"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="644"/>
<source>call_outgoing</source>
<extracomment>&quot;Appel sortant&quot;</extracomment>
<translation>Appel sortant</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="647"/>
<location filename="../../view/Page/Main/Call/CallPage.qml" line="646"/>
<source>call_audio_incoming</source>
<extracomment>&quot;Appel entrant&quot;</extracomment>
<translation>Appel entrant</translation>
@ -2479,115 +2479,115 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<translation>Aucune conversation</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="46"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="45"/>
<source>info_popup_error_title</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="48"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="47"/>
<source>info_popup_chatroom_creation_failed</source>
<extracomment>Chat room creation failed !</extracomment>
<translation>La création de la conversation a échoué !</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="42"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="41"/>
<source>loading_popup_chatroom_creation_pending_message</source>
<extracomment>Chat room is being created...</extracomment>
<translation>Création de la conversation en cours...</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="97"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="96"/>
<source>chat_dialog_delete_chat_title</source>
<extracomment>Supprimer la conversation ?</extracomment>
<translation>Supprimer la conversation ?</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="99"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="98"/>
<source>chat_dialog_delete_chat_message</source>
<extracomment>&quot;La conversation et tous ses messages seront supprimés.&quot;</extracomment>
<translation>La conversation et tous ses messages seront supprimés.</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="132"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="131"/>
<source>chat_list_title</source>
<extracomment>&quot;Conversations&quot;</extracomment>
<translation>Conversations</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="150"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="149"/>
<source>menu_mark_all_as_read</source>
<extracomment>&quot;mark all as read&quot;</extracomment>
<translation>Tout marquer comme lu</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="180"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="179"/>
<source>chat_search_in_history</source>
<extracomment>&quot;Rechercher une conversation&quot;</extracomment>
<translation>Rechercher une conversation</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="203"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="202"/>
<source>list_filter_no_result_found</source>
<extracomment>&quot;Aucun résultat&quot;</extracomment>
<translation>Aucun résultat</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="205"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="204"/>
<source>chat_list_empty_history</source>
<extracomment>&quot;Aucune conversation dans votre historique&quot;</extracomment>
<translation>Aucune conversation dans votre historique</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="279"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="278"/>
<source>chat_action_start_new_chat</source>
<extracomment>&quot;New chat&quot;</extracomment>
<translation>Nouvelle conversation</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="317"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="316"/>
<source>chat_start_group_chat_title</source>
<extracomment>&quot;Nouveau groupe&quot;</extracomment>
<translation>Nouveau groupe</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="319"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="318"/>
<source>chat_action_start_group_chat</source>
<extracomment>&quot;Créer&quot;</extracomment>
<translation>Créer</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="335"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="358"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="363"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="334"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="357"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="362"/>
<source>information_popup_error_title</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="337"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="336"/>
<source>information_popup_chat_creation_failed_message</source>
<extracomment>&quot;La création a échoué&quot;</extracomment>
<translation>La création a échoué</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="355"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="354"/>
<source>group_chat_error_must_have_name</source>
<extracomment>&quot;Un nom doit être donné au groupe</extracomment>
<translation>Un nom doit être donné au groupe</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="360"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="359"/>
<source>group_chat_error_no_participant</source>
<extracomment>&quot;Please select at least one participant</extracomment>
<translation>Veuillez sélectionner au moins un participant</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="365"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="364"/>
<source>group_call_error_not_connected</source>
<extracomment>&quot;Vous n&apos;etes pas connecté&quot;</extracomment>
<translation>Vous n&apos;êtes pas connecté</translation>
</message>
<message>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="371"/>
<location filename="../../view/Page/Main/Chat/ChatPage.qml" line="370"/>
<source>chat_creation_in_progress</source>
<extracomment>Creation de la conversation en cours </extracomment>
<translation>Création de la conversation en cours</translation>
@ -3451,12 +3451,12 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<context>
<name>CoreModel</name>
<message>
<location filename="../../model/core/CoreModel.cpp" line="207"/>
<location filename="../../model/core/CoreModel.cpp" line="215"/>
<source>info_popup_error_title</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../model/core/CoreModel.cpp" line="209"/>
<location filename="../../model/core/CoreModel.cpp" line="217"/>
<source>fetching_config_failed_error_message</source>
<extracomment>&quot;Remote provisioning cannot be retrieved&quot;</extracomment>
<translation>La configuration distante n&apos;a pas pu être récupérée</translation>
@ -4243,144 +4243,144 @@ Expiration : %1</translation>
<context>
<name>MainLayout</name>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="143"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="142"/>
<source>bottom_navigation_calls_label</source>
<extracomment>&quot;Appels&quot;</extracomment>
<translation>Appels</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="145"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="144"/>
<source>open_calls_page_accessible_name</source>
<extracomment>&quot;Open calls page&quot;</extracomment>
<translation>Ouvrir la page des appels</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="151"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="150"/>
<source>bottom_navigation_contacts_label</source>
<extracomment>&quot;Contacts&quot;</extracomment>
<translation>Contacts</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="153"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="152"/>
<source>open_contacts_page_accessible_name</source>
<extracomment>&quot;Open contacts page&quot;</extracomment>
<translation>Ouvrir la page des contacts</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="159"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="158"/>
<source>bottom_navigation_conversations_label</source>
<extracomment>&quot;Conversations&quot;</extracomment>
<translation>Conversations</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="161"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="160"/>
<source>open_conversations_page_accessible_name</source>
<extracomment>&quot;Open conversations page&quot;</extracomment>
<translation>Ouvrir la page des conversations</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="168"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="167"/>
<source>bottom_navigation_meetings_label</source>
<extracomment>&quot;Réunions&quot;</extracomment>
<translation>Réunions</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="170"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="169"/>
<source>open_contact_page_accessible_name</source>
<extracomment>&quot;Open meetings page&quot;</extracomment>
<translation>Ouvrir la page des réunions</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="221"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="220"/>
<source>searchbar_placeholder_text</source>
<extracomment>&quot;Rechercher un contact, appeler %1&quot;</extracomment>
<translation>Rechercher un contact, appeler %1</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="223"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="222"/>
<source>searchbar_placeholder_text_chat_feature_enabled</source>
<extracomment>&quot;ou envoyer un message &quot;</extracomment>
<translation>ou envoyer un message </translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="309"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="308"/>
<source>do_not_disturb_accessible_name</source>
<extracomment>&quot;Do not disturb&quot;</extracomment>
<translation>Ne pas déranger</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="327"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="470"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="326"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="469"/>
<source>contact_presence_status_disable_do_not_disturb</source>
<extracomment>&quot;Désactiver ne pas déranger&quot;</extracomment>
<translation>Désactiver ne pas déranger</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="381"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="380"/>
<source>information_popup_error_title</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="383"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="382"/>
<source>no_voicemail_uri_error_message</source>
<extracomment>&quot;L&apos;URI de messagerie vocale n&apos;est pas définie.&quot;</extracomment>
<translation>L&apos;URI de messagerie vocale n&apos;est pas définie.</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="396"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="395"/>
<source>account_list_accessible_name</source>
<extracomment>&quot;Account list&quot;</extracomment>
<translation>liste des comptes</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="434"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="433"/>
<source>application_options_accessible_name</source>
<extracomment>&quot;Application options&quot;</extracomment>
<translation>Options de l&apos;application</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="459"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="458"/>
<source>drawer_menu_manage_account</source>
<extracomment>Mon compte</extracomment>
<translation>Mon compte</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="472"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="471"/>
<source>contact_presence_status_enable_do_not_disturb</source>
<extracomment>&quot;Activer ne pas déranger&quot;</extracomment>
<translation>Activer ne pas déranger</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="487"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="486"/>
<source>settings_title</source>
<translation>Paramètres</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="503"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="502"/>
<source>recordings_title</source>
<extracomment>&quot;Enregistrements&quot;</extracomment>
<translation>Enregistrements</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="514"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="513"/>
<source>help_title</source>
<extracomment>&quot;Aide&quot;</extracomment>
<translation>Aide</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="529"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="528"/>
<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="534"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="533"/>
<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="557"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="556"/>
<source>drawer_menu_add_account</source>
<extracomment>&quot;Ajouter un compte&quot;</extracomment>
<translation>Ajouter un compte</translation>
@ -4419,42 +4419,54 @@ Expiration : %1</translation>
<translation>Votre correspondant a é transféré au contact sélectionné</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="128"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="132"/>
<source>information_popup_success_title</source>
<translation>Enregistré</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="130"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="134"/>
<source>information_popup_changes_saved</source>
<extracomment>&quot;Les changements ont é sauvegardés&quot;</extracomment>
<translation>Les changements ont é sauvegardés</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="215"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="207"/>
<source>oidc_connection_waiting_message</source>
<extracomment>&quot;Trying to connect to single sign on on web page ...&quot;</extracomment>
<translation>Tentative de connexion distante ...</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="220"/>
<source>cancel</source>
<extracomment>Cancel</extracomment>
<translation>Annuler</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="257"/>
<source>captcha_validation_loading_message</source>
<extracomment>&quot;Veuillez valider le captcha sur la page web&quot;</extracomment>
<translation>Veuillez valider le captcha sur la page web</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="223"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="265"/>
<source>assistant_register_error_title</source>
<extracomment>&quot;Erreur lors de la création&quot;</extracomment>
<translation>Erreur lors de la création</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="243"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="285"/>
<source>assistant_register_success_title</source>
<extracomment>&quot;Compte créé&quot;</extracomment>
<translation>Compte créé</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="245"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="287"/>
<source>assistant_register_success_message</source>
<extracomment>&quot;Le compte a é créé. Vous pouvez maintenant vous connecter&quot;</extracomment>
<translation>Le compte a é créé. Vous pouvez maintenant vous connecter</translation>
</message>
<message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="250"/>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="292"/>
<source>assistant_register_error_code</source>
<extracomment>&quot;Erreur dans le code de validation&quot;</extracomment>
<translation>Erreur dans le code de validation</translation>
@ -4953,108 +4965,109 @@ Expiration : %1</translation>
<translation>OAuthHttpServerReplyHandler n&apos;est pas disponible</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="106"/>
<location filename="../../model/auth/OIDCModel.cpp" line="107"/>
<location filename="../../model/auth/OIDCModel.cpp" line="273"/>
<source>oidc_authentication_timeout_message</source>
<extracomment>Timeout: Not authenticated</extracomment>
<translation>Timeout : non authentifié</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="125"/>
<location filename="../../model/auth/OIDCModel.cpp" line="126"/>
<source>oidc_authentication_granted_message</source>
<extracomment>Authentication granted</extracomment>
<translation>Authentification accordée</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="132"/>
<location filename="../../model/auth/OIDCModel.cpp" line="133"/>
<source>oidc_authentication_not_authenticated_message</source>
<extracomment>Not authenticated</extracomment>
<translation>Non authentifié</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="138"/>
<location filename="../../model/auth/OIDCModel.cpp" line="139"/>
<source>oidc_authentication_refresh_message</source>
<extracomment>Refreshing token</extracomment>
<translation>Token en cours de rafraîchissement</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="143"/>
<location filename="../../model/auth/OIDCModel.cpp" line="144"/>
<source>oidc_authentication_temporary_credentials_message</source>
<extracomment>Temporary credentials received</extracomment>
<translation>Identifiants temporaires reçus</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="161"/>
<location filename="../../model/auth/OIDCModel.cpp" line="162"/>
<source>oidc_authentication_network_error</source>
<extracomment>Network error</extracomment>
<translation>Erreur réseau</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="165"/>
<location filename="../../model/auth/OIDCModel.cpp" line="166"/>
<source>oidc_authentication_server_error</source>
<extracomment>Server error</extracomment>
<translation>Erreur de serveur</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="169"/>
<location filename="../../model/auth/OIDCModel.cpp" line="170"/>
<source>oidc_authentication_token_not_found_error</source>
<extracomment>OAuth token not found</extracomment>
<translation>Token OAuth non trouvé</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="173"/>
<location filename="../../model/auth/OIDCModel.cpp" line="174"/>
<source>oidc_authentication_token_secret_not_found_error</source>
<extracomment>OAuth token secret not found</extracomment>
<translation>Token OAuth secret non trouvé</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="177"/>
<location filename="../../model/auth/OIDCModel.cpp" line="178"/>
<source>oidc_authentication_callback_not_verified_error</source>
<extracomment>OAuth callback not verified</extracomment>
<translation>Retour OAuth non vérifié</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="188"/>
<location filename="../../model/auth/OIDCModel.cpp" line="190"/>
<source>oidc_authentication_request_auth_message</source>
<extracomment>Requesting authorization from browser</extracomment>
<translation>En attente d&apos;autorisation du navigateur</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="219"/>
<location filename="../../model/auth/OIDCModel.cpp" line="222"/>
<source>oidc_authentication_no_token_found_error</source>
<translation>Token non trouvé</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="232"/>
<location filename="../../model/auth/OIDCModel.cpp" line="235"/>
<source>oidc_authentication_request_token_message</source>
<extracomment>Requesting access token</extracomment>
<translation>En attente du token d&apos;accès</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="237"/>
<location filename="../../model/auth/OIDCModel.cpp" line="240"/>
<source>oidc_authentication_refresh_token_message</source>
<extracomment>Refreshing access token</extracomment>
<translation>Token en cours de rafraîchissement</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="242"/>
<location filename="../../model/auth/OIDCModel.cpp" line="245"/>
<source>oidc_authentication_request_authorization_message</source>
<extracomment>Requesting authorization</extracomment>
<translation>Autorisation en cours</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="247"/>
<location filename="../../model/auth/OIDCModel.cpp" line="250"/>
<source>oidc_authentication_request_temporary_credentials_message</source>
<extracomment>Requesting temporary credentials</extracomment>
<translation>En attente d&apos;identifiants temporaires</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="274"/>
<location filename="../../model/auth/OIDCModel.cpp" line="300"/>
<source>oidc_authentication_no_auth_found_in_config_error</source>
<extracomment>No authorization endpoint found in OpenID configuration</extracomment>
<translation>Pas d&apos;autorisation trouvé dans la configuration OpenID</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="289"/>
<location filename="../../model/auth/OIDCModel.cpp" line="315"/>
<source>oidc_authentication_no_token_found_in_config_error</source>
<extracomment>No token endpoint found in OpenID configuration</extracomment>
<translation>Pas de token trouvé dans la configuration OpenID</translation>
@ -6157,32 +6170,32 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<context>
<name>WaitingRoom</name>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="99"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="98"/>
<source>meeting_waiting_room_title</source>
<extracomment>Participer à :</extracomment>
<translation>Participer à :</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="121"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="120"/>
<source>meeting_waiting_room_join</source>
<extracomment>&quot;Rejoindre&quot;</extracomment>
<translation>Rejoindre</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="132"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="175"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="131"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="174"/>
<source>cancel</source>
<extracomment>Cancel</extracomment>
<translation>Annuler</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="146"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="145"/>
<source>meeting_waiting_room_joining_title</source>
<extracomment>&quot;Connexion à la réunion&quot;</extracomment>
<translation>Connexion à la réunion</translation>
</message>
<message>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="156"/>
<location filename="../../view/Page/Main/Call/WaitingRoom.qml" line="155"/>
<source>meeting_waiting_room_joining_subtitle</source>
<extracomment>&quot;Vous allez rejoindre la réunion dans quelques instants&quot;</extracomment>
<translation>Vous allez rejoindre la réunion dans quelques instants</translation>

View file

@ -102,6 +102,7 @@ OIDCModel::OIDCModel(const std::shared_ptr<linphone::AuthInfo> &authInfo, QObjec
lWarning() << log().arg("Timeout reached for OpenID connection.");
dynamic_cast<OAuthHttpServerReplyHandler *>(mOidc.replyHandler())->close();
CoreModel::getInstance()->getCore()->abortAuthentication(mAuthInfo);
emit timeoutTimerStopped();
//: Timeout: Not authenticated
emit statusChanged(tr("oidc_authentication_timeout_message"));
emit finished();
@ -120,14 +121,14 @@ OIDCModel::OIDCModel(const std::shared_ptr<linphone::AuthInfo> &authInfo, QObjec
connect(&mOidc, &QOAuth2AuthorizationCodeFlow::statusChanged, [=](QAbstractOAuth::Status status) {
switch (status) {
case QAbstractOAuth::Status::Granted: {
mTimeout.stop();
stopTimeoutTimer();
//: Authentication granted
emit statusChanged(tr("oidc_authentication_granted_message"));
emit authenticated();
break;
}
case QAbstractOAuth::Status::NotAuthenticated: {
mTimeout.stop();
stopTimeoutTimer();
//: Not authenticated
emit statusChanged(tr("oidc_authentication_not_authenticated_message"));
emit finished();
@ -149,7 +150,7 @@ OIDCModel::OIDCModel(const std::shared_ptr<linphone::AuthInfo> &authInfo, QObjec
});
connect(&mOidc, &QOAuth2AuthorizationCodeFlow::requestFailed, [=](QAbstractOAuth::Error error) {
mTimeout.stop();
stopTimeoutTimer();
const QMetaObject metaObject = QAbstractOAuth::staticMetaObject;
int index = metaObject.indexOfEnumerator("Error");
@ -183,10 +184,12 @@ OIDCModel::OIDCModel(const std::shared_ptr<linphone::AuthInfo> &authInfo, QObjec
});
connect(&mOidc, &QOAuth2AuthorizationCodeFlow::authorizeWithBrowser, [this](const QUrl &url) {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
qDebug() << "Browser authentication url : " << url;
//: Requesting authorization from browser
emit statusChanged(tr("oidc_authentication_request_auth_message"));
mTimeout.start();
emit timeoutTimerStarted();
QDesktopServices::openUrl(url);
});
@ -261,6 +264,29 @@ OIDCModel::OIDCModel(const std::shared_ptr<linphone::AuthInfo> &authInfo, QObjec
connect(reply, &QNetworkReply::finished, this, &OIDCModel::openIdConfigReceived);
}
void OIDCModel::forceTimeout() {
lWarning() << log().arg("Froce timeout for OpenID connection.");
stopTimeoutTimer();
dynamic_cast<OAuthHttpServerReplyHandler *>(mOidc.replyHandler())->close();
CoreModel::getInstance()->getCore()->abortAuthentication(mAuthInfo);
//: Timeout: Not authenticated
emit statusChanged(tr("oidc_authentication_timeout_message"));
emit finished();
}
bool OIDCModel::isTimerRunning() const {
return mTimeout.isActive();
}
int OIDCModel::getRemainingTimeBeforeTimeOut() {
return mTimeout.remainingTime();
}
void OIDCModel::stopTimeoutTimer() {
mTimeout.stop();
emit timeoutTimerStopped();
}
void OIDCModel::openIdConfigReceived() {
auto reply = dynamic_cast<QNetworkReply *>(sender());
auto document = QJsonDocument::fromJson(reply->readAll());

View file

@ -36,12 +36,18 @@ public:
void openIdConfigReceived();
void setBearers();
void forceTimeout();
bool isTimerRunning() const;
int getRemainingTimeBeforeTimeOut();
void stopTimeoutTimer();
signals:
void authenticated();
void requestFailed(const QString &error);
void statusChanged(const QString &status);
void finished();
void timeoutTimerStarted();
void timeoutTimerStopped();
private:
/**

View file

@ -145,6 +145,14 @@ void CoreModel::setConfigPath(QString path) {
}
}
void CoreModel::refreshOidcRemainingTime() {
for (auto oidc : mOpenIdConnections) {
if (oidc && oidc->isTimerRunning()) {
emit oidcRemainingTimeBeforeTimeoutChanged(oidc->getRemainingTimeBeforeTimeOut());
}
}
}
//-------------------------------------------------------------------------------
// PATHS
//-------------------------------------------------------------------------------
@ -402,7 +410,19 @@ void CoreModel::onAuthenticationRequested(const std::shared_ptr<linphone::Core>
<< realm << " at " << serverUrl;
QString key = username + '@' + realm + ' ' + serverUrl;
if (mOpenIdConnections.contains(key)) mOpenIdConnections[key]->deleteLater();
mOpenIdConnections[key] = new OIDCModel(authInfo, this);
auto oidcModel = new OIDCModel(authInfo, this);
mOpenIdConnections[key] = oidcModel;
connect(oidcModel, &OIDCModel::timeoutTimerStarted, this, [this] {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
emit timeoutTimerStarted();
qDebug() << "start refresh timer";
});
connect(oidcModel, &OIDCModel::timeoutTimerStopped, this, [this] { emit timeoutTimerStopped(); });
connect(this, &CoreModel::forceOidcTimeout, oidcModel, [this, oidcModel] {
if (oidcModel->isTimerRunning()) {
oidcModel->forceTimeout();
}
});
}
}
emit authenticationRequested(core, authInfo, method);

View file

@ -61,6 +61,8 @@ public:
void start();
void setConfigPath(QString path);
void refreshOidcRemainingTime();
QString getFetchConfig(QString filePath, bool *error);
void useFetchConfig(QString filePath);
bool setFetchConfig(QString filePath);
@ -93,6 +95,10 @@ signals:
void enabledLdapAddressBookSaved();
void magicSearchResultReceived(QString filter);
void messageReadInChatRoom(std::shared_ptr<linphone::ChatRoom> chatRoom);
void oidcRemainingTimeBeforeTimeoutChanged(int remainingTime);
void forceOidcTimeout();
void timeoutTimerStarted();
void timeoutTimerStopped();
private:
QString mConfigPath;

View file

@ -72,6 +72,7 @@ Dialog {
contentItem: TextField {
id: passwordEdit
hidden: true
width: parent.width
isError: passwordItem.errorTextVisible
KeyNavigation.down: cancelButton
}

View file

@ -87,7 +87,6 @@ Item {
AccountProxy {
id: accountProxy
sourceModel: AppCpp.accounts
onDefaultAccountChanged: if (tabbar.currentIndex === 0 && defaultAccount)
defaultAccount.core?.lResetMissedCalls()
}

View file

@ -67,7 +67,6 @@ ColumnLayout{
Repeater{
model: AccountProxy {
id: accountProxy
sourceModel: AppCpp.accounts
}
delegate: contactDelegate
}

View file

@ -28,7 +28,6 @@ AbstractMainPage {
property ConferenceInfoGui confInfoGui
property AccountProxy accounts: AccountProxy {
id: accountProxy
sourceModel: AppCpp.accounts
}
property AccountGui account: accountProxy.defaultAccount
property var state: account && account.core?.registrationState || 0

View file

@ -35,7 +35,6 @@ RowLayout {
mutedStatus: microButton.checked
AccountProxy {
id: accounts
sourceModel: AppCpp.accounts
}
account: accounts.defaultAccount
}

View file

@ -18,7 +18,6 @@ AbstractMainPage {
property AccountProxy accounts: AccountProxy {
id: accountProxy
sourceModel: AppCpp.accounts
}
property AccountGui account: accountProxy.defaultAccount
property var state: account && account.core?.registrationState || 0

View file

@ -91,6 +91,10 @@ AbstractWindow {
mainWindowStackView.replace(loginPage)
}
function openSSOPage() {
mainWindowStackView.replace(ssoPage)
}
function scheduleMeeting(subject, addresses) {
openMainPage()
mainWindowStackView.currentItem.scheduleMeeting(subject, addresses)
@ -145,7 +149,6 @@ AbstractWindow {
id: accountProxyLoader
active: AppCpp.coreStarted
sourceComponent: AccountProxy {
sourceModel: AppCpp.accounts
onInitializedChanged: if (isInitialized) {
mainWindow.accountProxy = this
mainWindow.initStackViewItem()
@ -181,6 +184,45 @@ AbstractWindow {
}
}
}
Component {
id: ssoPage
Rectangle {
color: DefaultStyle.grey_0
Image {
id: logoImage
anchors.centerIn: parent
source: AppIcons.splashscreenLogo
sourceSize.width: Utils.getSizeWithScreenRatio(395)
sourceSize.height: Utils.getSizeWithScreenRatio(395)
width: Utils.getSizeWithScreenRatio(395)
height: Utils.getSizeWithScreenRatio(395)
}
ColumnLayout {
anchors.top: logoImage.bottom
anchors.topMargin: Utils.getSizeWithScreenRatio(24)
anchors.horizontalCenter: parent.horizontalCenter
Text {
Layout.alignment: Qt.AlignHCenter
//: "Trying to connect to single sign on on web page ..."
text: qsTr("oidc_connection_waiting_message")
font: Typography.h2
horizontalAlignment: Text.AlignHCenter
}
Text {
Layout.alignment: Qt.AlignHCenter
text: UtilsCpp.formatDuration(AppCpp.remainingTimeBeforeOidcTimeout)
font: Typography.h3m
horizontalAlignment: Text.AlignHCenter
}
Button {
Layout.alignment: Qt.AlignHCenter
//: Cancel
text: qsTr("cancel")
onClicked: AppCpp.lForceOidcTimeout()
}
}
}
}
Component {
id: loginPage
LoginPage {