imdn details

This commit is contained in:
Gaelle Braud 2025-06-20 15:20:13 +02:00
parent 1d7010c381
commit a02a58ecc9
26 changed files with 1284 additions and 482 deletions

View file

@ -60,6 +60,7 @@
#include "core/chat/message/EventLogProxy.hpp" #include "core/chat/message/EventLogProxy.hpp"
#include "core/chat/message/content/ChatMessageContentGui.hpp" #include "core/chat/message/content/ChatMessageContentGui.hpp"
#include "core/chat/message/content/ChatMessageContentProxy.hpp" #include "core/chat/message/content/ChatMessageContentProxy.hpp"
#include "core/chat/message/imdn/ImdnStatusProxy.hpp"
#include "core/conference/ConferenceGui.hpp" #include "core/conference/ConferenceGui.hpp"
#include "core/conference/ConferenceInfoGui.hpp" #include "core/conference/ConferenceInfoGui.hpp"
#include "core/conference/ConferenceInfoProxy.hpp" #include "core/conference/ConferenceInfoProxy.hpp"
@ -687,6 +688,7 @@ void App::initCppInterfaces() {
qmlRegisterType<FPSCounter>(Constants::MainQmlUri, 1, 0, "FPSCounter"); qmlRegisterType<FPSCounter>(Constants::MainQmlUri, 1, 0, "FPSCounter");
qmlRegisterType<EmojiModel>(Constants::MainQmlUri, 1, 0, "EmojiModel"); qmlRegisterType<EmojiModel>(Constants::MainQmlUri, 1, 0, "EmojiModel");
qmlRegisterType<EmojiProxy>(Constants::MainQmlUri, 1, 0, "EmojiProxy"); qmlRegisterType<EmojiProxy>(Constants::MainQmlUri, 1, 0, "EmojiProxy");
qmlRegisterType<ImdnStatusProxy>(Constants::MainQmlUri, 1, 0, "ImdnStatusProxy");
qmlRegisterType<SoundPlayerGui>(Constants::MainQmlUri, 1, 0, "SoundPlayerGui"); qmlRegisterType<SoundPlayerGui>(Constants::MainQmlUri, 1, 0, "SoundPlayerGui");
qmlRegisterType<RecorderGui>(Constants::MainQmlUri, 1, 0, "RecorderGui"); qmlRegisterType<RecorderGui>(Constants::MainQmlUri, 1, 0, "RecorderGui");

View file

@ -33,6 +33,8 @@ list(APPEND _LINPHONEAPP_SOURCES
core/chat/message/content/ChatMessageContentGui.cpp core/chat/message/content/ChatMessageContentGui.cpp
core/chat/message/content/ChatMessageContentList.cpp core/chat/message/content/ChatMessageContentList.cpp
core/chat/message/content/ChatMessageContentProxy.cpp core/chat/message/content/ChatMessageContentProxy.cpp
core/chat/message/imdn/ImdnStatusList.cpp
core/chat/message/imdn/ImdnStatusProxy.cpp
core/emoji/EmojiList.cpp core/emoji/EmojiList.cpp
core/emoji/EmojiModel.cpp core/emoji/EmojiModel.cpp
core/emoji/EmojiProxy.cpp core/emoji/EmojiProxy.cpp

View file

@ -27,6 +27,40 @@ DEFINE_ABSTRACT_OBJECT(ChatMessageCore)
/***********************************************************************/ /***********************************************************************/
ImdnStatus ImdnStatus::operator=(ImdnStatus r) {
mAddress = r.mAddress;
mState = r.mState;
mLastUpdatedTime = r.mLastUpdatedTime;
return *this;
}
bool ImdnStatus::operator==(const ImdnStatus &r) const {
return r.mState == mState && r.mAddress == mAddress && r.mLastUpdatedTime == mLastUpdatedTime;
}
bool ImdnStatus::operator!=(ImdnStatus r) {
return r.mState != mState || r.mAddress != mAddress || r.mLastUpdatedTime != mLastUpdatedTime;
}
ImdnStatus ImdnStatus::createMessageImdnStatusVariant(const QString &address,
const LinphoneEnums::ChatMessageState &state,
QDateTime lastUpdatedTime) {
ImdnStatus s;
s.mState = state;
s.mAddress = address;
s.mLastUpdatedTime = lastUpdatedTime;
return s;
}
QVariant createImdnStatusSingletonVariant(const LinphoneEnums::ChatMessageState &state, int count = 1) {
QVariantMap map;
map.insert("state", QVariant::fromValue(state));
map.insert("count", count);
return map;
}
/***********************************************************************/
Reaction Reaction::operator=(Reaction r) { Reaction Reaction::operator=(Reaction r) {
mAddress = r.mAddress; mAddress = r.mAddress;
mBody = r.mBody; mBody = r.mBody;
@ -132,6 +166,7 @@ ChatMessageCore::ChatMessageCore(const std::shared_ptr<linphone::ChatMessage> &c
mIsForward = chatmessage->isForward(); mIsForward = chatmessage->isForward();
mIsReply = chatmessage->isReply(); mIsReply = chatmessage->isReply();
mImdnStatusList = computeDeliveryStatus(chatmessage);
} }
ChatMessageCore::~ChatMessageCore() { ChatMessageCore::~ChatMessageCore() {
@ -205,8 +240,12 @@ void ChatMessageCore::setSelf(QSharedPointer<ChatMessageCore> me) {
&ChatMessageModel::msgStateChanged, &ChatMessageModel::msgStateChanged,
[this](const std::shared_ptr<linphone::ChatMessage> &message, linphone::ChatMessage::State state) { [this](const std::shared_ptr<linphone::ChatMessage> &message, linphone::ChatMessage::State state) {
if (mChatMessageModel->getMonitor() != message) return; if (mChatMessageModel->getMonitor() != message) return;
auto imdnStatusList = computeDeliveryStatus(message);
auto msgState = LinphoneEnums::fromLinphone(state); auto msgState = LinphoneEnums::fromLinphone(state);
mChatMessageModelConnection->invokeToCore([this, msgState] { setMessageState(msgState); }); mChatMessageModelConnection->invokeToCore([this, msgState, imdnStatusList] {
setImdnStatusList(imdnStatusList);
setMessageState(msgState);
});
}); });
mChatMessageModelConnection->makeConnectToModel( mChatMessageModelConnection->makeConnectToModel(
&ChatMessageModel::fileTransferProgressIndication, &ChatMessageModel::fileTransferProgressIndication,
@ -265,6 +304,40 @@ void ChatMessageCore::setSelf(QSharedPointer<ChatMessageCore> me) {
[this](const std::shared_ptr<linphone::ChatMessage> &message) {}); [this](const std::shared_ptr<linphone::ChatMessage> &message) {});
} }
QList<ImdnStatus> ChatMessageCore::computeDeliveryStatus(const std::shared_ptr<linphone::ChatMessage> &message) {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
QList<ImdnStatus> imdnStatusList;
auto createImdnStatus = [this, &imdnStatusList](std::shared_ptr<linphone::ParticipantImdnState> participant,
linphone::ChatMessage::State state) {
auto address = participant->getParticipant() ? participant->getParticipant()->getAddress()->clone() : nullptr;
auto lastUpdated = QDateTime::fromSecsSinceEpoch(participant->getStateChangeTime());
if (address) {
address->clean();
auto addrString = Utils::coreStringToAppString(address->asStringUriOnly());
auto imdn =
ImdnStatus::createMessageImdnStatusVariant(addrString, LinphoneEnums::fromLinphone(state), lastUpdated);
imdnStatusList.append(imdn);
}
};
// Read
for (auto &participant : message->getParticipantsByImdnState(linphone::ChatMessage::State::Displayed)) {
createImdnStatus(participant, linphone::ChatMessage::State::Displayed);
}
// Received
for (auto &participant : message->getParticipantsByImdnState(linphone::ChatMessage::State::DeliveredToUser)) {
createImdnStatus(participant, linphone::ChatMessage::State::DeliveredToUser);
}
// Sent
for (auto &participant : message->getParticipantsByImdnState(linphone::ChatMessage::State::Delivered)) {
createImdnStatus(participant, linphone::ChatMessage::State::Delivered);
}
// Error
for (auto &participant : message->getParticipantsByImdnState(linphone::ChatMessage::State::NotDelivered)) {
createImdnStatus(participant, linphone::ChatMessage::State::NotDelivered);
}
return imdnStatusList;
}
QDateTime ChatMessageCore::getTimestamp() const { QDateTime ChatMessageCore::getTimestamp() const {
return mTimestamp; return mTimestamp;
} }
@ -449,6 +522,49 @@ void ChatMessageCore::setMessageState(LinphoneEnums::ChatMessageState state) {
} }
} }
QList<ImdnStatus> ChatMessageCore::getImdnStatusList() const {
return mImdnStatusList;
}
void ChatMessageCore::setImdnStatusList(QList<ImdnStatus> status) {
mImdnStatusList = status;
emit imdnStatusListChanged();
}
QStringList ChatMessageCore::getImdnStatusListLabels() const {
QStringList statusList;
int count = 0;
auto imdnSingletons = getImdnStatusAsSingletons();
for (auto &status : imdnSingletons) {
auto map = status.toMap();
auto val = map["state"].value<LinphoneEnums::ChatMessageState>();
auto count = map["count"].toInt();
statusList.append(QString("%1 %2").arg(LinphoneEnums::toString(val)).arg(count));
}
return statusList;
}
QList<QVariant> ChatMessageCore::getImdnStatusAsSingletons() const {
QList<QVariant> statusSingletons;
for (auto &stat : mImdnStatusList) {
auto it = std::find_if(statusSingletons.begin(), statusSingletons.end(), [state = stat.mState](QVariant data) {
auto dataState = data.toMap()["state"].value<LinphoneEnums::ChatMessageState>();
return state == dataState;
});
if (it == statusSingletons.end()) statusSingletons.push_back(createImdnStatusSingletonVariant(stat.mState, 1));
else {
auto map = it->toMap();
auto count = map["count"].toInt();
++count;
map.remove("count");
map.insert("count", count);
statusSingletons.erase(it);
statusSingletons.push_back(map);
}
}
return statusSingletons;
}
std::shared_ptr<ChatMessageModel> ChatMessageCore::getModel() const { std::shared_ptr<ChatMessageModel> ChatMessageCore::getModel() const {
return mChatMessageModel; return mChatMessageModel;
} }

View file

@ -34,6 +34,26 @@
#include <linphone++/linphone.hh> #include <linphone++/linphone.hh>
struct ImdnStatus {
Q_GADGET
Q_PROPERTY(QString address MEMBER mAddress)
Q_PROPERTY(LinphoneEnums::ChatMessageState state MEMBER mState)
Q_PROPERTY(QDateTime lastUpdatedTime MEMBER mLastUpdatedTime)
public:
QString mAddress;
LinphoneEnums::ChatMessageState mState;
QDateTime mLastUpdatedTime;
ImdnStatus operator=(ImdnStatus r);
bool operator==(const ImdnStatus &r) const;
bool operator!=(ImdnStatus r);
static ImdnStatus createMessageImdnStatusVariant(const QString &address,
const LinphoneEnums::ChatMessageState &state,
QDateTime mLastUpdatedTime);
};
struct Reaction { struct Reaction {
Q_GADGET Q_GADGET
@ -71,6 +91,9 @@ class ChatMessageCore : public QObject, public AbstractObject {
Q_PROPERTY(bool isFromChatGroup READ isFromChatGroup CONSTANT) Q_PROPERTY(bool isFromChatGroup READ isFromChatGroup CONSTANT)
Q_PROPERTY(bool isRead READ isRead WRITE setIsRead NOTIFY isReadChanged) Q_PROPERTY(bool isRead READ isRead WRITE setIsRead NOTIFY isReadChanged)
Q_PROPERTY(QString ownReaction READ getOwnReaction WRITE setOwnReaction NOTIFY messageReactionChanged) Q_PROPERTY(QString ownReaction READ getOwnReaction WRITE setOwnReaction NOTIFY messageReactionChanged)
Q_PROPERTY(QStringList imdnStatusListAsString READ getImdnStatusListLabels NOTIFY imdnStatusListChanged)
Q_PROPERTY(QList<ImdnStatus> imdnStatusList READ getImdnStatusList NOTIFY imdnStatusListChanged)
Q_PROPERTY(QList<QVariant> imdnStatusAsSingletons READ getImdnStatusAsSingletons NOTIFY imdnStatusListChanged)
Q_PROPERTY(QList<Reaction> reactions READ getReactions WRITE setReactions NOTIFY messageReactionChanged) Q_PROPERTY(QList<Reaction> reactions READ getReactions WRITE setReactions NOTIFY messageReactionChanged)
Q_PROPERTY(QList<QVariant> reactionsSingleton READ getReactionsSingleton NOTIFY singletonReactionMapChanged) Q_PROPERTY(QList<QVariant> reactionsSingleton READ getReactionsSingleton NOTIFY singletonReactionMapChanged)
Q_PROPERTY( Q_PROPERTY(
@ -87,6 +110,8 @@ public:
~ChatMessageCore(); ~ChatMessageCore();
void setSelf(QSharedPointer<ChatMessageCore> me); void setSelf(QSharedPointer<ChatMessageCore> me);
QList<ImdnStatus> computeDeliveryStatus(const std::shared_ptr<linphone::ChatMessage> &message);
QDateTime getTimestamp() const; QDateTime getTimestamp() const;
void setTimestamp(QDateTime timestamp); void setTimestamp(QDateTime timestamp);
@ -121,6 +146,10 @@ public:
LinphoneEnums::ChatMessageState getMessageState() const; LinphoneEnums::ChatMessageState getMessageState() const;
void setMessageState(LinphoneEnums::ChatMessageState state); void setMessageState(LinphoneEnums::ChatMessageState state);
QList<ImdnStatus> getImdnStatusList() const;
void setImdnStatusList(QList<ImdnStatus> status);
QList<QVariant> getImdnStatusAsSingletons() const;
QStringList getImdnStatusListLabels() const;
std::shared_ptr<ChatMessageModel> getModel() const; std::shared_ptr<ChatMessageModel> getModel() const;
Q_INVOKABLE ChatMessageContentGui *getVoiceRecordingContent() const; Q_INVOKABLE ChatMessageContentGui *getVoiceRecordingContent() const;
@ -132,6 +161,7 @@ signals:
void isReadChanged(bool read); void isReadChanged(bool read);
void isRemoteMessageChanged(bool isRemote); void isRemoteMessageChanged(bool isRemote);
void messageStateChanged(); void messageStateChanged();
void imdnStatusListChanged();
void messageReactionChanged(); void messageReactionChanged();
void singletonReactionMapChanged(); void singletonReactionMapChanged();
@ -156,6 +186,7 @@ private:
QString mMessageId; QString mMessageId;
QString mOwnReaction; QString mOwnReaction;
QList<Reaction> mReactions; QList<Reaction> mReactions;
QList<ImdnStatus> mImdnStatusList;
QList<QVariant> mReactionsSingletonMap; QList<QVariant> mReactionsSingletonMap;
QDateTime mTimestamp; QDateTime mTimestamp;
bool mIsRemoteMessage = false; bool mIsRemoteMessage = false;

View file

@ -0,0 +1,60 @@
/*
* Copyright (c) 2010-2024 Belledonne Communications SARL.
*
* This file is part of linphone-desktop
* (see https://www.linphone.org).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ImdnStatusList.hpp"
#include "core/App.hpp"
#include <QSharedPointer>
#include <linphone++/linphone.hh>
// =============================================================================
DEFINE_ABSTRACT_OBJECT(ImdnStatusList)
QSharedPointer<ImdnStatusList> ImdnStatusList::create() {
auto model = QSharedPointer<ImdnStatusList>(new ImdnStatusList(), &QObject::deleteLater);
model->moveToThread(App::getInstance()->thread());
return model;
}
ImdnStatusList::ImdnStatusList(QObject *parent) : AbstractListProxy<ImdnStatus>(parent) {
mustBeInMainThread(getClassName());
App::getInstance()->mEngine->setObjectOwnership(this, QQmlEngine::CppOwnership);
}
ImdnStatusList::~ImdnStatusList() {
mustBeInMainThread("~" + getClassName());
}
QList<ImdnStatus> ImdnStatusList::getImdnStatusList() {
return mList;
}
void ImdnStatusList::setImdnStatusList(QList<ImdnStatus> imdnStatusList) {
resetData(imdnStatusList);
}
QVariant ImdnStatusList::data(const QModelIndex &index, int role) const {
int row = index.row();
if (!index.isValid() || row < 0 || row >= mList.count()) return QVariant();
if (role == Qt::DisplayRole) return QVariant::fromValue(mList.at(row));
return QVariant();
}

View file

@ -0,0 +1,52 @@
/*
* Copyright (c) 2010-2024 Belledonne Communications SARL.
*
* This file is part of linphone-desktop
* (see https://www.linphone.org).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef IMDN_STATUS_LIST_H_
#define IMDN_STATUS_LIST_H_
#include "core/chat/message/ChatMessageCore.hpp"
#include "core/proxy/AbstractListProxy.hpp"
#include "tool/AbstractObject.hpp"
#include "tool/thread/SafeConnection.hpp"
#include <QLocale>
// =============================================================================
class ImdnStatusList : public AbstractListProxy<ImdnStatus>, public AbstractObject {
Q_OBJECT
public:
static QSharedPointer<ImdnStatusList> create();
ImdnStatusList(QObject *parent = Q_NULLPTR);
~ImdnStatusList();
QList<ImdnStatus> getImdnStatusList();
void setImdnStatusList(QList<ImdnStatus> imdnStatusList);
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
signals:
void imdnStatusListChanged();
private:
QList<ImdnStatus> mImdnStatuss;
DECLARE_ABSTRACT_OBJECT
};
#endif

View file

@ -0,0 +1,65 @@
/*
* Copyright (c) 2010-2024 Belledonne Communications SARL.
*
* This file is part of linphone-desktop
* (see https://www.linphone.org).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ImdnStatusProxy.hpp"
#include "ImdnStatusList.hpp"
#include "core/App.hpp"
// #include "core/chat/message/ChatMessageGui.hpp"
DEFINE_ABSTRACT_OBJECT(ImdnStatusProxy)
ImdnStatusProxy::ImdnStatusProxy(QObject *parent) : LimitProxy(parent) {
mList = ImdnStatusList::create();
setSourceModel(mList.get());
connect(mList.get(), &ImdnStatusList::modelReset, this, &ImdnStatusProxy::imdnStatusListChanged);
connect(this, &ImdnStatusProxy::filterChanged, this, [this] { invalidate(); });
}
ImdnStatusProxy::~ImdnStatusProxy() {
}
QList<ImdnStatus> ImdnStatusProxy::getImdnStatusList() {
return mList->getImdnStatusList();
}
void ImdnStatusProxy::setImdnStatusList(QList<ImdnStatus> statusList) {
mList->setImdnStatusList(statusList);
}
LinphoneEnums::ChatMessageState ImdnStatusProxy::getFilter() const {
return mFilter;
}
void ImdnStatusProxy::setFilter(LinphoneEnums::ChatMessageState filter) {
if (mFilter != filter) {
mFilter = filter;
emit filterChanged();
}
}
bool ImdnStatusProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const {
auto imdn = mList->getAt(sourceRow);
return imdn.mState == mFilter;
}
bool ImdnStatusProxy::lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const {
return true;
}

View file

@ -0,0 +1,62 @@
/*
* Copyright (c) 2010-2024 Belledonne Communications SARL.
*
* This file is part of linphone-desktop
* (see https://www.linphone.org).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef IMDN_STATUS_PROXY_H_
#define IMDN_STATUS_PROXY_H_
#include "core/chat/message/ChatMessageCore.hpp"
#include "core/proxy/LimitProxy.hpp"
#include "tool/AbstractObject.hpp"
// =============================================================================
class ImdnStatusList;
class ImdnStatusProxy : public LimitProxy, public AbstractObject {
Q_OBJECT
Q_PROPERTY(
QList<ImdnStatus> imdnStatusList READ getImdnStatusList WRITE setImdnStatusList NOTIFY imdnStatusListChanged)
Q_PROPERTY(LinphoneEnums::ChatMessageState filter READ getFilter WRITE setFilter NOTIFY filterChanged)
public:
ImdnStatusProxy(QObject *parent = Q_NULLPTR);
~ImdnStatusProxy();
QList<ImdnStatus> getImdnStatusList();
void setImdnStatusList(QList<ImdnStatus> imdnStatusList);
LinphoneEnums::ChatMessageState getFilter() const;
void setFilter(LinphoneEnums::ChatMessageState filter);
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override;
signals:
void imdnStatusListChanged();
void filterChanged();
protected:
LinphoneEnums::ChatMessageState mFilter;
QSharedPointer<ImdnStatusList> mList;
DECLARE_ABSTRACT_OBJECT
};
#endif

View file

@ -41,9 +41,6 @@ public:
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
signals:
void reactionsChanged();
private: private:
QList<Reaction> mReactions; QList<Reaction> mReactions;
DECLARE_ABSTRACT_OBJECT DECLARE_ABSTRACT_OBJECT

View file

@ -29,7 +29,7 @@ DEFINE_ABSTRACT_OBJECT(EmojiProxy)
EmojiProxy::EmojiProxy(QObject *parent) : LimitProxy(parent) { EmojiProxy::EmojiProxy(QObject *parent) : LimitProxy(parent) {
mList = EmojiList::create(); mList = EmojiList::create();
setSourceModel(mList.get()); setSourceModel(mList.get());
connect(mList.get(), &EmojiList::reactionsChanged, this, &EmojiProxy::reactionsChanged); connect(mList.get(), &EmojiList::modelReset, this, &EmojiProxy::reactionsChanged);
connect(this, &EmojiProxy::filterChanged, this, [this] { invalidate(); }); connect(this, &EmojiProxy::filterChanged, this, [this] { invalidate(); });
} }

View file

@ -13,13 +13,13 @@
<context> <context>
<name>AbstractWindow</name> <name>AbstractWindow</name>
<message> <message>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="78"/> <location filename="../../view/Page/Window/AbstractWindow.qml" line="80"/>
<source>contact_dialog_pick_phone_number_or_sip_address_title</source> <source>contact_dialog_pick_phone_number_or_sip_address_title</source>
<extracomment>&quot;Choisissez un numéro ou adresse SIP&quot;</extracomment> <extracomment>&quot;Choisissez un numéro ou adresse SIP&quot;</extracomment>
<translation>Telefonnummer oder SIP-Adresse wählen</translation> <translation>Telefonnummer oder SIP-Adresse wählen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="277"/> <location filename="../../view/Page/Window/AbstractWindow.qml" line="279"/>
<source>fps_counter</source> <source>fps_counter</source>
<translation>%1 FPS</translation> <translation>%1 FPS</translation>
</message> </message>
@ -523,7 +523,7 @@
<context> <context>
<name>App</name> <name>App</name>
<message> <message>
<location filename="../../core/App.cpp" line="338"/> <location filename="../../core/App.cpp" line="337"/>
<source>remote_provisioning_dialog</source> <source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment> <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> <translation>Möchten Sie die Remote-Konfiguration von dieser Adresse herunterladen und anwenden?</translation>
@ -1758,18 +1758,18 @@
<context> <context>
<name>ChatListView</name> <name>ChatListView</name>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="269"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="270"/>
<source>chat_message_is_writing_info</source> <source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment> <extracomment>%1 is writing</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="271"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="272"/>
<source>chat_message_draft_sending_text</source> <source>chat_message_draft_sending_text</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="340"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="341"/>
<source>chat_room_delete</source> <source>chat_room_delete</source>
<extracomment>&quot;Supprimer&quot;</extracomment> <extracomment>&quot;Supprimer&quot;</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1787,13 +1787,13 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="346"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="347"/>
<source>chat_list_delete_chat_popup_title</source> <source>chat_list_delete_chat_popup_title</source>
<extracomment>Delete the conversation ?</extracomment> <extracomment>Delete the conversation ?</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="348"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="349"/>
<source>chat_list_delete_chat_popup_message</source> <source>chat_list_delete_chat_popup_message</source>
<extracomment>This conversation and all its messages will be deleted. Do You want to continue ?</extracomment> <extracomment>This conversation and all its messages will be deleted. Do You want to continue ?</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1802,31 +1802,37 @@
<context> <context>
<name>ChatMessage</name> <name>ChatMessage</name>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="238"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="239"/>
<source>chat_message_copy_selection</source> <source>chat_message_copy_selection</source>
<extracomment>&quot;Copy selection&quot;</extracomment> <extracomment>&quot;Copy selection&quot;</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="240"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="241"/>
<source>chat_message_copy</source> <source>chat_message_copy</source>
<extracomment>&quot;Copy&quot;</extracomment> <extracomment>&quot;Copy&quot;</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="248"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="249"/>
<source>chat_message_copied_to_clipboard_title</source> <source>chat_message_copied_to_clipboard_title</source>
<extracomment>Copied</extracomment> <extracomment>Copied</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="250"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="251"/>
<source>chat_message_copied_to_clipboard_toast</source> <source>chat_message_copied_to_clipboard_toast</source>
<extracomment>&quot;to clipboard&quot;</extracomment> <extracomment>&quot;to clipboard&quot;</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="256"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="257"/>
<source>chat_message_see_status</source>
<extracomment>&quot;See message status&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="273"/>
<source>chat_message_delete</source> <source>chat_message_delete</source>
<extracomment>&quot;Delete&quot;</extracomment> <extracomment>&quot;Delete&quot;</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1916,19 +1922,19 @@ Error</extracomment>
<context> <context>
<name>ChatMessageCore</name> <name>ChatMessageCore</name>
<message> <message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="101"/> <location filename="../../core/chat/message/ChatMessageCore.cpp" line="127"/>
<source>all_reactions_label</source> <source>all_reactions_label</source>
<extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment> <extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="145"/> <location filename="../../core/chat/message/ChatMessageCore.cpp" line="173"/>
<source>info_toast_deleted_title</source> <source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment> <extracomment>Deleted</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="147"/> <location filename="../../core/chat/message/ChatMessageCore.cpp" line="175"/>
<source>info_toast_deleted_message</source> <source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment> <extracomment>The message has been deleted</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1981,20 +1987,20 @@ Error</extracomment>
<context> <context>
<name>ChatMessagesListView</name> <name>ChatMessagesListView</name>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="90"/> <location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="91"/>
<source>chat_message_list_encrypted_header_title</source> <source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment> <extracomment>End to end encrypted chat</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="100"/> <location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="101"/>
<source>chat_message_list_encrypted_header_message</source> <source>chat_message_list_encrypted_header_message</source>
<extracomment>Les messages de cette conversation sont chiffrés de bout <extracomment>Les messages de cette conversation sont chiffrés de bout
en bout. Seul votre correspondant peut les déchiffrer.</extracomment> en bout. Seul votre correspondant peut les déchiffrer.</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="184"/> <location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="186"/>
<source>chat_message_is_writing_info</source> <source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment> <extracomment>%1 is writing</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -3089,7 +3095,7 @@ Error</extracomment>
<translation>Apply</translation> <translation>Apply</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="129"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="130"/>
<source>group_infos_call</source> <source>group_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment> <extracomment>&quot;Appel&quot;</extracomment>
<translation>Anrufen</translation> <translation>Anrufen</translation>
@ -3107,19 +3113,19 @@ Error</extracomment>
<translation>Unmute</translation> <translation>Unmute</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="139"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="141"/>
<source>group_infos_meeting</source> <source>group_infos_meeting</source>
<extracomment>&quot;Réunion&quot;</extracomment> <extracomment>&quot;Réunion&quot;</extracomment>
<translation>Meeting</translation> <translation>Meeting</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="162"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="164"/>
<source>group_infos_participants</source> <source>group_infos_participants</source>
<translation>Participants (%1)</translation> <translation>Participants (%1)</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="169"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="171"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="174"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="176"/>
<source>group_infos_media_docs</source> <source>group_infos_media_docs</source>
<translation>Medien &amp; Dokumente</translation> <translation>Medien &amp; Dokumente</translation>
</message> </message>
@ -3129,55 +3135,55 @@ Error</extracomment>
<translation type="vanished">Geteilte Medien</translation> <translation type="vanished">Geteilte Medien</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="184"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="186"/>
<source>group_infos_shared_docs</source> <source>group_infos_shared_docs</source>
<translation>Geteilte Dokumente</translation> <translation>Geteilte Dokumente</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="196"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="198"/>
<source>group_infos_other_actions</source> <source>group_infos_other_actions</source>
<translation>Weitere Aktionen</translation> <translation>Weitere Aktionen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="201"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="203"/>
<source>group_infos_enable_ephemerals</source> <source>group_infos_enable_ephemerals</source>
<translation>Flüchtige Nachrichten aktivieren</translation> <translation>Flüchtige Nachrichten aktivieren</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="201"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="203"/>
<source>group_infos_disable_ephemerals</source> <source>group_infos_disable_ephemerals</source>
<translation>Flüchtige Nachrichten deaktivieren</translation> <translation>Flüchtige Nachrichten deaktivieren</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="211"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="213"/>
<source>group_infos_leave_room</source> <source>group_infos_leave_room</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="230"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="232"/>
<source>group_infos_delete_history</source> <source>group_infos_delete_history</source>
<translation>Verlauf löschen</translation> <translation>Verlauf löschen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="235"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="237"/>
<source>group_infos_delete_history_toast_title</source> <source>group_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment> <extracomment>Delete history ?</extracomment>
<translation>Verlauf löschen?</translation> <translation>Verlauf löschen?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="237"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="239"/>
<source>group_infos_delete_history_toast_message</source> <source>group_infos_delete_history_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment> <extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?</translation> <translation>Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="216"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="218"/>
<source>group_infos_leave_room_toast_title</source> <source>group_infos_leave_room_toast_title</source>
<extracomment>Leave Chat Room ?</extracomment> <extracomment>Leave Chat Room ?</extracomment>
<translation>Chatraum verlassen?</translation> <translation>Chatraum verlassen?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="218"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="220"/>
<source>group_infos_leave_room_toast_message</source> <source>group_infos_leave_room_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment> <extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?</translation> <translation>Alle Nachrichten werden aus dem Chat entfernt. Möchten Sie fortfahren?</translation>
@ -3551,102 +3557,102 @@ Error</extracomment>
<context> <context>
<name>MainLayout</name> <name>MainLayout</name>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="143"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="147"/>
<source>bottom_navigation_calls_label</source> <source>bottom_navigation_calls_label</source>
<extracomment>&quot;Appels&quot;</extracomment> <extracomment>&quot;Appels&quot;</extracomment>
<translation>Anrufe</translation> <translation>Anrufe</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="148"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="152"/>
<source>bottom_navigation_contacts_label</source> <source>bottom_navigation_contacts_label</source>
<extracomment>&quot;Contacts&quot;</extracomment> <extracomment>&quot;Contacts&quot;</extracomment>
<translation>Kontakte</translation> <translation>Kontakte</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="153"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="157"/>
<source>bottom_navigation_conversations_label</source> <source>bottom_navigation_conversations_label</source>
<extracomment>&quot;Conversations&quot;</extracomment> <extracomment>&quot;Conversations&quot;</extracomment>
<translation>Konversationen</translation> <translation>Konversationen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="159"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="163"/>
<source>bottom_navigation_meetings_label</source> <source>bottom_navigation_meetings_label</source>
<extracomment>&quot;Réunions&quot;</extracomment> <extracomment>&quot;Réunions&quot;</extracomment>
<translation>Besprechungen</translation> <translation>Besprechungen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="206"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="210"/>
<source>searchbar_placeholder_text</source> <source>searchbar_placeholder_text</source>
<extracomment>&quot;Rechercher un contact, appeler %1&quot;</extracomment> <extracomment>&quot;Rechercher un contact, appeler %1&quot;</extracomment>
<translation>Kontakt suchen, %1 anrufen</translation> <translation>Kontakt suchen, %1 anrufen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="209"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="213"/>
<source>searchbar_placeholder_text_chat_feature_enabled</source> <source>searchbar_placeholder_text_chat_feature_enabled</source>
<extracomment>&quot;ou envoyer un message &quot;</extracomment> <extracomment>&quot;ou envoyer un message &quot;</extracomment>
<translation>oder eine Nachricht senden </translation> <translation>oder eine Nachricht senden </translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="315"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="319"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="449"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="453"/>
<source>contact_presence_status_disable_do_not_disturb</source> <source>contact_presence_status_disable_do_not_disturb</source>
<extracomment>&quot;Désactiver ne pas déranger&quot;</extracomment> <extracomment>&quot;Désactiver ne pas déranger&quot;</extracomment>
<translation>Nicht stören deaktivieren</translation> <translation>Nicht stören deaktivieren</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="371"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="375"/>
<source>information_popup_error_title</source> <source>information_popup_error_title</source>
<translation>Fehler</translation> <translation>Fehler</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="373"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="377"/>
<source>no_voicemail_uri_error_message</source> <source>no_voicemail_uri_error_message</source>
<extracomment>&quot;L&apos;URI de messagerie vocale n&apos;est pas définie.&quot;</extracomment> <extracomment>&quot;L&apos;URI de messagerie vocale n&apos;est pas définie.&quot;</extracomment>
<translation>Die Voicemail-URI ist nicht definiert.</translation> <translation>Die Voicemail-URI ist nicht definiert.</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="433"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="437"/>
<source>drawer_menu_manage_account</source> <source>drawer_menu_manage_account</source>
<extracomment>Mon compte</extracomment> <extracomment>Mon compte</extracomment>
<translation>Mein Konto</translation> <translation>Mein Konto</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="451"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="455"/>
<source>contact_presence_status_enable_do_not_disturb</source> <source>contact_presence_status_enable_do_not_disturb</source>
<extracomment>&quot;Activer ne pas déranger&quot;</extracomment> <extracomment>&quot;Activer ne pas déranger&quot;</extracomment>
<translation>Nicht stören aktivieren</translation> <translation>Nicht stören aktivieren</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="470"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="474"/>
<source>settings_title</source> <source>settings_title</source>
<translation>Einstellungen</translation> <translation>Einstellungen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="488"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="492"/>
<source>recordings_title</source> <source>recordings_title</source>
<extracomment>&quot;Enregistrements&quot;</extracomment> <extracomment>&quot;Enregistrements&quot;</extracomment>
<translation>Aufnahmen</translation> <translation>Aufnahmen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="503"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="507"/>
<source>help_title</source> <source>help_title</source>
<extracomment>&quot;Aide&quot;</extracomment> <extracomment>&quot;Aide&quot;</extracomment>
<translation>Hilfe</translation> <translation>Hilfe</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="520"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="524"/>
<source>help_quit_title</source> <source>help_quit_title</source>
<extracomment>&quot;Quitter l&apos;application&quot;</extracomment> <extracomment>&quot;Quitter l&apos;application&quot;</extracomment>
<translation>App beenden</translation> <translation>App beenden</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="525"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="529"/>
<source>quit_app_question</source> <source>quit_app_question</source>
<extracomment>&quot;Quitter %1 ?&quot;</extracomment> <extracomment>&quot;Quitter %1 ?&quot;</extracomment>
<translation>%1 beenden?</translation> <translation>%1 beenden?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="554"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="558"/>
<source>drawer_menu_add_account</source> <source>drawer_menu_add_account</source>
<extracomment>&quot;Ajouter un compte&quot;</extracomment> <extracomment>&quot;Ajouter un compte&quot;</extracomment>
<translation>Konto hinzufügen</translation> <translation>Konto hinzufügen</translation>
@ -3655,78 +3661,78 @@ Error</extracomment>
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="41"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="42"/>
<source>information_popup_connexion_succeed_title</source> <source>information_popup_connexion_succeed_title</source>
<extracomment>&quot;Connexion réussie&quot;</extracomment> <extracomment>&quot;Connexion réussie&quot;</extracomment>
<translation>Verbindung erfolgreich</translation> <translation>Verbindung erfolgreich</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="43"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="44"/>
<source>information_popup_connexion_succeed_message</source> <source>information_popup_connexion_succeed_message</source>
<extracomment>&quot;Vous êtes connecté en mode %1&quot;</extracomment> <extracomment>&quot;Vous êtes connecté en mode %1&quot;</extracomment>
<translation>Sie sind im %1-Modus verbunden</translation> <translation>Sie sind im %1-Modus verbunden</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="45"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="46"/>
<source>interoperable</source> <source>interoperable</source>
<extracomment>interopérable</extracomment> <extracomment>interopérable</extracomment>
<translation>interoperabel</translation> <translation>interoperabel</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="74"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="75"/>
<source>call_transfer_successful_toast_title</source> <source>call_transfer_successful_toast_title</source>
<extracomment>&quot;Appel transféré&quot;</extracomment> <extracomment>&quot;Appel transféré&quot;</extracomment>
<translation>Anruf weitergeleitet</translation> <translation>Anruf weitergeleitet</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="76"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="77"/>
<source>call_transfer_successful_toast_message</source> <source>call_transfer_successful_toast_message</source>
<extracomment>&quot;Votre correspondant a é transféré au contact sélectionné&quot;</extracomment> <extracomment>&quot;Votre correspondant a é transféré au contact sélectionné&quot;</extracomment>
<translation>Ihr Gesprächspartner wurde an den ausgewählten Kontakt weitergeleitet</translation> <translation>Ihr Gesprächspartner wurde an den ausgewählten Kontakt weitergeleitet</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="122"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="128"/>
<source>information_popup_success_title</source> <source>information_popup_success_title</source>
<translation>Gespeichert</translation> <translation>Gespeichert</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="124"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="130"/>
<source>information_popup_changes_saved</source> <source>information_popup_changes_saved</source>
<extracomment>&quot;Les changements ont é sauvegardés&quot;</extracomment> <extracomment>&quot;Les changements ont é sauvegardés&quot;</extracomment>
<translation>Änderungen wurden gespeichert</translation> <translation>Änderungen wurden gespeichert</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="209"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="215"/>
<source>captcha_validation_loading_message</source> <source>captcha_validation_loading_message</source>
<extracomment>&quot;Veuillez valider le captcha sur la page web&quot;</extracomment> <extracomment>&quot;Veuillez valider le captcha sur la page web&quot;</extracomment>
<translation>Bitte das Captcha auf der Webseite bestätigen</translation> <translation>Bitte das Captcha auf der Webseite bestätigen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="217"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="223"/>
<source>assistant_register_error_title</source> <source>assistant_register_error_title</source>
<extracomment>&quot;Erreur lors de la création&quot;</extracomment> <extracomment>&quot;Erreur lors de la création&quot;</extracomment>
<translation>Fehler bei der Erstellung</translation> <translation>Fehler bei der Erstellung</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="236"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="242"/>
<source>assistant_register_success_title</source> <source>assistant_register_success_title</source>
<extracomment>&quot;Compte créé&quot;</extracomment> <extracomment>&quot;Compte créé&quot;</extracomment>
<translation>Konto erstellt</translation> <translation>Konto erstellt</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="238"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="244"/>
<source>assistant_register_success_message</source> <source>assistant_register_success_message</source>
<extracomment>&quot;Le compte a é créé. Vous pouvez maintenant vous connecter&quot;</extracomment> <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> <translation>Das Konto wurde erstellt. Sie können sich jetzt anmelden.</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="242"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="248"/>
<source>assistant_register_error_code</source> <source>assistant_register_error_code</source>
<extracomment>&quot;Erreur dans le code de validation&quot;</extracomment> <extracomment>&quot;Erreur dans le code de validation&quot;</extracomment>
<translation>Fehler im Bestätigungscode</translation> <translation>Fehler im Bestätigungscode</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="243"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="249"/>
<source>information_popup_error_title</source> <source>information_popup_error_title</source>
<translation>Fehler</translation> <translation>Fehler</translation>
</message> </message>
@ -3800,152 +3806,152 @@ Error</extracomment>
<translation>Keine Besprechungen</translation> <translation>Keine Besprechungen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="78"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="89"/>
<source>meeting_schedule_cancel_dialog_message</source> <source>meeting_schedule_cancel_dialog_message</source>
<extracomment>&quot;Souhaitez-vous annuler et supprimer cette réunion ?&quot;</extracomment> <extracomment>&quot;Souhaitez-vous annuler et supprimer cette réunion ?&quot;</extracomment>
<translation>Möchten Sie diese Besprechung absagen und löschen?</translation> <translation>Möchten Sie diese Besprechung absagen und löschen?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="80"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="91"/>
<source>meeting_schedule_delete_dialog_message</source> <source>meeting_schedule_delete_dialog_message</source>
<extracomment>Souhaitez-vous supprimer cette réunion ?</extracomment> <extracomment>Souhaitez-vous supprimer cette réunion ?</extracomment>
<translation>Möchten Sie diese Besprechung löschen?</translation> <translation>Möchten Sie diese Besprechung löschen?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="86"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="97"/>
<source>meeting_schedule_cancel_and_delete_action</source> <source>meeting_schedule_cancel_and_delete_action</source>
<extracomment>&quot;Annuler et supprimer&quot;</extracomment> <extracomment>&quot;Annuler et supprimer&quot;</extracomment>
<translation>Absagen und löschen</translation> <translation>Absagen und löschen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="95"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="106"/>
<source>meeting_schedule_delete_only_action</source> <source>meeting_schedule_delete_only_action</source>
<extracomment>&quot;Supprimer seulement&quot;</extracomment> <extracomment>&quot;Supprimer seulement&quot;</extracomment>
<translation>Nur löschen</translation> <translation>Nur löschen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="97"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="108"/>
<source>meeting_schedule_delete_action</source> <source>meeting_schedule_delete_action</source>
<extracomment>&quot;Supprimer&quot;</extracomment> <extracomment>&quot;Supprimer&quot;</extracomment>
<translation type="unfinished">Löschen</translation> <translation type="unfinished">Löschen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="106"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="117"/>
<source>back_action</source> <source>back_action</source>
<extracomment>Retour</extracomment> <extracomment>Retour</extracomment>
<translation>Zurück</translation> <translation>Zurück</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="149"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="160"/>
<source>meetings_list_title</source> <source>meetings_list_title</source>
<extracomment>Réunions</extracomment> <extracomment>Réunions</extracomment>
<translation>Besprechungen</translation> <translation>Besprechungen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="173"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="184"/>
<source>meetings_search_hint</source> <source>meetings_search_hint</source>
<extracomment>&quot;Rechercher une réunion&quot;</extracomment> <extracomment>&quot;Rechercher une réunion&quot;</extracomment>
<translation>Besprechung suchen</translation> <translation>Besprechung suchen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="190"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="201"/>
<source>list_filter_no_result_found</source> <source>list_filter_no_result_found</source>
<extracomment>&quot;Aucun résultat&quot;</extracomment> <extracomment>&quot;Aucun résultat&quot;</extracomment>
<translation>Kein Ergebnis</translation> <translation>Kein Ergebnis</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="192"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="203"/>
<source>meetings_empty_list</source> <source>meetings_empty_list</source>
<extracomment>&quot;Aucune réunion&quot;</extracomment> <extracomment>&quot;Aucune réunion&quot;</extracomment>
<translation>Keine Besprechungen</translation> <translation>Keine Besprechungen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="255"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="266"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="304"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="315"/>
<source>meeting_schedule_title</source> <source>meeting_schedule_title</source>
<extracomment>&quot;Nouvelle réunion&quot;</extracomment> <extracomment>&quot;Nouvelle réunion&quot;</extracomment>
<translation>Neue Besprechung</translation> <translation>Neue Besprechung</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="266"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="277"/>
<source>create</source> <source>create</source>
<translation>Erstellen</translation> <translation>Erstellen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="273"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="284"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="277"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="288"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="316"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="327"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="418"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="429"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="421"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="432"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="470"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="481"/>
<source>information_popup_error_title</source> <source>information_popup_error_title</source>
<translation>Fehler</translation> <translation>Fehler</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="275"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="286"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="419"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="430"/>
<source>meeting_schedule_mandatory_field_not_filled_toast</source> <source>meeting_schedule_mandatory_field_not_filled_toast</source>
<extracomment>Veuillez saisir un titre et sélectionner au moins un participant</extracomment> <extracomment>Veuillez saisir un titre et sélectionner au moins un participant</extracomment>
<translation>Bitte Titel bestimmen und mindestens einen Teilnehmer auswählen</translation> <translation>Bitte Titel bestimmen und mindestens einen Teilnehmer auswählen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="279"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="290"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="422"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="433"/>
<source>meeting_schedule_duration_error_toast</source> <source>meeting_schedule_duration_error_toast</source>
<extracomment>&quot;La fin de la conférence doit être plus récente que son début&quot;</extracomment> <extracomment>&quot;La fin de la conférence doit être plus récente que son début&quot;</extracomment>
<translation>Das Ende der Besprechung muss nach dem Beginn liegen</translation> <translation>Das Ende der Besprechung muss nach dem Beginn liegen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="283"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="294"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="311"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="322"/>
<source>meeting_schedule_creation_in_progress</source> <source>meeting_schedule_creation_in_progress</source>
<extracomment>&quot;Création de la réunion en cours &quot;</extracomment> <extracomment>&quot;Création de la réunion en cours &quot;</extracomment>
<translation>Besprechung wird erstellt</translation> <translation>Besprechung wird erstellt</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="306"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="317"/>
<source>meeting_info_created_toast</source> <source>meeting_info_created_toast</source>
<extracomment>&quot;Réunion planifiée avec succès&quot;</extracomment> <extracomment>&quot;Réunion planifiée avec succès&quot;</extracomment>
<translation>Besprechung erfolgreich erstellt</translation> <translation>Besprechung erfolgreich erstellt</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="318"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="329"/>
<source>meeting_failed_to_schedule_toast</source> <source>meeting_failed_to_schedule_toast</source>
<extracomment>&quot;Échec de création de la réunion !&quot;</extracomment> <extracomment>&quot;Échec de création de la réunion !&quot;</extracomment>
<translation>Besprechung konnte nicht erstellt werden!</translation> <translation>Besprechung konnte nicht erstellt werden!</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="411"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="422"/>
<source>save</source> <source>save</source>
<translation>Speichern</translation> <translation>Speichern</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="461"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="472"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="688"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="699"/>
<source>saved</source> <source>saved</source>
<extracomment>&quot;Enregistré&quot;</extracomment> <extracomment>&quot;Enregistré&quot;</extracomment>
<translation>Gespeichert</translation> <translation>Gespeichert</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="463"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="474"/>
<source>meeting_info_updated_toast</source> <source>meeting_info_updated_toast</source>
<extracomment>&quot;Réunion mise à jour&quot;</extracomment> <extracomment>&quot;Réunion mise à jour&quot;</extracomment>
<translation>Besprechung geändert</translation> <translation>Besprechung geändert</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="468"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="479"/>
<source>meeting_schedule_edit_in_progress</source> <source>meeting_schedule_edit_in_progress</source>
<extracomment>&quot;Modification de la réunion en cours&quot;</extracomment> <extracomment>&quot;Modification de la réunion en cours&quot;</extracomment>
<translation>Bersprechung wird geändert</translation> <translation>Bersprechung wird geändert</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="472"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="483"/>
<source>meeting_failed_to_edit_toast</source> <source>meeting_failed_to_edit_toast</source>
<extracomment>&quot;Échec de la modification de la réunion !&quot;</extracomment> <extracomment>&quot;Échec de la modification de la réunion !&quot;</extracomment>
<translation>Besprechung konnte nicht geändert werden!</translation> <translation>Besprechung konnte nicht geändert werden!</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="509"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="520"/>
<source>meeting_schedule_add_participants_title</source> <source>meeting_schedule_add_participants_title</source>
<extracomment>&quot;Ajouter des participants&quot;</extracomment> <extracomment>&quot;Ajouter des participants&quot;</extracomment>
<translation>Teilnehmer hinzufügen</translation> <translation>Teilnehmer hinzufügen</translation>
@ -3957,12 +3963,12 @@ Error</extracomment>
<translation>Apply</translation> <translation>Apply</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="524"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="535"/>
<source>add</source> <source>add</source>
<translation>Hinzufügen</translation> <translation>Hinzufügen</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="534"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="545"/>
<source>group_call_participant_selected</source> <source>group_call_participant_selected</source>
<extracomment>&quot;%n participant(s) sélectionné(s)&quot;</extracomment> <extracomment>&quot;%n participant(s) sélectionné(s)&quot;</extracomment>
<translation type="unfinished"> <translation type="unfinished">
@ -3971,31 +3977,31 @@ Error</extracomment>
</translation> </translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="619"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="630"/>
<source>meeting_info_delete</source> <source>meeting_info_delete</source>
<extracomment>&quot;Supprimer la réunion&quot;</extracomment> <extracomment>&quot;Supprimer la réunion&quot;</extracomment>
<translation>Besprechung löschen</translation> <translation>Besprechung löschen</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="690"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="701"/>
<source>meeting_address_copied_to_clipboard_toast</source> <source>meeting_address_copied_to_clipboard_toast</source>
<extracomment>&quot;Adresse de la réunion copiée&quot;</extracomment> <extracomment>&quot;Adresse de la réunion copiée&quot;</extracomment>
<translation>Besprechungs-URI kopiert</translation> <translation>Besprechungs-URI kopiert</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="725"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="736"/>
<source>meeting_schedule_timezone_title</source> <source>meeting_schedule_timezone_title</source>
<extracomment>&quot;Fuseau horaire&quot;</extracomment> <extracomment>&quot;Fuseau horaire&quot;</extracomment>
<translation>Zeitzone</translation> <translation>Zeitzone</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="818"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="829"/>
<source>meeting_info_organizer_label</source> <source>meeting_info_organizer_label</source>
<extracomment>&quot;Organisateur&quot;</extracomment> <extracomment>&quot;Organisateur&quot;</extracomment>
<translation>Organisator</translation> <translation>Organisator</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="835"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="846"/>
<source>meeting_info_join_title</source> <source>meeting_info_join_title</source>
<extracomment>&quot;Rejoindre la réunion&quot;</extracomment> <extracomment>&quot;Rejoindre la réunion&quot;</extracomment>
<translation>Besprechung beitreten</translation> <translation>Besprechung beitreten</translation>
@ -4023,15 +4029,30 @@ Error</extracomment>
</message> </message>
</context> </context>
<context> <context>
<name>MessageReactionsInfos</name> <name>MessageImdnStatusInfos</name>
<message> <message>
<location filename="../../view/Page/Layout/Chat/MessageReactionsInfos.qml" line="28"/> <location filename="../../view/Page/Layout/Chat/MessageImdnStatusInfos.qml" line="11"/>
<source>message_details_status title</source> <source>message_details_status_title</source>
<extracomment>Message status</extracomment> <extracomment>Message status</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/MessageReactionsInfos.qml" line="91"/> <location filename="../../view/Page/Layout/Chat/MessageImdnStatusInfos.qml" line="47"/>
<source>click_to_delete_reaction_info</source>
<extracomment>Click to delete</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessageReactionsInfos</name>
<message>
<location filename="../../view/Page/Layout/Chat/MessageReactionsInfos.qml" line="12"/>
<source>message_details_reactions_title</source>
<extracomment>Reactions</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/MessageReactionsInfos.qml" line="59"/>
<source>click_to_delete_reaction_info</source> <source>click_to_delete_reaction_info</source>
<extracomment>Click to delete</extracomment> <extracomment>Click to delete</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -4454,31 +4475,91 @@ Error</extracomment>
<translation>Post-quantum ZRTP</translation> <translation>Post-quantum ZRTP</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="184"/> <location filename="../../tool/LinphoneEnums.cpp" line="125"/>
<source>message_state_in_progress</source>
<extracomment>&quot;delivery in progress&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="128"/>
<source>message_state_delivered</source>
<extracomment>sent</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="131"/>
<source>message_state_not_delivered</source>
<extracomment>error</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="134"/>
<source>message_state_file_transfer_error</source>
<extracomment>cannot get file from server</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="137"/>
<source>message_state_file_transfer_done</source>
<extracomment>file transfer has been completed successfully</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="140"/>
<source>message_state_delivered_to_user</source>
<extracomment>received</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="143"/>
<source>message_state_displayed</source>
<extracomment>read</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="146"/>
<source>message_state_file_transfer__in_progress</source>
<extracomment>file transfer in progress</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="149"/>
<source>message_state_pending_delivery</source>
<extracomment>pending delivery</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="152"/>
<source>message_state_file_transfer_cancelling</source>
<extracomment>file transfer canceled</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="219"/>
<source>incoming</source> <source>incoming</source>
<extracomment>&quot;Entrant&quot;</extracomment> <extracomment>&quot;Entrant&quot;</extracomment>
<translation>Eingehend</translation> <translation>Eingehend</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="187"/> <location filename="../../tool/LinphoneEnums.cpp" line="222"/>
<source>outgoing</source> <source>outgoing</source>
<extracomment>&quot;Sortant&quot;</extracomment> <extracomment>&quot;Sortant&quot;</extracomment>
<translation>Ausgehend</translation> <translation>Ausgehend</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="213"/> <location filename="../../tool/LinphoneEnums.cpp" line="248"/>
<source>conference_layout_active_speaker</source> <source>conference_layout_active_speaker</source>
<extracomment>&quot;Participant actif&quot;</extracomment> <extracomment>&quot;Participant actif&quot;</extracomment>
<translation>Aktiver Sprecher</translation> <translation>Aktiver Sprecher</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="215"/> <location filename="../../tool/LinphoneEnums.cpp" line="250"/>
<source>conference_layout_grid</source> <source>conference_layout_grid</source>
<extracomment>&quot;Mosaïque&quot;</extracomment> <extracomment>&quot;Mosaïque&quot;</extracomment>
<translation>Raster</translation> <translation>Raster</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="217"/> <location filename="../../tool/LinphoneEnums.cpp" line="252"/>
<source>conference_layout_audio_only</source> <source>conference_layout_audio_only</source>
<extracomment>&quot;Audio uniquement&quot;</extracomment> <extracomment>&quot;Audio uniquement&quot;</extracomment>
<translation>Nur Audio</translation> <translation>Nur Audio</translation>

View file

@ -13,13 +13,13 @@
<context> <context>
<name>AbstractWindow</name> <name>AbstractWindow</name>
<message> <message>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="78"/> <location filename="../../view/Page/Window/AbstractWindow.qml" line="80"/>
<source>contact_dialog_pick_phone_number_or_sip_address_title</source> <source>contact_dialog_pick_phone_number_or_sip_address_title</source>
<extracomment>&quot;Choisissez un numéro ou adresse SIP&quot;</extracomment> <extracomment>&quot;Choisissez un numéro ou adresse SIP&quot;</extracomment>
<translation>Choose a SIP number or address</translation> <translation>Choose a SIP number or address</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="277"/> <location filename="../../view/Page/Window/AbstractWindow.qml" line="279"/>
<source>fps_counter</source> <source>fps_counter</source>
<translation>%1 FPS</translation> <translation>%1 FPS</translation>
</message> </message>
@ -523,7 +523,7 @@
<context> <context>
<name>App</name> <name>App</name>
<message> <message>
<location filename="../../core/App.cpp" line="338"/> <location filename="../../core/App.cpp" line="337"/>
<source>remote_provisioning_dialog</source> <source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment> <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> <translation>Do you want to download and apply remote provisioning from this address ?</translation>
@ -1720,18 +1720,18 @@
<context> <context>
<name>ChatListView</name> <name>ChatListView</name>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="269"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="270"/>
<source>chat_message_is_writing_info</source> <source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment> <extracomment>%1 is writing</extracomment>
<translation>%1 is writing</translation> <translation>%1 is writing</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="271"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="272"/>
<source>chat_message_draft_sending_text</source> <source>chat_message_draft_sending_text</source>
<translation>Draft : %1</translation> <translation>Draft : %1</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="340"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="341"/>
<source>chat_room_delete</source> <source>chat_room_delete</source>
<extracomment>&quot;Supprimer&quot;</extracomment> <extracomment>&quot;Supprimer&quot;</extracomment>
<translation>Delete</translation> <translation>Delete</translation>
@ -1749,13 +1749,13 @@
<translation>Unmute</translation> <translation>Unmute</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="346"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="347"/>
<source>chat_list_delete_chat_popup_title</source> <source>chat_list_delete_chat_popup_title</source>
<extracomment>Delete the conversation ?</extracomment> <extracomment>Delete the conversation ?</extracomment>
<translation>Delete the conversation ?</translation> <translation>Delete the conversation ?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="348"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="349"/>
<source>chat_list_delete_chat_popup_message</source> <source>chat_list_delete_chat_popup_message</source>
<extracomment>This conversation and all its messages will be deleted. Do You want to continue ?</extracomment> <extracomment>This conversation and all its messages will be deleted. Do You want to continue ?</extracomment>
<translation>This conversation and all its messages will be deleted. Do You want to continue ?</translation> <translation>This conversation and all its messages will be deleted. Do You want to continue ?</translation>
@ -1764,31 +1764,37 @@
<context> <context>
<name>ChatMessage</name> <name>ChatMessage</name>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="238"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="239"/>
<source>chat_message_copy_selection</source> <source>chat_message_copy_selection</source>
<extracomment>&quot;Copy selection&quot;</extracomment> <extracomment>&quot;Copy selection&quot;</extracomment>
<translation>Copy selection</translation> <translation>Copy selection</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="240"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="241"/>
<source>chat_message_copy</source> <source>chat_message_copy</source>
<extracomment>&quot;Copy&quot;</extracomment> <extracomment>&quot;Copy&quot;</extracomment>
<translation>Copy</translation> <translation>Copy</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="248"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="249"/>
<source>chat_message_copied_to_clipboard_title</source> <source>chat_message_copied_to_clipboard_title</source>
<extracomment>Copied</extracomment> <extracomment>Copied</extracomment>
<translation>Copied</translation> <translation>Copied</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="250"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="251"/>
<source>chat_message_copied_to_clipboard_toast</source> <source>chat_message_copied_to_clipboard_toast</source>
<extracomment>&quot;to clipboard&quot;</extracomment> <extracomment>&quot;to clipboard&quot;</extracomment>
<translation>in clipboard</translation> <translation>in clipboard</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="256"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="257"/>
<source>chat_message_see_status</source>
<extracomment>&quot;See message status&quot;</extracomment>
<translation>See message status</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="273"/>
<source>chat_message_delete</source> <source>chat_message_delete</source>
<extracomment>&quot;Delete&quot;</extracomment> <extracomment>&quot;Delete&quot;</extracomment>
<translation>Delete</translation> <translation>Delete</translation>
@ -1878,19 +1884,19 @@ Error</extracomment>
<context> <context>
<name>ChatMessageCore</name> <name>ChatMessageCore</name>
<message> <message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="101"/> <location filename="../../core/chat/message/ChatMessageCore.cpp" line="127"/>
<source>all_reactions_label</source> <source>all_reactions_label</source>
<extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment> <extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment>
<translation>Reactions</translation> <translation>Reactions</translation>
</message> </message>
<message> <message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="145"/> <location filename="../../core/chat/message/ChatMessageCore.cpp" line="173"/>
<source>info_toast_deleted_title</source> <source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment> <extracomment>Deleted</extracomment>
<translation>Deleted</translation> <translation>Deleted</translation>
</message> </message>
<message> <message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="147"/> <location filename="../../core/chat/message/ChatMessageCore.cpp" line="175"/>
<source>info_toast_deleted_message</source> <source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment> <extracomment>The message has been deleted</extracomment>
<translation>The message has been deleted</translation> <translation>The message has been deleted</translation>
@ -1943,13 +1949,13 @@ Error</extracomment>
<context> <context>
<name>ChatMessagesListView</name> <name>ChatMessagesListView</name>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="90"/> <location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="91"/>
<source>chat_message_list_encrypted_header_title</source> <source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment> <extracomment>End to end encrypted chat</extracomment>
<translation>End to end encrypted chat</translation> <translation>End to end encrypted chat</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="100"/> <location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="101"/>
<source>chat_message_list_encrypted_header_message</source> <source>chat_message_list_encrypted_header_message</source>
<extracomment>Les messages de cette conversation sont chiffrés de bout <extracomment>Les messages de cette conversation sont chiffrés de bout
en bout. Seul votre correspondant peut les déchiffrer.</extracomment> en bout. Seul votre correspondant peut les déchiffrer.</extracomment>
@ -1957,7 +1963,7 @@ Error</extracomment>
Only your correspondent can decrypt them.</translation> Only your correspondent can decrypt them.</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="184"/> <location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="186"/>
<source>chat_message_is_writing_info</source> <source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment> <extracomment>%1 is writing</extracomment>
<translation>%1 is writing</translation> <translation>%1 is writing</translation>
@ -3012,7 +3018,7 @@ Only your correspondent can decrypt them.</translation>
<translation>Apply</translation> <translation>Apply</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="129"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="130"/>
<source>group_infos_call</source> <source>group_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment> <extracomment>&quot;Appel&quot;</extracomment>
<translation>Call</translation> <translation>Call</translation>
@ -3030,77 +3036,72 @@ Only your correspondent can decrypt them.</translation>
<translation>Unmute</translation> <translation>Unmute</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="139"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="141"/>
<source>group_infos_meeting</source> <source>group_infos_meeting</source>
<extracomment>&quot;Réunion&quot;</extracomment> <extracomment>&quot;Réunion&quot;</extracomment>
<translation>Meeting</translation> <translation>Meeting</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="162"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="164"/>
<source>group_infos_participants</source> <source>group_infos_participants</source>
<translation>Participants (%1)</translation> <translation>Participants (%1)</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="169"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="171"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="174"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="176"/>
<source>group_infos_media_docs</source> <source>group_infos_media_docs</source>
<translation>Medias &amp; documents</translation> <translation>Medias &amp; documents</translation>
</message> </message>
<message> <message>
<source>group_infos_shared_media</source> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="186"/>
<extracomment>Shared medias</extracomment>
<translation type="vanished">Shared medias</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="184"/>
<source>group_infos_shared_docs</source> <source>group_infos_shared_docs</source>
<translation>Shared documents</translation> <translation>Shared documents</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="196"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="198"/>
<source>group_infos_other_actions</source> <source>group_infos_other_actions</source>
<translation>Other actions</translation> <translation>Other actions</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="201"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="203"/>
<source>group_infos_enable_ephemerals</source> <source>group_infos_enable_ephemerals</source>
<translation>Enable ephemeral messages</translation> <translation>Enable ephemeral messages</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="201"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="203"/>
<source>group_infos_disable_ephemerals</source> <source>group_infos_disable_ephemerals</source>
<translation>Disable ephemeral messages</translation> <translation>Disable ephemeral messages</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="230"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="232"/>
<source>group_infos_delete_history</source> <source>group_infos_delete_history</source>
<translation>Delete history</translation> <translation>Delete history</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="235"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="237"/>
<source>group_infos_delete_history_toast_title</source> <source>group_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment> <extracomment>Delete history ?</extracomment>
<translation>Delete history ?</translation> <translation>Delete history ?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="237"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="239"/>
<source>group_infos_delete_history_toast_message</source> <source>group_infos_delete_history_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment> <extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>All the messages will be removed from the chat room. Do you want to continue ?</translation> <translation>All the messages will be removed from the chat room. Do you want to continue ?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="211"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="213"/>
<source>group_infos_leave_room</source> <source>group_infos_leave_room</source>
<translation>Leave Chat Room</translation> <translation>Leave Chat Room</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="216"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="218"/>
<source>group_infos_leave_room_toast_title</source> <source>group_infos_leave_room_toast_title</source>
<extracomment>Leave Chat Room ?</extracomment> <extracomment>Leave Chat Room ?</extracomment>
<translation>Leave Chat Room ?</translation> <translation>Leave Chat Room ?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="218"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="220"/>
<source>group_infos_leave_room_toast_message</source> <source>group_infos_leave_room_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment> <extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>All the messages will be removed from the chat room. Do you want to continue ?</translation> <translation>All the messages will be removed from the chat room. Do you want to continue ?</translation>
@ -3469,102 +3470,102 @@ Only your correspondent can decrypt them.</translation>
<context> <context>
<name>MainLayout</name> <name>MainLayout</name>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="143"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="147"/>
<source>bottom_navigation_calls_label</source> <source>bottom_navigation_calls_label</source>
<extracomment>&quot;Appels&quot;</extracomment> <extracomment>&quot;Appels&quot;</extracomment>
<translation>Calls</translation> <translation>Calls</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="148"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="152"/>
<source>bottom_navigation_contacts_label</source> <source>bottom_navigation_contacts_label</source>
<extracomment>&quot;Contacts&quot;</extracomment> <extracomment>&quot;Contacts&quot;</extracomment>
<translation>Contacts</translation> <translation>Contacts</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="153"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="157"/>
<source>bottom_navigation_conversations_label</source> <source>bottom_navigation_conversations_label</source>
<extracomment>&quot;Conversations&quot;</extracomment> <extracomment>&quot;Conversations&quot;</extracomment>
<translation>Conversations</translation> <translation>Conversations</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="159"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="163"/>
<source>bottom_navigation_meetings_label</source> <source>bottom_navigation_meetings_label</source>
<extracomment>&quot;Réunions&quot;</extracomment> <extracomment>&quot;Réunions&quot;</extracomment>
<translation>Meetings</translation> <translation>Meetings</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="206"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="210"/>
<source>searchbar_placeholder_text</source> <source>searchbar_placeholder_text</source>
<extracomment>&quot;Rechercher un contact, appeler %1&quot;</extracomment> <extracomment>&quot;Rechercher un contact, appeler %1&quot;</extracomment>
<translation>Find contact, call %1</translation> <translation>Find contact, call %1</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="209"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="213"/>
<source>searchbar_placeholder_text_chat_feature_enabled</source> <source>searchbar_placeholder_text_chat_feature_enabled</source>
<extracomment>&quot;ou envoyer un message &quot;</extracomment> <extracomment>&quot;ou envoyer un message &quot;</extracomment>
<translation>or send message </translation> <translation>or send message </translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="315"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="319"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="449"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="453"/>
<source>contact_presence_status_disable_do_not_disturb</source> <source>contact_presence_status_disable_do_not_disturb</source>
<extracomment>&quot;Désactiver ne pas déranger&quot;</extracomment> <extracomment>&quot;Désactiver ne pas déranger&quot;</extracomment>
<translation>Disable do not disturb</translation> <translation>Disable do not disturb</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="371"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="375"/>
<source>information_popup_error_title</source> <source>information_popup_error_title</source>
<translation>Error</translation> <translation>Error</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="373"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="377"/>
<source>no_voicemail_uri_error_message</source> <source>no_voicemail_uri_error_message</source>
<extracomment>&quot;L&apos;URI de messagerie vocale n&apos;est pas définie.&quot;</extracomment> <extracomment>&quot;L&apos;URI de messagerie vocale n&apos;est pas définie.&quot;</extracomment>
<translation>The voicemail URI is not defined.</translation> <translation>The voicemail URI is not defined.</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="433"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="437"/>
<source>drawer_menu_manage_account</source> <source>drawer_menu_manage_account</source>
<extracomment>Mon compte</extracomment> <extracomment>Mon compte</extracomment>
<translation>My account</translation> <translation>My account</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="451"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="455"/>
<source>contact_presence_status_enable_do_not_disturb</source> <source>contact_presence_status_enable_do_not_disturb</source>
<extracomment>&quot;Activer ne pas déranger&quot;</extracomment> <extracomment>&quot;Activer ne pas déranger&quot;</extracomment>
<translation>Enable do not disturb</translation> <translation>Enable do not disturb</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="470"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="474"/>
<source>settings_title</source> <source>settings_title</source>
<translation>Settings</translation> <translation>Settings</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="488"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="492"/>
<source>recordings_title</source> <source>recordings_title</source>
<extracomment>&quot;Enregistrements&quot;</extracomment> <extracomment>&quot;Enregistrements&quot;</extracomment>
<translation>Records</translation> <translation>Records</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="503"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="507"/>
<source>help_title</source> <source>help_title</source>
<extracomment>&quot;Aide&quot;</extracomment> <extracomment>&quot;Aide&quot;</extracomment>
<translation>Help</translation> <translation>Help</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="520"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="524"/>
<source>help_quit_title</source> <source>help_quit_title</source>
<extracomment>&quot;Quitter l&apos;application&quot;</extracomment> <extracomment>&quot;Quitter l&apos;application&quot;</extracomment>
<translation>Quit the app</translation> <translation>Quit the app</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="525"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="529"/>
<source>quit_app_question</source> <source>quit_app_question</source>
<extracomment>&quot;Quitter %1 ?&quot;</extracomment> <extracomment>&quot;Quitter %1 ?&quot;</extracomment>
<translation>Quit %1 ?</translation> <translation>Quit %1 ?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="554"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="558"/>
<source>drawer_menu_add_account</source> <source>drawer_menu_add_account</source>
<extracomment>&quot;Ajouter un compte&quot;</extracomment> <extracomment>&quot;Ajouter un compte&quot;</extracomment>
<translation>Add an account</translation> <translation>Add an account</translation>
@ -3573,78 +3574,78 @@ Only your correspondent can decrypt them.</translation>
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="41"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="42"/>
<source>information_popup_connexion_succeed_title</source> <source>information_popup_connexion_succeed_title</source>
<extracomment>&quot;Connexion réussie&quot;</extracomment> <extracomment>&quot;Connexion réussie&quot;</extracomment>
<translation>Connection succeed</translation> <translation>Connection succeed</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="43"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="44"/>
<source>information_popup_connexion_succeed_message</source> <source>information_popup_connexion_succeed_message</source>
<extracomment>&quot;Vous êtes connecté en mode %1&quot;</extracomment> <extracomment>&quot;Vous êtes connecté en mode %1&quot;</extracomment>
<translation>You are logged in %1 mode</translation> <translation>You are logged in %1 mode</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="45"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="46"/>
<source>interoperable</source> <source>interoperable</source>
<extracomment>interopérable</extracomment> <extracomment>interopérable</extracomment>
<translation>interoperable</translation> <translation>interoperable</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="74"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="75"/>
<source>call_transfer_successful_toast_title</source> <source>call_transfer_successful_toast_title</source>
<extracomment>&quot;Appel transféré&quot;</extracomment> <extracomment>&quot;Appel transféré&quot;</extracomment>
<translation>Call forwarded</translation> <translation>Call forwarded</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="76"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="77"/>
<source>call_transfer_successful_toast_message</source> <source>call_transfer_successful_toast_message</source>
<extracomment>&quot;Votre correspondant a é transféré au contact sélectionné&quot;</extracomment> <extracomment>&quot;Votre correspondant a é transféré au contact sélectionné&quot;</extracomment>
<translation>Your correspondent has been transferred to the selected contact</translation> <translation>Your correspondent has been transferred to the selected contact</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="122"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="128"/>
<source>information_popup_success_title</source> <source>information_popup_success_title</source>
<translation>Saved</translation> <translation>Saved</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="124"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="130"/>
<source>information_popup_changes_saved</source> <source>information_popup_changes_saved</source>
<extracomment>&quot;Les changements ont é sauvegardés&quot;</extracomment> <extracomment>&quot;Les changements ont é sauvegardés&quot;</extracomment>
<translation>Changes have been saved</translation> <translation>Changes have been saved</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="209"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="215"/>
<source>captcha_validation_loading_message</source> <source>captcha_validation_loading_message</source>
<extracomment>&quot;Veuillez valider le captcha sur la page web&quot;</extracomment> <extracomment>&quot;Veuillez valider le captcha sur la page web&quot;</extracomment>
<translation>Please validate the captcha on the web page</translation> <translation>Please validate the captcha on the web page</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="217"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="223"/>
<source>assistant_register_error_title</source> <source>assistant_register_error_title</source>
<extracomment>&quot;Erreur lors de la création&quot;</extracomment> <extracomment>&quot;Erreur lors de la création&quot;</extracomment>
<translation>Error while creating</translation> <translation>Error while creating</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="236"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="242"/>
<source>assistant_register_success_title</source> <source>assistant_register_success_title</source>
<extracomment>&quot;Compte créé&quot;</extracomment> <extracomment>&quot;Compte créé&quot;</extracomment>
<translation>Account created</translation> <translation>Account created</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="238"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="244"/>
<source>assistant_register_success_message</source> <source>assistant_register_success_message</source>
<extracomment>&quot;Le compte a é créé. Vous pouvez maintenant vous connecter&quot;</extracomment> <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> <translation>The account has been created. You can now log in.</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="242"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="248"/>
<source>assistant_register_error_code</source> <source>assistant_register_error_code</source>
<extracomment>&quot;Erreur dans le code de validation&quot;</extracomment> <extracomment>&quot;Erreur dans le code de validation&quot;</extracomment>
<translation>Error in validation code</translation> <translation>Error in validation code</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="243"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="249"/>
<source>information_popup_error_title</source> <source>information_popup_error_title</source>
<translation>Error</translation> <translation>Error</translation>
</message> </message>
@ -3718,152 +3719,152 @@ Only your correspondent can decrypt them.</translation>
<translation>No meeting</translation> <translation>No meeting</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="78"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="89"/>
<source>meeting_schedule_cancel_dialog_message</source> <source>meeting_schedule_cancel_dialog_message</source>
<extracomment>&quot;Souhaitez-vous annuler et supprimer cette réunion ?&quot;</extracomment> <extracomment>&quot;Souhaitez-vous annuler et supprimer cette réunion ?&quot;</extracomment>
<translation>Would you like to cancel and delete this meeting?</translation> <translation>Would you like to cancel and delete this meeting?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="80"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="91"/>
<source>meeting_schedule_delete_dialog_message</source> <source>meeting_schedule_delete_dialog_message</source>
<extracomment>Souhaitez-vous supprimer cette réunion ?</extracomment> <extracomment>Souhaitez-vous supprimer cette réunion ?</extracomment>
<translation>Would you like to delete this meeting?</translation> <translation>Would you like to delete this meeting?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="86"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="97"/>
<source>meeting_schedule_cancel_and_delete_action</source> <source>meeting_schedule_cancel_and_delete_action</source>
<extracomment>&quot;Annuler et supprimer&quot;</extracomment> <extracomment>&quot;Annuler et supprimer&quot;</extracomment>
<translation>Cancel and delete</translation> <translation>Cancel and delete</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="95"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="106"/>
<source>meeting_schedule_delete_only_action</source> <source>meeting_schedule_delete_only_action</source>
<extracomment>&quot;Supprimer seulement&quot;</extracomment> <extracomment>&quot;Supprimer seulement&quot;</extracomment>
<translation>Delete only</translation> <translation>Delete only</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="97"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="108"/>
<source>meeting_schedule_delete_action</source> <source>meeting_schedule_delete_action</source>
<extracomment>&quot;Supprimer&quot;</extracomment> <extracomment>&quot;Supprimer&quot;</extracomment>
<translation>Delete</translation> <translation>Delete</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="106"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="117"/>
<source>back_action</source> <source>back_action</source>
<extracomment>Retour</extracomment> <extracomment>Retour</extracomment>
<translation>Back</translation> <translation>Back</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="149"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="160"/>
<source>meetings_list_title</source> <source>meetings_list_title</source>
<extracomment>Réunions</extracomment> <extracomment>Réunions</extracomment>
<translation>Meetings</translation> <translation>Meetings</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="173"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="184"/>
<source>meetings_search_hint</source> <source>meetings_search_hint</source>
<extracomment>&quot;Rechercher une réunion&quot;</extracomment> <extracomment>&quot;Rechercher une réunion&quot;</extracomment>
<translation>Find meeting</translation> <translation>Find meeting</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="190"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="201"/>
<source>list_filter_no_result_found</source> <source>list_filter_no_result_found</source>
<extracomment>&quot;Aucun résultat&quot;</extracomment> <extracomment>&quot;Aucun résultat&quot;</extracomment>
<translation>No result</translation> <translation>No result</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="192"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="203"/>
<source>meetings_empty_list</source> <source>meetings_empty_list</source>
<extracomment>&quot;Aucune réunion&quot;</extracomment> <extracomment>&quot;Aucune réunion&quot;</extracomment>
<translation>No meeting</translation> <translation>No meeting</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="255"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="266"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="304"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="315"/>
<source>meeting_schedule_title</source> <source>meeting_schedule_title</source>
<extracomment>&quot;Nouvelle réunion&quot;</extracomment> <extracomment>&quot;Nouvelle réunion&quot;</extracomment>
<translation>New meeting</translation> <translation>New meeting</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="266"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="277"/>
<source>create</source> <source>create</source>
<translation>Create</translation> <translation>Create</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="273"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="284"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="277"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="288"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="316"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="327"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="418"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="429"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="421"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="432"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="470"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="481"/>
<source>information_popup_error_title</source> <source>information_popup_error_title</source>
<translation>Error</translation> <translation>Error</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="275"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="286"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="419"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="430"/>
<source>meeting_schedule_mandatory_field_not_filled_toast</source> <source>meeting_schedule_mandatory_field_not_filled_toast</source>
<extracomment>Veuillez saisir un titre et sélectionner au moins un participant</extracomment> <extracomment>Veuillez saisir un titre et sélectionner au moins un participant</extracomment>
<translation>Please fill the title and select at least one participant</translation> <translation>Please fill the title and select at least one participant</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="279"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="290"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="422"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="433"/>
<source>meeting_schedule_duration_error_toast</source> <source>meeting_schedule_duration_error_toast</source>
<extracomment>&quot;La fin de la conférence doit être plus récente que son début&quot;</extracomment> <extracomment>&quot;La fin de la conférence doit être plus récente que son début&quot;</extracomment>
<translation>The end of the conference must be more recent than its beginning</translation> <translation>The end of the conference must be more recent than its beginning</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="283"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="294"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="311"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="322"/>
<source>meeting_schedule_creation_in_progress</source> <source>meeting_schedule_creation_in_progress</source>
<extracomment>&quot;Création de la réunion en cours &quot;</extracomment> <extracomment>&quot;Création de la réunion en cours &quot;</extracomment>
<translation>Creation in progress</translation> <translation>Creation in progress</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="306"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="317"/>
<source>meeting_info_created_toast</source> <source>meeting_info_created_toast</source>
<extracomment>&quot;Réunion planifiée avec succès&quot;</extracomment> <extracomment>&quot;Réunion planifiée avec succès&quot;</extracomment>
<translation>Meeting successfully created</translation> <translation>Meeting successfully created</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="318"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="329"/>
<source>meeting_failed_to_schedule_toast</source> <source>meeting_failed_to_schedule_toast</source>
<extracomment>&quot;Échec de création de la réunion !&quot;</extracomment> <extracomment>&quot;Échec de création de la réunion !&quot;</extracomment>
<translation>Failed to create meeting!</translation> <translation>Failed to create meeting!</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="411"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="422"/>
<source>save</source> <source>save</source>
<translation>Save</translation> <translation>Save</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="461"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="472"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="688"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="699"/>
<source>saved</source> <source>saved</source>
<extracomment>&quot;Enregistré&quot;</extracomment> <extracomment>&quot;Enregistré&quot;</extracomment>
<translation>Saved</translation> <translation>Saved</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="463"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="474"/>
<source>meeting_info_updated_toast</source> <source>meeting_info_updated_toast</source>
<extracomment>&quot;Réunion mise à jour&quot;</extracomment> <extracomment>&quot;Réunion mise à jour&quot;</extracomment>
<translation>Meeting updated</translation> <translation>Meeting updated</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="468"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="479"/>
<source>meeting_schedule_edit_in_progress</source> <source>meeting_schedule_edit_in_progress</source>
<extracomment>&quot;Modification de la réunion en cours&quot;</extracomment> <extracomment>&quot;Modification de la réunion en cours&quot;</extracomment>
<translation>Meeting update in progress</translation> <translation>Meeting update in progress</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="472"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="483"/>
<source>meeting_failed_to_edit_toast</source> <source>meeting_failed_to_edit_toast</source>
<extracomment>&quot;Échec de la modification de la réunion !&quot;</extracomment> <extracomment>&quot;Échec de la modification de la réunion !&quot;</extracomment>
<translation>Failed to update meeting !</translation> <translation>Failed to update meeting !</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="509"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="520"/>
<source>meeting_schedule_add_participants_title</source> <source>meeting_schedule_add_participants_title</source>
<extracomment>&quot;Ajouter des participants&quot;</extracomment> <extracomment>&quot;Ajouter des participants&quot;</extracomment>
<translation>Add participants</translation> <translation>Add participants</translation>
@ -3875,12 +3876,12 @@ Only your correspondent can decrypt them.</translation>
<translation>Apply</translation> <translation>Apply</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="524"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="535"/>
<source>add</source> <source>add</source>
<translation>Add</translation> <translation>Add</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="534"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="545"/>
<source>group_call_participant_selected</source> <source>group_call_participant_selected</source>
<extracomment>&quot;%n participant(s) sélectionné(s)&quot;</extracomment> <extracomment>&quot;%n participant(s) sélectionné(s)&quot;</extracomment>
<translation> <translation>
@ -3889,31 +3890,31 @@ Only your correspondent can decrypt them.</translation>
</translation> </translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="619"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="630"/>
<source>meeting_info_delete</source> <source>meeting_info_delete</source>
<extracomment>&quot;Supprimer la réunion&quot;</extracomment> <extracomment>&quot;Supprimer la réunion&quot;</extracomment>
<translation>Delete meeting</translation> <translation>Delete meeting</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="690"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="701"/>
<source>meeting_address_copied_to_clipboard_toast</source> <source>meeting_address_copied_to_clipboard_toast</source>
<extracomment>&quot;Adresse de la réunion copiée&quot;</extracomment> <extracomment>&quot;Adresse de la réunion copiée&quot;</extracomment>
<translation>Meeting URI copied</translation> <translation>Meeting URI copied</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="725"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="736"/>
<source>meeting_schedule_timezone_title</source> <source>meeting_schedule_timezone_title</source>
<extracomment>&quot;Fuseau horaire&quot;</extracomment> <extracomment>&quot;Fuseau horaire&quot;</extracomment>
<translation>Timezone</translation> <translation>Timezone</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="818"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="829"/>
<source>meeting_info_organizer_label</source> <source>meeting_info_organizer_label</source>
<extracomment>&quot;Organisateur&quot;</extracomment> <extracomment>&quot;Organisateur&quot;</extracomment>
<translation>Organizer</translation> <translation>Organizer</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="835"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="846"/>
<source>meeting_info_join_title</source> <source>meeting_info_join_title</source>
<extracomment>&quot;Rejoindre la réunion&quot;</extracomment> <extracomment>&quot;Rejoindre la réunion&quot;</extracomment>
<translation>Join meeting</translation> <translation>Join meeting</translation>
@ -3941,15 +3942,30 @@ Only your correspondent can decrypt them.</translation>
</message> </message>
</context> </context>
<context> <context>
<name>MessageReactionsInfos</name> <name>MessageImdnStatusInfos</name>
<message> <message>
<location filename="../../view/Page/Layout/Chat/MessageReactionsInfos.qml" line="28"/> <location filename="../../view/Page/Layout/Chat/MessageImdnStatusInfos.qml" line="11"/>
<source>message_details_status title</source> <source>message_details_status_title</source>
<extracomment>Message status</extracomment> <extracomment>Message status</extracomment>
<translation>Message status</translation> <translation>Message status</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/MessageReactionsInfos.qml" line="91"/> <location filename="../../view/Page/Layout/Chat/MessageImdnStatusInfos.qml" line="47"/>
<source>click_to_delete_reaction_info</source>
<extracomment>Click to delete</extracomment>
<translation>Click to delete</translation>
</message>
</context>
<context>
<name>MessageReactionsInfos</name>
<message>
<location filename="../../view/Page/Layout/Chat/MessageReactionsInfos.qml" line="12"/>
<source>message_details_reactions_title</source>
<extracomment>Reactions</extracomment>
<translation>Reactions</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/MessageReactionsInfos.qml" line="59"/>
<source>click_to_delete_reaction_info</source> <source>click_to_delete_reaction_info</source>
<extracomment>Click to delete</extracomment> <extracomment>Click to delete</extracomment>
<translation>Click to delete</translation> <translation>Click to delete</translation>
@ -4355,31 +4371,91 @@ Only your correspondent can decrypt them.</translation>
<translation>Post quantum ZRTP</translation> <translation>Post quantum ZRTP</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="184"/> <location filename="../../tool/LinphoneEnums.cpp" line="125"/>
<source>message_state_in_progress</source>
<extracomment>&quot;delivery in progress&quot;</extracomment>
<translation>delivery in progress</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="128"/>
<source>message_state_delivered</source>
<extracomment>sent</extracomment>
<translation>sent</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="131"/>
<source>message_state_not_delivered</source>
<extracomment>error</extracomment>
<translation>error</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="134"/>
<source>message_state_file_transfer_error</source>
<extracomment>cannot get file from server</extracomment>
<translation>cannot get file from server</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="137"/>
<source>message_state_file_transfer_done</source>
<extracomment>file transfer has been completed successfully</extracomment>
<translation>file transfer has been completed successfully</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="140"/>
<source>message_state_delivered_to_user</source>
<extracomment>received</extracomment>
<translation>received</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="143"/>
<source>message_state_displayed</source>
<extracomment>read</extracomment>
<translation>read</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="146"/>
<source>message_state_file_transfer__in_progress</source>
<extracomment>file transfer in progress</extracomment>
<translation>file transfer in progress</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="149"/>
<source>message_state_pending_delivery</source>
<extracomment>pending delivery</extracomment>
<translation>pending delivery</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="152"/>
<source>message_state_file_transfer_cancelling</source>
<extracomment>file transfer canceled</extracomment>
<translation>file transfer canceled</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="219"/>
<source>incoming</source> <source>incoming</source>
<extracomment>&quot;Entrant&quot;</extracomment> <extracomment>&quot;Entrant&quot;</extracomment>
<translation>Incoming</translation> <translation>Incoming</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="187"/> <location filename="../../tool/LinphoneEnums.cpp" line="222"/>
<source>outgoing</source> <source>outgoing</source>
<extracomment>&quot;Sortant&quot;</extracomment> <extracomment>&quot;Sortant&quot;</extracomment>
<translation>Outgoing</translation> <translation>Outgoing</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="213"/> <location filename="../../tool/LinphoneEnums.cpp" line="248"/>
<source>conference_layout_active_speaker</source> <source>conference_layout_active_speaker</source>
<extracomment>&quot;Participant actif&quot;</extracomment> <extracomment>&quot;Participant actif&quot;</extracomment>
<translation>Active speaker</translation> <translation>Active speaker</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="215"/> <location filename="../../tool/LinphoneEnums.cpp" line="250"/>
<source>conference_layout_grid</source> <source>conference_layout_grid</source>
<extracomment>&quot;Mosaïque&quot;</extracomment> <extracomment>&quot;Mosaïque&quot;</extracomment>
<translation>Grid</translation> <translation>Grid</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="217"/> <location filename="../../tool/LinphoneEnums.cpp" line="252"/>
<source>conference_layout_audio_only</source> <source>conference_layout_audio_only</source>
<extracomment>&quot;Audio uniquement&quot;</extracomment> <extracomment>&quot;Audio uniquement&quot;</extracomment>
<translation>Audio only</translation> <translation>Audio only</translation>

View file

@ -13,13 +13,13 @@
<context> <context>
<name>AbstractWindow</name> <name>AbstractWindow</name>
<message> <message>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="78"/> <location filename="../../view/Page/Window/AbstractWindow.qml" line="80"/>
<source>contact_dialog_pick_phone_number_or_sip_address_title</source> <source>contact_dialog_pick_phone_number_or_sip_address_title</source>
<extracomment>&quot;Choisissez un numéro ou adresse SIP&quot;</extracomment> <extracomment>&quot;Choisissez un numéro ou adresse SIP&quot;</extracomment>
<translation>Choisissez un numéro ou adresse SIP</translation> <translation>Choisissez un numéro ou adresse SIP</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/AbstractWindow.qml" line="277"/> <location filename="../../view/Page/Window/AbstractWindow.qml" line="279"/>
<source>fps_counter</source> <source>fps_counter</source>
<translation>%1 FPS</translation> <translation>%1 FPS</translation>
</message> </message>
@ -523,7 +523,7 @@
<context> <context>
<name>App</name> <name>App</name>
<message> <message>
<location filename="../../core/App.cpp" line="338"/> <location filename="../../core/App.cpp" line="337"/>
<source>remote_provisioning_dialog</source> <source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment> <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> <translation>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</translation>
@ -1720,18 +1720,18 @@
<context> <context>
<name>ChatListView</name> <name>ChatListView</name>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="269"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="270"/>
<source>chat_message_is_writing_info</source> <source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment> <extracomment>%1 is writing</extracomment>
<translation>%1 est en train d&apos;écrire</translation> <translation>%1 est en train d&apos;écrire</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="271"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="272"/>
<source>chat_message_draft_sending_text</source> <source>chat_message_draft_sending_text</source>
<translation>Brouillon : %1</translation> <translation>Brouillon : %1</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="340"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="341"/>
<source>chat_room_delete</source> <source>chat_room_delete</source>
<extracomment>&quot;Supprimer&quot;</extracomment> <extracomment>&quot;Supprimer&quot;</extracomment>
<translation>Supprimer</translation> <translation>Supprimer</translation>
@ -1749,13 +1749,13 @@
<translation>Enlever la sourdine </translation> <translation>Enlever la sourdine </translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="346"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="347"/>
<source>chat_list_delete_chat_popup_title</source> <source>chat_list_delete_chat_popup_title</source>
<extracomment>Delete the conversation ?</extracomment> <extracomment>Delete the conversation ?</extracomment>
<translation>Supprimer la conversation ?</translation> <translation>Supprimer la conversation ?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatListView.qml" line="348"/> <location filename="../../view/Control/Display/Chat/ChatListView.qml" line="349"/>
<source>chat_list_delete_chat_popup_message</source> <source>chat_list_delete_chat_popup_message</source>
<extracomment>This conversation and all its messages will be deleted. Do You want to continue ?</extracomment> <extracomment>This conversation and all its messages will be deleted. Do You want to continue ?</extracomment>
<translation>La conversation et tous ses messages seront supprimés. Souhaitez-vous continuer ?</translation> <translation>La conversation et tous ses messages seront supprimés. Souhaitez-vous continuer ?</translation>
@ -1764,31 +1764,37 @@
<context> <context>
<name>ChatMessage</name> <name>ChatMessage</name>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="238"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="239"/>
<source>chat_message_copy_selection</source> <source>chat_message_copy_selection</source>
<extracomment>&quot;Copy selection&quot;</extracomment> <extracomment>&quot;Copy selection&quot;</extracomment>
<translation>Copier la sélection</translation> <translation>Copier la sélection</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="240"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="241"/>
<source>chat_message_copy</source> <source>chat_message_copy</source>
<extracomment>&quot;Copy&quot;</extracomment> <extracomment>&quot;Copy&quot;</extracomment>
<translation>Copier</translation> <translation>Copier</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="248"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="249"/>
<source>chat_message_copied_to_clipboard_title</source> <source>chat_message_copied_to_clipboard_title</source>
<extracomment>Copied</extracomment> <extracomment>Copied</extracomment>
<translation>Copié</translation> <translation>Copié</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="250"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="251"/>
<source>chat_message_copied_to_clipboard_toast</source> <source>chat_message_copied_to_clipboard_toast</source>
<extracomment>&quot;to clipboard&quot;</extracomment> <extracomment>&quot;to clipboard&quot;</extracomment>
<translation>dans le presse-papiers</translation> <translation>dans le presse-papiers</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="256"/> <location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="257"/>
<source>chat_message_see_status</source>
<extracomment>&quot;See message status&quot;</extracomment>
<translation>Voir les statuts du message</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="273"/>
<source>chat_message_delete</source> <source>chat_message_delete</source>
<extracomment>&quot;Delete&quot;</extracomment> <extracomment>&quot;Delete&quot;</extracomment>
<translation>Supprimer</translation> <translation>Supprimer</translation>
@ -1878,19 +1884,19 @@ Error</extracomment>
<context> <context>
<name>ChatMessageCore</name> <name>ChatMessageCore</name>
<message> <message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="101"/> <location filename="../../core/chat/message/ChatMessageCore.cpp" line="127"/>
<source>all_reactions_label</source> <source>all_reactions_label</source>
<extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment> <extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment>
<translation>Réactions</translation> <translation>Réactions</translation>
</message> </message>
<message> <message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="145"/> <location filename="../../core/chat/message/ChatMessageCore.cpp" line="173"/>
<source>info_toast_deleted_title</source> <source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment> <extracomment>Deleted</extracomment>
<translation>Supprimé</translation> <translation>Supprimé</translation>
</message> </message>
<message> <message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="147"/> <location filename="../../core/chat/message/ChatMessageCore.cpp" line="175"/>
<source>info_toast_deleted_message</source> <source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment> <extracomment>The message has been deleted</extracomment>
<translation>Le message a é supprimé</translation> <translation>Le message a é supprimé</translation>
@ -1943,13 +1949,13 @@ Error</extracomment>
<context> <context>
<name>ChatMessagesListView</name> <name>ChatMessagesListView</name>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="90"/> <location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="91"/>
<source>chat_message_list_encrypted_header_title</source> <source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment> <extracomment>End to end encrypted chat</extracomment>
<translation>Conversation chiffrée de bout en bout</translation> <translation>Conversation chiffrée de bout en bout</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="100"/> <location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="101"/>
<source>chat_message_list_encrypted_header_message</source> <source>chat_message_list_encrypted_header_message</source>
<extracomment>Les messages de cette conversation sont chiffrés de bout <extracomment>Les messages de cette conversation sont chiffrés de bout
en bout. Seul votre correspondant peut les déchiffrer.</extracomment> en bout. Seul votre correspondant peut les déchiffrer.</extracomment>
@ -1957,7 +1963,7 @@ Error</extracomment>
en bout. Seul votre correspondant peut les déchiffrer.</translation> en bout. Seul votre correspondant peut les déchiffrer.</translation>
</message> </message>
<message> <message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="184"/> <location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="186"/>
<source>chat_message_is_writing_info</source> <source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment> <extracomment>%1 is writing</extracomment>
<translation>%1 est en train d&apos;écrire</translation> <translation>%1 est en train d&apos;écrire</translation>
@ -3012,7 +3018,7 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<translation>Appliquer</translation> <translation>Appliquer</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="129"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="130"/>
<source>group_infos_call</source> <source>group_infos_call</source>
<extracomment>&quot;Appel&quot;</extracomment> <extracomment>&quot;Appel&quot;</extracomment>
<translation>Appel</translation> <translation>Appel</translation>
@ -3030,77 +3036,72 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<translation>Réactiver les notifications</translation> <translation>Réactiver les notifications</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="139"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="141"/>
<source>group_infos_meeting</source> <source>group_infos_meeting</source>
<extracomment>&quot;Réunion&quot;</extracomment> <extracomment>&quot;Réunion&quot;</extracomment>
<translation>Réunion</translation> <translation>Réunion</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="162"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="164"/>
<source>group_infos_participants</source> <source>group_infos_participants</source>
<translation>Participants (%1)</translation> <translation>Participants (%1)</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="169"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="171"/>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="174"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="176"/>
<source>group_infos_media_docs</source> <source>group_infos_media_docs</source>
<translation>Medias &amp; documents</translation> <translation>Medias &amp; documents</translation>
</message> </message>
<message> <message>
<source>group_infos_shared_media</source> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="186"/>
<extracomment>Shared medias</extracomment>
<translation type="vanished">Médias partagés</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="184"/>
<source>group_infos_shared_docs</source> <source>group_infos_shared_docs</source>
<translation>Documents partagés</translation> <translation>Documents partagés</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="196"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="198"/>
<source>group_infos_other_actions</source> <source>group_infos_other_actions</source>
<translation>Autres actions</translation> <translation>Autres actions</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="201"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="203"/>
<source>group_infos_enable_ephemerals</source> <source>group_infos_enable_ephemerals</source>
<translation>Activer les messages éphémères</translation> <translation>Activer les messages éphémères</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="201"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="203"/>
<source>group_infos_disable_ephemerals</source> <source>group_infos_disable_ephemerals</source>
<translation>Désactiver les messages éphémères</translation> <translation>Désactiver les messages éphémères</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="230"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="232"/>
<source>group_infos_delete_history</source> <source>group_infos_delete_history</source>
<translation>Supprimer l&apos;historique</translation> <translation>Supprimer l&apos;historique</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="235"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="237"/>
<source>group_infos_delete_history_toast_title</source> <source>group_infos_delete_history_toast_title</source>
<extracomment>Delete history ?</extracomment> <extracomment>Delete history ?</extracomment>
<translation>Supprimer l&apos;historique ?</translation> <translation>Supprimer l&apos;historique ?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="237"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="239"/>
<source>group_infos_delete_history_toast_message</source> <source>group_infos_delete_history_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment> <extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>Tous les messages seront supprimés. Souhaitez-vous continuer ?</translation> <translation>Tous les messages seront supprimés. Souhaitez-vous continuer ?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="211"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="213"/>
<source>group_infos_leave_room</source> <source>group_infos_leave_room</source>
<translation>Quitter la conversation</translation> <translation>Quitter la conversation</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="216"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="218"/>
<source>group_infos_leave_room_toast_title</source> <source>group_infos_leave_room_toast_title</source>
<extracomment>Leave Chat Room ?</extracomment> <extracomment>Leave Chat Room ?</extracomment>
<translation>Quitter la conversation ?</translation> <translation>Quitter la conversation ?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="218"/> <location filename="../../view/Page/Layout/Chat/GroupConversationInfos.qml" line="220"/>
<source>group_infos_leave_room_toast_message</source> <source>group_infos_leave_room_toast_message</source>
<extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment> <extracomment>All the messages will be removed from the chat room. Do you want to continue ?</extracomment>
<translation>Vous ne recevrez ni pourrez envoyer des messages dans cette conversation, quitter ?</translation> <translation>Vous ne recevrez ni pourrez envoyer des messages dans cette conversation, quitter ?</translation>
@ -3469,102 +3470,102 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<context> <context>
<name>MainLayout</name> <name>MainLayout</name>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="143"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="147"/>
<source>bottom_navigation_calls_label</source> <source>bottom_navigation_calls_label</source>
<extracomment>&quot;Appels&quot;</extracomment> <extracomment>&quot;Appels&quot;</extracomment>
<translation>Appels</translation> <translation>Appels</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="148"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="152"/>
<source>bottom_navigation_contacts_label</source> <source>bottom_navigation_contacts_label</source>
<extracomment>&quot;Contacts&quot;</extracomment> <extracomment>&quot;Contacts&quot;</extracomment>
<translation>Contacts</translation> <translation>Contacts</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="153"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="157"/>
<source>bottom_navigation_conversations_label</source> <source>bottom_navigation_conversations_label</source>
<extracomment>&quot;Conversations&quot;</extracomment> <extracomment>&quot;Conversations&quot;</extracomment>
<translation>Conversations</translation> <translation>Conversations</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="159"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="163"/>
<source>bottom_navigation_meetings_label</source> <source>bottom_navigation_meetings_label</source>
<extracomment>&quot;Réunions&quot;</extracomment> <extracomment>&quot;Réunions&quot;</extracomment>
<translation>Réunions</translation> <translation>Réunions</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="206"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="210"/>
<source>searchbar_placeholder_text</source> <source>searchbar_placeholder_text</source>
<extracomment>&quot;Rechercher un contact, appeler %1&quot;</extracomment> <extracomment>&quot;Rechercher un contact, appeler %1&quot;</extracomment>
<translation>Rechercher un contact, appeler %1</translation> <translation>Rechercher un contact, appeler %1</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="209"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="213"/>
<source>searchbar_placeholder_text_chat_feature_enabled</source> <source>searchbar_placeholder_text_chat_feature_enabled</source>
<extracomment>&quot;ou envoyer un message &quot;</extracomment> <extracomment>&quot;ou envoyer un message &quot;</extracomment>
<translation>ou envoyer un message </translation> <translation>ou envoyer un message </translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="315"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="319"/>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="449"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="453"/>
<source>contact_presence_status_disable_do_not_disturb</source> <source>contact_presence_status_disable_do_not_disturb</source>
<extracomment>&quot;Désactiver ne pas déranger&quot;</extracomment> <extracomment>&quot;Désactiver ne pas déranger&quot;</extracomment>
<translation>Désactiver ne pas déranger</translation> <translation>Désactiver ne pas déranger</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="371"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="375"/>
<source>information_popup_error_title</source> <source>information_popup_error_title</source>
<translation>Erreur</translation> <translation>Erreur</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="373"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="377"/>
<source>no_voicemail_uri_error_message</source> <source>no_voicemail_uri_error_message</source>
<extracomment>&quot;L&apos;URI de messagerie vocale n&apos;est pas définie.&quot;</extracomment> <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> <translation>L&apos;URI de messagerie vocale n&apos;est pas définie.</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="433"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="437"/>
<source>drawer_menu_manage_account</source> <source>drawer_menu_manage_account</source>
<extracomment>Mon compte</extracomment> <extracomment>Mon compte</extracomment>
<translation>Mon compte</translation> <translation>Mon compte</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="451"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="455"/>
<source>contact_presence_status_enable_do_not_disturb</source> <source>contact_presence_status_enable_do_not_disturb</source>
<extracomment>&quot;Activer ne pas déranger&quot;</extracomment> <extracomment>&quot;Activer ne pas déranger&quot;</extracomment>
<translation>Activer ne pas déranger</translation> <translation>Activer ne pas déranger</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="470"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="474"/>
<source>settings_title</source> <source>settings_title</source>
<translation>Paramètres</translation> <translation>Paramètres</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="488"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="492"/>
<source>recordings_title</source> <source>recordings_title</source>
<extracomment>&quot;Enregistrements&quot;</extracomment> <extracomment>&quot;Enregistrements&quot;</extracomment>
<translation>Enregistrements</translation> <translation>Enregistrements</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="503"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="507"/>
<source>help_title</source> <source>help_title</source>
<extracomment>&quot;Aide&quot;</extracomment> <extracomment>&quot;Aide&quot;</extracomment>
<translation>Aide</translation> <translation>Aide</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="520"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="524"/>
<source>help_quit_title</source> <source>help_quit_title</source>
<extracomment>&quot;Quitter l&apos;application&quot;</extracomment> <extracomment>&quot;Quitter l&apos;application&quot;</extracomment>
<translation>Quitter l&apos;application</translation> <translation>Quitter l&apos;application</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="525"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="529"/>
<source>quit_app_question</source> <source>quit_app_question</source>
<extracomment>&quot;Quitter %1 ?&quot;</extracomment> <extracomment>&quot;Quitter %1 ?&quot;</extracomment>
<translation>Quitter %1 ?</translation> <translation>Quitter %1 ?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Main/MainLayout.qml" line="554"/> <location filename="../../view/Page/Layout/Main/MainLayout.qml" line="558"/>
<source>drawer_menu_add_account</source> <source>drawer_menu_add_account</source>
<extracomment>&quot;Ajouter un compte&quot;</extracomment> <extracomment>&quot;Ajouter un compte&quot;</extracomment>
<translation>Ajouter un compte</translation> <translation>Ajouter un compte</translation>
@ -3573,78 +3574,78 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="41"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="42"/>
<source>information_popup_connexion_succeed_title</source> <source>information_popup_connexion_succeed_title</source>
<extracomment>&quot;Connexion réussie&quot;</extracomment> <extracomment>&quot;Connexion réussie&quot;</extracomment>
<translation>Connexion réussie</translation> <translation>Connexion réussie</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="43"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="44"/>
<source>information_popup_connexion_succeed_message</source> <source>information_popup_connexion_succeed_message</source>
<extracomment>&quot;Vous êtes connecté en mode %1&quot;</extracomment> <extracomment>&quot;Vous êtes connecté en mode %1&quot;</extracomment>
<translation>Vous êtes connecté en mode %1</translation> <translation>Vous êtes connecté en mode %1</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="45"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="46"/>
<source>interoperable</source> <source>interoperable</source>
<extracomment>interopérable</extracomment> <extracomment>interopérable</extracomment>
<translation>interopérable</translation> <translation>interopérable</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="74"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="75"/>
<source>call_transfer_successful_toast_title</source> <source>call_transfer_successful_toast_title</source>
<extracomment>&quot;Appel transféré&quot;</extracomment> <extracomment>&quot;Appel transféré&quot;</extracomment>
<translation>Appel transféré</translation> <translation>Appel transféré</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="76"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="77"/>
<source>call_transfer_successful_toast_message</source> <source>call_transfer_successful_toast_message</source>
<extracomment>&quot;Votre correspondant a é transféré au contact sélectionné&quot;</extracomment> <extracomment>&quot;Votre correspondant a é transféré au contact sélectionné&quot;</extracomment>
<translation>Votre correspondant a é transféré au contact sélectionné</translation> <translation>Votre correspondant a é transféré au contact sélectionné</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="122"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="128"/>
<source>information_popup_success_title</source> <source>information_popup_success_title</source>
<translation>Enregistré</translation> <translation>Enregistré</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="124"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="130"/>
<source>information_popup_changes_saved</source> <source>information_popup_changes_saved</source>
<extracomment>&quot;Les changements ont é sauvegardés&quot;</extracomment> <extracomment>&quot;Les changements ont é sauvegardés&quot;</extracomment>
<translation>Les changements ont é sauvegardés</translation> <translation>Les changements ont é sauvegardés</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="209"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="215"/>
<source>captcha_validation_loading_message</source> <source>captcha_validation_loading_message</source>
<extracomment>&quot;Veuillez valider le captcha sur la page web&quot;</extracomment> <extracomment>&quot;Veuillez valider le captcha sur la page web&quot;</extracomment>
<translation>Veuillez valider le captcha sur la page web</translation> <translation>Veuillez valider le captcha sur la page web</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="217"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="223"/>
<source>assistant_register_error_title</source> <source>assistant_register_error_title</source>
<extracomment>&quot;Erreur lors de la création&quot;</extracomment> <extracomment>&quot;Erreur lors de la création&quot;</extracomment>
<translation>Erreur lors de la création</translation> <translation>Erreur lors de la création</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="236"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="242"/>
<source>assistant_register_success_title</source> <source>assistant_register_success_title</source>
<extracomment>&quot;Compte créé&quot;</extracomment> <extracomment>&quot;Compte créé&quot;</extracomment>
<translation>Compte créé</translation> <translation>Compte créé</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="238"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="244"/>
<source>assistant_register_success_message</source> <source>assistant_register_success_message</source>
<extracomment>&quot;Le compte a é créé. Vous pouvez maintenant vous connecter&quot;</extracomment> <extracomment>&quot;Le compte a é créé. Vous pouvez maintenant vous connecter&quot;</extracomment>
<translation>Le compte a é créé. Vous pouvez maintenant vous connecter</translation> <translation>Le compte a é créé. Vous pouvez maintenant vous connecter</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="242"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="248"/>
<source>assistant_register_error_code</source> <source>assistant_register_error_code</source>
<extracomment>&quot;Erreur dans le code de validation&quot;</extracomment> <extracomment>&quot;Erreur dans le code de validation&quot;</extracomment>
<translation>Erreur dans le code de validation</translation> <translation>Erreur dans le code de validation</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Window/Main/MainWindow.qml" line="243"/> <location filename="../../view/Page/Window/Main/MainWindow.qml" line="249"/>
<source>information_popup_error_title</source> <source>information_popup_error_title</source>
<translation>Erreur</translation> <translation>Erreur</translation>
</message> </message>
@ -3718,152 +3719,152 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<translation>Aucune réunion</translation> <translation>Aucune réunion</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="78"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="89"/>
<source>meeting_schedule_cancel_dialog_message</source> <source>meeting_schedule_cancel_dialog_message</source>
<extracomment>&quot;Souhaitez-vous annuler et supprimer cette réunion ?&quot;</extracomment> <extracomment>&quot;Souhaitez-vous annuler et supprimer cette réunion ?&quot;</extracomment>
<translation>Souhaitez-vous annuler et supprimer cette réunion ?</translation> <translation>Souhaitez-vous annuler et supprimer cette réunion ?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="80"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="91"/>
<source>meeting_schedule_delete_dialog_message</source> <source>meeting_schedule_delete_dialog_message</source>
<extracomment>Souhaitez-vous supprimer cette réunion ?</extracomment> <extracomment>Souhaitez-vous supprimer cette réunion ?</extracomment>
<translation>Souhaitez-vous supprimer cette réunion ?</translation> <translation>Souhaitez-vous supprimer cette réunion ?</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="86"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="97"/>
<source>meeting_schedule_cancel_and_delete_action</source> <source>meeting_schedule_cancel_and_delete_action</source>
<extracomment>&quot;Annuler et supprimer&quot;</extracomment> <extracomment>&quot;Annuler et supprimer&quot;</extracomment>
<translation>Annuler et supprimer</translation> <translation>Annuler et supprimer</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="95"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="106"/>
<source>meeting_schedule_delete_only_action</source> <source>meeting_schedule_delete_only_action</source>
<extracomment>&quot;Supprimer seulement&quot;</extracomment> <extracomment>&quot;Supprimer seulement&quot;</extracomment>
<translation>Supprimer seulement</translation> <translation>Supprimer seulement</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="97"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="108"/>
<source>meeting_schedule_delete_action</source> <source>meeting_schedule_delete_action</source>
<extracomment>&quot;Supprimer&quot;</extracomment> <extracomment>&quot;Supprimer&quot;</extracomment>
<translation>Supprimer</translation> <translation>Supprimer</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="106"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="117"/>
<source>back_action</source> <source>back_action</source>
<extracomment>Retour</extracomment> <extracomment>Retour</extracomment>
<translation>Retour</translation> <translation>Retour</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="149"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="160"/>
<source>meetings_list_title</source> <source>meetings_list_title</source>
<extracomment>Réunions</extracomment> <extracomment>Réunions</extracomment>
<translation>Réunions</translation> <translation>Réunions</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="173"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="184"/>
<source>meetings_search_hint</source> <source>meetings_search_hint</source>
<extracomment>&quot;Rechercher une réunion&quot;</extracomment> <extracomment>&quot;Rechercher une réunion&quot;</extracomment>
<translation>Rechercher une réunion</translation> <translation>Rechercher une réunion</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="190"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="201"/>
<source>list_filter_no_result_found</source> <source>list_filter_no_result_found</source>
<extracomment>&quot;Aucun résultat&quot;</extracomment> <extracomment>&quot;Aucun résultat&quot;</extracomment>
<translation>Aucun résultat</translation> <translation>Aucun résultat</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="192"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="203"/>
<source>meetings_empty_list</source> <source>meetings_empty_list</source>
<extracomment>&quot;Aucune réunion&quot;</extracomment> <extracomment>&quot;Aucune réunion&quot;</extracomment>
<translation>Aucune réunion</translation> <translation>Aucune réunion</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="255"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="266"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="304"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="315"/>
<source>meeting_schedule_title</source> <source>meeting_schedule_title</source>
<extracomment>&quot;Nouvelle réunion&quot;</extracomment> <extracomment>&quot;Nouvelle réunion&quot;</extracomment>
<translation>Nouvelle réunion</translation> <translation>Nouvelle réunion</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="266"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="277"/>
<source>create</source> <source>create</source>
<translation>Créer</translation> <translation>Créer</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="273"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="284"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="277"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="288"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="316"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="327"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="418"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="429"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="421"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="432"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="470"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="481"/>
<source>information_popup_error_title</source> <source>information_popup_error_title</source>
<translation>Erreur</translation> <translation>Erreur</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="275"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="286"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="419"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="430"/>
<source>meeting_schedule_mandatory_field_not_filled_toast</source> <source>meeting_schedule_mandatory_field_not_filled_toast</source>
<extracomment>Veuillez saisir un titre et sélectionner au moins un participant</extracomment> <extracomment>Veuillez saisir un titre et sélectionner au moins un participant</extracomment>
<translation>Veuillez saisir un titre et sélectionner au moins un participant</translation> <translation>Veuillez saisir un titre et sélectionner au moins un participant</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="279"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="290"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="422"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="433"/>
<source>meeting_schedule_duration_error_toast</source> <source>meeting_schedule_duration_error_toast</source>
<extracomment>&quot;La fin de la conférence doit être plus récente que son début&quot;</extracomment> <extracomment>&quot;La fin de la conférence doit être plus récente que son début&quot;</extracomment>
<translation>La fin de la conférence doit être plus récente que son début</translation> <translation>La fin de la conférence doit être plus récente que son début</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="283"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="294"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="311"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="322"/>
<source>meeting_schedule_creation_in_progress</source> <source>meeting_schedule_creation_in_progress</source>
<extracomment>&quot;Création de la réunion en cours &quot;</extracomment> <extracomment>&quot;Création de la réunion en cours &quot;</extracomment>
<translation>Création de la réunion en cours</translation> <translation>Création de la réunion en cours</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="306"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="317"/>
<source>meeting_info_created_toast</source> <source>meeting_info_created_toast</source>
<extracomment>&quot;Réunion planifiée avec succès&quot;</extracomment> <extracomment>&quot;Réunion planifiée avec succès&quot;</extracomment>
<translation>Réunion planifiée avec succès</translation> <translation>Réunion planifiée avec succès</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="318"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="329"/>
<source>meeting_failed_to_schedule_toast</source> <source>meeting_failed_to_schedule_toast</source>
<extracomment>&quot;Échec de création de la réunion !&quot;</extracomment> <extracomment>&quot;Échec de création de la réunion !&quot;</extracomment>
<translation>Échec de création de la réunion !</translation> <translation>Échec de création de la réunion !</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="411"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="422"/>
<source>save</source> <source>save</source>
<translation>Enregistrer</translation> <translation>Enregistrer</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="461"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="472"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="688"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="699"/>
<source>saved</source> <source>saved</source>
<extracomment>&quot;Enregistré&quot;</extracomment> <extracomment>&quot;Enregistré&quot;</extracomment>
<translation>Enregistré</translation> <translation>Enregistré</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="463"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="474"/>
<source>meeting_info_updated_toast</source> <source>meeting_info_updated_toast</source>
<extracomment>&quot;Réunion mise à jour&quot;</extracomment> <extracomment>&quot;Réunion mise à jour&quot;</extracomment>
<translation>Réunion mise à jour</translation> <translation>Réunion mise à jour</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="468"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="479"/>
<source>meeting_schedule_edit_in_progress</source> <source>meeting_schedule_edit_in_progress</source>
<extracomment>&quot;Modification de la réunion en cours&quot;</extracomment> <extracomment>&quot;Modification de la réunion en cours&quot;</extracomment>
<translation>Modification de la réunion en cours</translation> <translation>Modification de la réunion en cours</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="472"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="483"/>
<source>meeting_failed_to_edit_toast</source> <source>meeting_failed_to_edit_toast</source>
<extracomment>&quot;Échec de la modification de la réunion !&quot;</extracomment> <extracomment>&quot;Échec de la modification de la réunion !&quot;</extracomment>
<translation>Échec de la modification de la réunion !</translation> <translation>Échec de la modification de la réunion !</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="509"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="520"/>
<source>meeting_schedule_add_participants_title</source> <source>meeting_schedule_add_participants_title</source>
<extracomment>&quot;Ajouter des participants&quot;</extracomment> <extracomment>&quot;Ajouter des participants&quot;</extracomment>
<translation>Ajouter des participants</translation> <translation>Ajouter des participants</translation>
@ -3875,12 +3876,12 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<translation>Appliquer</translation> <translation>Appliquer</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="524"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="535"/>
<source>add</source> <source>add</source>
<translation>Ajouter</translation> <translation>Ajouter</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="534"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="545"/>
<source>group_call_participant_selected</source> <source>group_call_participant_selected</source>
<extracomment>&quot;%n participant(s) sélectionné(s)&quot;</extracomment> <extracomment>&quot;%n participant(s) sélectionné(s)&quot;</extracomment>
<translation> <translation>
@ -3889,31 +3890,31 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
</translation> </translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="619"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="630"/>
<source>meeting_info_delete</source> <source>meeting_info_delete</source>
<extracomment>&quot;Supprimer la réunion&quot;</extracomment> <extracomment>&quot;Supprimer la réunion&quot;</extracomment>
<translation>Supprimer la réunion</translation> <translation>Supprimer la réunion</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="690"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="701"/>
<source>meeting_address_copied_to_clipboard_toast</source> <source>meeting_address_copied_to_clipboard_toast</source>
<extracomment>&quot;Adresse de la réunion copiée&quot;</extracomment> <extracomment>&quot;Adresse de la réunion copiée&quot;</extracomment>
<translation>Adresse de la réunion copiée</translation> <translation>Adresse de la réunion copiée</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="725"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="736"/>
<source>meeting_schedule_timezone_title</source> <source>meeting_schedule_timezone_title</source>
<extracomment>&quot;Fuseau horaire&quot;</extracomment> <extracomment>&quot;Fuseau horaire&quot;</extracomment>
<translation>Fuseau horaire</translation> <translation>Fuseau horaire</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="818"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="829"/>
<source>meeting_info_organizer_label</source> <source>meeting_info_organizer_label</source>
<extracomment>&quot;Organisateur&quot;</extracomment> <extracomment>&quot;Organisateur&quot;</extracomment>
<translation>Organisateur</translation> <translation>Organisateur</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="835"/> <location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="846"/>
<source>meeting_info_join_title</source> <source>meeting_info_join_title</source>
<extracomment>&quot;Rejoindre la réunion&quot;</extracomment> <extracomment>&quot;Rejoindre la réunion&quot;</extracomment>
<translation>Rejoindre la réunion</translation> <translation>Rejoindre la réunion</translation>
@ -3941,15 +3942,30 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
</message> </message>
</context> </context>
<context> <context>
<name>MessageReactionsInfos</name> <name>MessageImdnStatusInfos</name>
<message> <message>
<location filename="../../view/Page/Layout/Chat/MessageReactionsInfos.qml" line="28"/> <location filename="../../view/Page/Layout/Chat/MessageImdnStatusInfos.qml" line="11"/>
<source>message_details_status title</source> <source>message_details_status_title</source>
<extracomment>Message status</extracomment> <extracomment>Message status</extracomment>
<translation>Statut du message</translation> <translation>Statut du message</translation>
</message> </message>
<message> <message>
<location filename="../../view/Page/Layout/Chat/MessageReactionsInfos.qml" line="91"/> <location filename="../../view/Page/Layout/Chat/MessageImdnStatusInfos.qml" line="47"/>
<source>click_to_delete_reaction_info</source>
<extracomment>Click to delete</extracomment>
<translation>Appuyez pour supprimer</translation>
</message>
</context>
<context>
<name>MessageReactionsInfos</name>
<message>
<location filename="../../view/Page/Layout/Chat/MessageReactionsInfos.qml" line="12"/>
<source>message_details_reactions_title</source>
<extracomment>Reactions</extracomment>
<translation>Réactions</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/MessageReactionsInfos.qml" line="59"/>
<source>click_to_delete_reaction_info</source> <source>click_to_delete_reaction_info</source>
<extracomment>Click to delete</extracomment> <extracomment>Click to delete</extracomment>
<translation>Appuyez pour supprimer</translation> <translation>Appuyez pour supprimer</translation>
@ -4355,31 +4371,91 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<translation>ZRTP - Post quantique</translation> <translation>ZRTP - Post quantique</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="184"/> <location filename="../../tool/LinphoneEnums.cpp" line="125"/>
<source>message_state_in_progress</source>
<extracomment>&quot;delivery in progress&quot;</extracomment>
<translation>envoi en cours</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="128"/>
<source>message_state_delivered</source>
<extracomment>sent</extracomment>
<translation>envoyé</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="131"/>
<source>message_state_not_delivered</source>
<extracomment>error</extracomment>
<translation>en erreur</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="134"/>
<source>message_state_file_transfer_error</source>
<extracomment>cannot get file from server</extracomment>
<translation>impossible de récupérer le fichier depuis le serveur</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="137"/>
<source>message_state_file_transfer_done</source>
<extracomment>file transfer has been completed successfully</extracomment>
<translation>fichier transféré avec succès</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="140"/>
<source>message_state_delivered_to_user</source>
<extracomment>received</extracomment>
<translation>reçu</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="143"/>
<source>message_state_displayed</source>
<extracomment>read</extracomment>
<translation>lu</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="146"/>
<source>message_state_file_transfer__in_progress</source>
<extracomment>file transfer in progress</extracomment>
<translation>transfert du fichier en cours</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="149"/>
<source>message_state_pending_delivery</source>
<extracomment>pending delivery</extracomment>
<translation>envoi en attente</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="152"/>
<source>message_state_file_transfer_cancelling</source>
<extracomment>file transfer canceled</extracomment>
<translation>transfert du fichier annulé</translation>
</message>
<message>
<location filename="../../tool/LinphoneEnums.cpp" line="219"/>
<source>incoming</source> <source>incoming</source>
<extracomment>&quot;Entrant&quot;</extracomment> <extracomment>&quot;Entrant&quot;</extracomment>
<translation>Entrant</translation> <translation>Entrant</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="187"/> <location filename="../../tool/LinphoneEnums.cpp" line="222"/>
<source>outgoing</source> <source>outgoing</source>
<extracomment>&quot;Sortant&quot;</extracomment> <extracomment>&quot;Sortant&quot;</extracomment>
<translation>Sortant</translation> <translation>Sortant</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="213"/> <location filename="../../tool/LinphoneEnums.cpp" line="248"/>
<source>conference_layout_active_speaker</source> <source>conference_layout_active_speaker</source>
<extracomment>&quot;Participant actif&quot;</extracomment> <extracomment>&quot;Participant actif&quot;</extracomment>
<translation>Intervenant actif</translation> <translation>Intervenant actif</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="215"/> <location filename="../../tool/LinphoneEnums.cpp" line="250"/>
<source>conference_layout_grid</source> <source>conference_layout_grid</source>
<extracomment>&quot;Mosaïque&quot;</extracomment> <extracomment>&quot;Mosaïque&quot;</extracomment>
<translation>Mosaïque</translation> <translation>Mosaïque</translation>
</message> </message>
<message> <message>
<location filename="../../tool/LinphoneEnums.cpp" line="217"/> <location filename="../../tool/LinphoneEnums.cpp" line="252"/>
<source>conference_layout_audio_only</source> <source>conference_layout_audio_only</source>
<extracomment>&quot;Audio uniquement&quot;</extracomment> <extracomment>&quot;Audio uniquement&quot;</extracomment>
<translation>Audio uniquement</translation> <translation>Audio uniquement</translation>

View file

@ -118,6 +118,41 @@ LinphoneEnums::ChatMessageState LinphoneEnums::fromLinphone(const linphone::Chat
return static_cast<LinphoneEnums::ChatMessageState>(data); return static_cast<LinphoneEnums::ChatMessageState>(data);
} }
QString LinphoneEnums::toString(const LinphoneEnums::ChatMessageState &data) {
switch (data) {
case LinphoneEnums::ChatMessageState::StateInProgress:
//: "delivery in progress"
return QObject::tr("message_state_in_progress");
case LinphoneEnums::ChatMessageState::StateDelivered:
//: sent
return QObject::tr("message_state_delivered");
case LinphoneEnums::ChatMessageState::StateNotDelivered:
//: error
return QObject::tr("message_state_not_delivered");
case LinphoneEnums::ChatMessageState::StateFileTransferError:
//: cannot get file from server
return QObject::tr("message_state_file_transfer_error");
case LinphoneEnums::ChatMessageState::StateFileTransferDone:
//: file transfer has been completed successfully
return QObject::tr("message_state_file_transfer_done");
case LinphoneEnums::ChatMessageState::StateDeliveredToUser:
//: received
return QObject::tr("message_state_delivered_to_user");
case LinphoneEnums::ChatMessageState::StateDisplayed:
//: read
return QObject::tr("message_state_displayed");
case LinphoneEnums::ChatMessageState::StateFileTransferInProgress:
//: file transfer in progress
return QObject::tr("message_state_file_transfer__in_progress");
case LinphoneEnums::ChatMessageState::StatePendingDelivery:
//: pending delivery
return QObject::tr("message_state_pending_delivery");
case LinphoneEnums::ChatMessageState::StateFileTransferCancelling:
//: file transfer canceled
return QObject::tr("message_state_file_transfer_cancelling");
}
}
linphone::ChatRoom::State LinphoneEnums::toLinphone(const LinphoneEnums::ChatRoomState &data) { linphone::ChatRoom::State LinphoneEnums::toLinphone(const LinphoneEnums::ChatRoomState &data) {
return static_cast<linphone::ChatRoom::State>(data); return static_cast<linphone::ChatRoom::State>(data);
} }

View file

@ -97,12 +97,15 @@ enum class ChatMessageState {
StateFileTransferDone = int(linphone::ChatMessage::State::FileTransferDone), StateFileTransferDone = int(linphone::ChatMessage::State::FileTransferDone),
StateDeliveredToUser = int(linphone::ChatMessage::State::DeliveredToUser), StateDeliveredToUser = int(linphone::ChatMessage::State::DeliveredToUser),
StateDisplayed = int(linphone::ChatMessage::State::Displayed), StateDisplayed = int(linphone::ChatMessage::State::Displayed),
StateFileTransferInProgress = int(linphone::ChatMessage::State::FileTransferInProgress) StateFileTransferInProgress = int(linphone::ChatMessage::State::FileTransferInProgress),
StatePendingDelivery = int(linphone::ChatMessage::State::PendingDelivery),
StateFileTransferCancelling = int(linphone::ChatMessage::State::FileTransferCancelling)
}; };
Q_ENUM_NS(ChatMessageState) Q_ENUM_NS(ChatMessageState)
linphone::ChatMessage::State toLinphone(const LinphoneEnums::ChatMessageState &data); linphone::ChatMessage::State toLinphone(const LinphoneEnums::ChatMessageState &data);
LinphoneEnums::ChatMessageState fromLinphone(const linphone::ChatMessage::State &data); LinphoneEnums::ChatMessageState fromLinphone(const linphone::ChatMessage::State &data);
QString toString(const LinphoneEnums::ChatMessageState &data);
enum class ChatRoomState { enum class ChatRoomState {
None = int(linphone::ChatRoom::State::None), None = int(linphone::ChatRoom::State::None),

View file

@ -329,7 +329,8 @@ QString Utils::formatElapsedTime(int seconds, bool dotsSeparator) {
else return (h == 0 ? "" : hours + "h ") + (m == 0 ? "" : min + "min ") + sec + "s"; else return (h == 0 ? "" : hours + "h ") + (m == 0 ? "" : min + "min ") + sec + "s";
} }
QString Utils::formatDate(const QDateTime &date, bool includeTime, bool includeDateIfToday, QString format) { QString Utils::formatDate(QDateTime date, bool includeTime, bool includeDateIfToday, QString format) {
date = getOffsettedUTC(date);
QString dateDay; QString dateDay;
//: "Aujourd'hui" //: "Aujourd'hui"
if (date.date() == QDate::currentDate()) dateDay = tr("today"); if (date.date() == QDate::currentDate()) dateDay = tr("today");

View file

@ -90,7 +90,7 @@ public:
Q_INVOKABLE static QString createAvatar(const QUrl &fileUrl); // Return the avatar path Q_INVOKABLE static QString createAvatar(const QUrl &fileUrl); // Return the avatar path
Q_INVOKABLE static QString formatElapsedTime(int seconds, Q_INVOKABLE static QString formatElapsedTime(int seconds,
bool dotsSeparator = true); // Return the elapsed time formated bool dotsSeparator = true); // Return the elapsed time formated
Q_INVOKABLE static QString formatDate(const QDateTime &date, Q_INVOKABLE static QString formatDate(QDateTime date,
bool includeTime = true, bool includeTime = true,
bool includeDateIfToday = true, bool includeDateIfToday = true,
QString format = ""); // Return the date formated QString format = ""); // Return the date formated

View file

@ -154,6 +154,8 @@ list(APPEND _LINPHONEAPP_QML_FILES
view/Page/Layout/Settings/NetworkSettingsLayout.qml view/Page/Layout/Settings/NetworkSettingsLayout.qml
view/Page/Layout/Settings/AdvancedSettingsLayout.qml view/Page/Layout/Settings/AdvancedSettingsLayout.qml
view/Page/Layout/Chat/GroupConversationInfos.qml view/Page/Layout/Chat/GroupConversationInfos.qml
view/Page/Layout/Chat/MessageImdnStatusInfos.qml
view/Page/Layout/Chat/MessageInfosLayout.qml
view/Page/Layout/Chat/MessageReactionsInfos.qml view/Page/Layout/Chat/MessageReactionsInfos.qml
view/Page/Layout/Chat/OneOneConversationInfos.qml view/Page/Layout/Chat/OneOneConversationInfos.qml
view/Page/Layout/Chat/ChatInfoActionsGroup.qml view/Page/Layout/Chat/ChatInfoActionsGroup.qml

View file

@ -69,8 +69,8 @@ ColumnLayout {
} }
} }
PresenceNoteLayout { PresenceNoteLayout {
visible: contact.core.presenceNote.length > 0 && mainItem.useVerticalLayout visible: contact?.core.presenceNote.length > 0 && mainItem.useVerticalLayout
friendCore: contact.core friendCore: contact?.core || null
Layout.preferredWidth: 412 * DefaultStyle.dp Layout.preferredWidth: 412 * DefaultStyle.dp
Layout.preferredHeight: 85 * DefaultStyle.dp Layout.preferredHeight: 85 * DefaultStyle.dp
} }
@ -92,10 +92,10 @@ ColumnLayout {
Layout.fillWidth:true Layout.fillWidth:true
Layout.preferredHeight: 79 * DefaultStyle.dp Layout.preferredHeight: 79 * DefaultStyle.dp
color: 'transparent' color: 'transparent'
visible: contact.core.presenceNote.length > 0 && !mainItem.useVerticalLayout visible: contact && contact.core.presenceNote.length > 0 && !mainItem.useVerticalLayout
PresenceNoteLayout { PresenceNoteLayout {
anchors.centerIn: parent anchors.centerIn: parent
friendCore: contact.core friendCore: contact?.core || null
width: 412 * DefaultStyle.dp width: 412 * DefaultStyle.dp
height: 85 * DefaultStyle.dp height: 85 * DefaultStyle.dp
} }

View file

@ -57,15 +57,20 @@ Control.TabBar {
delay: 1000 delay: 1000
text: modelData text: modelData
} }
MouseArea{
anchors.fill: parent
cursorShape: tabButton.hovered ? Qt.PointingHandCursor: Qt.ArrowCursor
acceptedButtons: Qt.NoButton
}
background: Item { background: Item {
anchors.fill: parent anchors.fill: parent
visible: mainItem.currentIndex === index || tabButton.hovered
Rectangle { Rectangle {
id: tabBackground id: tabBackground
visible: mainItem.currentIndex === index
height: Math.round(5 * DefaultStyle.dp) height: Math.round(5 * DefaultStyle.dp)
color: DefaultStyle.main1_500_main color: mainItem.currentIndex === index ? DefaultStyle.main1_500_main : DefaultStyle.main2_400
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
@ -86,9 +91,12 @@ Control.TabBar {
contentItem: Text { contentItem: Text {
id: tabText id: tabText
width: Math.min(implicitWidth, mainItem.width / mainItem.model.length) width: Math.min(implicitWidth, mainItem.width / mainItem.model.length)
font.weight: mainItem.textWeight font {
pixelSize: mainItem.pixelSize
weight: mainItem.textWeight
capitalization: Font.Capitalize
}
color: mainItem.currentIndex === index ? DefaultStyle.main2_600 : DefaultStyle.main2_400 color: mainItem.currentIndex === index ? DefaultStyle.main2_600 : DefaultStyle.main2_400
font.pixelSize: mainItem.pixelSize
elide: Text.ElideRight elide: Text.ElideRight
maximumLineCount: 1 maximumLineCount: 1
text: modelData text: modelData

View file

@ -29,6 +29,7 @@ Control.Control {
signal messageDeletionRequested() signal messageDeletionRequested()
signal isFileHoveringChanged(bool isFileHovering) signal isFileHoveringChanged(bool isFileHovering)
signal showReactionsForMessageRequested() signal showReactionsForMessageRequested()
signal showImdnStatusForMessageRequested()
background: Item { background: Item {
anchors.fill: parent anchors.fill: parent
@ -241,14 +242,32 @@ Control.Control {
icon.source: AppIcons.copy icon.source: AppIcons.copy
// spacing: Math.round(10 * DefaultStyle.dp) // spacing: Math.round(10 * DefaultStyle.dp)
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredHeight: 45 * DefaultStyle.dp Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
onClicked: { onClicked: {
var success = UtilsCpp.copyToClipboard(chatBubbleContent.selectedText != "" ? chatBubbleContent.selectedText : mainItem.chatMessage.core.text) var success = UtilsCpp.copyToClipboard(chatBubbleContent.selectedText != "" ? chatBubbleContent.selectedText : mainItem.chatMessage.core.text)
//: Copied //: Copied
if (success) UtilsCpp.showInformationPopup(qsTr("chat_message_copied_to_clipboard_title"), if (success) UtilsCpp.showInformationPopup(qsTr("chat_message_copied_to_clipboard_title"),
//: "to clipboard" //: "to clipboard"
qsTr("chat_message_copied_to_clipboard_toast")) qsTr("chat_message_copied_to_clipboard_toast"))
} optionsMenu.close()
}
}
IconLabelButton {
inverseLayout: true
//: "See message status"
text: qsTr("chat_message_see_status")
icon.source: AppIcons.chatTeardropText
Layout.fillWidth: true
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
onClicked: {
mainItem.showImdnStatusForMessageRequested()
optionsMenu.close()
}
}
Rectangle {
Layout.fillWidth: true
Layout.preferredHeight: Math.min(1, Math.round(1 * DefaultStyle.dp))
color: DefaultStyle.main2_400
} }
IconLabelButton { IconLabelButton {
inverseLayout: true inverseLayout: true
@ -257,18 +276,13 @@ Control.Control {
icon.source: AppIcons.trashCan icon.source: AppIcons.trashCan
// spacing: Math.round(10 * DefaultStyle.dp) // spacing: Math.round(10 * DefaultStyle.dp)
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredHeight: 45 * DefaultStyle.dp Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
onClicked: { onClicked: {
mainItem.messageDeletionRequested() mainItem.messageDeletionRequested()
optionsMenu.close() optionsMenu.close()
} }
style: ButtonStyle.hoveredBackgroundRed style: ButtonStyle.hoveredBackgroundRed
} }
// Rectangle {
// Layout.fillWidth: true
// Layout.preferredHeight: Math.round(1 * DefaultStyle.dp)
// color: DefaultStyle.main2_200
// }
} }
} }
PopupButton { PopupButton {

View file

@ -15,6 +15,7 @@ ListView {
property ChatGui chat property ChatGui chat
property color backgroundColor property color backgroundColor
signal showReactionsForMessageRequested(ChatMessageGui chatMessage) signal showReactionsForMessageRequested(ChatMessageGui chatMessage)
signal showImdnStatusForMessageRequested(ChatMessageGui chatMessage)
Component.onCompleted: { Component.onCompleted: {
var index = eventLogProxy.findFirstUnreadIndex() var index = eventLogProxy.findFirstUnreadIndex()
@ -135,6 +136,7 @@ ListView {
onMessageDeletionRequested: modelData.core.lDelete() onMessageDeletionRequested: modelData.core.lDelete()
onShowReactionsForMessageRequested: mainItem.showReactionsForMessageRequested(modelData) onShowReactionsForMessageRequested: mainItem.showReactionsForMessageRequested(modelData)
onShowImdnStatusForMessageRequested: mainItem.showImdnStatusForMessageRequested(modelData)
} }
} }

View file

@ -156,6 +156,11 @@ RowLayout {
contentLoader.showingMessageReactions = true contentLoader.showingMessageReactions = true
detailsPanel.visible = true detailsPanel.visible = true
} }
onShowImdnStatusForMessageRequested: (chatMessage) => {
mainItem.chatMessage = chatMessage
contentLoader.showingImdnStatus = true
detailsPanel.visible = true
}
Popup { Popup {
id: emojiPickerPopup id: emojiPickerPopup
@ -322,7 +327,10 @@ RowLayout {
visible: false visible: false
Layout.fillHeight: true Layout.fillHeight: true
Layout.preferredWidth: Math.round(387 * DefaultStyle.dp) Layout.preferredWidth: Math.round(387 * DefaultStyle.dp)
onVisibleChanged: if(!visible) contentLoader.showingMessageReactions = false onVisibleChanged: if(!visible) {
contentLoader.showingMessageReactions = false
contentLoader.showingImdnStatus = false
}
background: Rectangle { background: Rectangle {
color: DefaultStyle.grey_0 color: DefaultStyle.grey_0
@ -332,13 +340,16 @@ RowLayout {
contentItem: Loader { contentItem: Loader {
id: contentLoader id: contentLoader
property bool showingMessageReactions: false property bool showingMessageReactions: false
property bool showingImdnStatus: false
anchors.top: parent.top anchors.top: parent.top
anchors.topMargin: Math.round(39 * DefaultStyle.dp) anchors.topMargin: Math.round(39 * DefaultStyle.dp)
sourceComponent: showingMessageReactions sourceComponent: showingMessageReactions
? messageReactionsComponent ? messageReactionsComponent
: mainItem.chat.core.isGroupChat : showingImdnStatus
? groupInfoComponent ? messageImdnStatusComponent
: oneToOneInfoComponent : mainItem.chat.core.isGroupChat
? groupInfoComponent
: oneToOneInfoComponent
active: detailsPanel.visible active: detailsPanel.visible
onLoaded: { onLoaded: {
if (contentLoader.item) { if (contentLoader.item) {
@ -371,5 +382,15 @@ RowLayout {
} }
} }
} }
Component {
id: messageImdnStatusComponent
MessageImdnStatusInfos {
chatMessageGui: mainItem.chatMessage
onGoBackRequested: {
detailsPanel.visible = false
mainItem.chatMessage = null
}
}
}
} }
} }

View file

@ -0,0 +1,74 @@
import QtCore
import QtQuick
import QtQuick.Layouts
import Linphone
import UtilsCpp
MessageInfosLayout {
id: mainItem
spacing: Math.round(25 * DefaultStyle.dp)
//: Message status
title: qsTr("message_details_status_title")
tabbarModel: chatMessageGui ? chatMessageGui.core.imdnStatusListAsString : []
listModel: ImdnStatusProxy {
imdnStatusList: chatMessageGui ? chatMessageGui.core.imdnStatusList : []
filter: chatMessageGui ? chatMessageGui.core.imdnStatusAsSingletons[mainItem.tabbar.currentIndex].state : ""
}
listView.delegate: Item {
id: listDelegate
width: listView.width
height: delegateIn.implicitHeight
property var contactObj: modelData ? UtilsCpp.findFriendByAddress(modelData.address) : null
property FriendGui contact: contactObj && contactObj.value || null
property var nameObj: modelData ? UtilsCpp.getDisplayName(modelData.address) : null
property string updateTime: UtilsCpp.isCurrentDay(modelData.lastUpdatedTime)
? UtilsCpp.toTimeString(modelData.lastUpdatedTime, "hh:mm")
: UtilsCpp.formatDate(modelData.lastUpdatedTime, true)
RowLayout {
id: delegateIn
anchors.fill: parent
spacing: Math.round(16 * DefaultStyle.dp)
Avatar {
Layout.alignment: Qt.AlignHCenter
contact: listDelegate.contact
displayNameVal: contact
? ""
: nameObj
? nameObj.value
: ""
Layout.preferredWidth: Math.round(45 * DefaultStyle.dp)
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
}
ColumnLayout {
spacing: 0
Text {
text: nameObj?.value || ""
font {
pixelSize: Typography.p1.pixelSize
weight: Typography.p1.weight
}
}
Text {
visible: listDelegate.contact
horizontalAlignment: Text.AlignLeft
Layout.fillWidth: true
text: listDelegate.contact ? listDelegate.contact.core.presenceStatus : ""
color: listDelegate.contact ? listDelegate.contact.core.presenceColor : 'transparent'
font {
pixelSize: Typography.p3.pixelSize
weight: Typography.p3.weight
}
}
}
Item{Layout.fillWidth: true}
Text {
text: listDelegate.updateTime
font {
pixelSize: Typography.p3.pixelSize
weight: Typography.p3.weight
}
}
}
}
}

View file

@ -0,0 +1,63 @@
import QtCore
import QtQuick
import QtQuick.Controls.Basic as Control
import QtQuick.Dialogs
import QtQuick.Effects
import QtQuick.Layouts
import Linphone
import UtilsCpp
import SettingsCpp
import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle
ColumnLayout {
id: mainItem
property string title
property ChatMessageGui chatMessageGui
property var tabbarModel
property var listModel
property var listDelegate
property alias tabbar: tabbar
property alias listView: listView
property var parentView
spacing: Math.round(25 * DefaultStyle.dp)
signal goBackRequested()
RowLayout {
BigButton {
icon.source: AppIcons.leftArrow
style: ButtonStyle.noBackground
onClicked: mainItem.goBackRequested()
}
Text {
text: mainItem.title
font {
pixelSize: Typography.h4.pixelSize
weight: Typography.h4.weight
}
}
}
ColumnLayout {
spacing: Math.round(21 * DefaultStyle.dp)
Layout.leftMargin: Math.round(16 * DefaultStyle.dp)
Layout.rightMargin: Math.round(16 * DefaultStyle.dp)
TabBar {
id: tabbar
Layout.fillWidth: true
model: mainItem.tabbarModel
pixelSize: Typography.h3m.pixelSize
textWeight: Typography.h3m.weight
}
ListView {
id: listView
Layout.fillWidth: true
Layout.fillHeight: true
spacing: Math.round(11 * DefaultStyle.dp)
model: mainItem.listModel
}
}
}

View file

@ -1,118 +1,77 @@
import QtCore import QtCore
import QtQuick import QtQuick
import QtQuick.Controls.Basic as Control
import QtQuick.Dialogs
import QtQuick.Effects
import QtQuick.Layouts import QtQuick.Layouts
import Linphone import Linphone
import UtilsCpp import UtilsCpp
import SettingsCpp
import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle
ColumnLayout { MessageInfosLayout {
id: mainItem id: mainItem
property ChatMessageGui chatMessageGui
property var parentView
spacing: Math.round(25 * DefaultStyle.dp) spacing: Math.round(25 * DefaultStyle.dp)
signal goBackRequested() //: Reactions
title: qsTr("message_details_reactions_title")
RowLayout { tabbarModel: chatMessageGui ? chatMessageGui.core.reactionsSingletonAsStrings : []
BigButton { listModel: EmojiProxy {
icon.source: AppIcons.leftArrow reactions: chatMessageGui ? chatMessageGui.core.reactions : []
style: ButtonStyle.noBackground // First index of reactionsSingletonAsStrings list is all reactions combined which does not appear
onClicked: mainItem.goBackRequested() // in reactionsSingleton list
} filter: tabbar.currentIndex >=1 && chatMessageGui && chatMessageGui.core.reactionsSingleton[tabbar.currentIndex-1].body || ""
Text {
//: Message status
text: qsTr("message_details_status title")
font {
pixelSize: Typography.h4.pixelSize
weight: Typography.h4.weight
}
}
} }
listView.delegate: Item {
ColumnLayout { width: listView.width
spacing: Math.round(11 * DefaultStyle.dp) height: delegateIn.implicitHeight
Layout.leftMargin: Math.round(16 * DefaultStyle.dp) property var contactObj: modelData ? UtilsCpp.findFriendByAddress(modelData.address) : null
Layout.rightMargin: Math.round(16 * DefaultStyle.dp) property var nameObj: modelData ? UtilsCpp.getDisplayName(modelData.address) : null
TabBar { property var isMeObj: modelData ? UtilsCpp.isMe(modelData.address) : null
id: tabbar MouseArea {
Layout.fillWidth: true anchors.fill: parent
model: mainItem.chatMessageGui ? mainItem.chatMessageGui.core.reactionsSingletonAsStrings : [] enabled: isMeObj && isMeObj.value
pixelSize: Typography.h3m.pixelSize cursorShape: containsMouse ? Qt.PointingHandCursor : Qt.ArrowCursor
textWeight: Typography.h3m.weight hoverEnabled: true
onClicked: mainItem.chatMessageGui.core.lRemoveReaction()
} }
RowLayout {
ListView { id: delegateIn
id: reactionsList anchors.fill: parent
Layout.fillWidth: true spacing: Math.round(16 * DefaultStyle.dp)
Layout.fillHeight: true Avatar {
spacing: Math.round(11 * DefaultStyle.dp) Layout.alignment: Qt.AlignHCenter
model: EmojiProxy { contact: contactObj?.value || null
reactions: mainItem.chatMessageGui ? mainItem.chatMessageGui.core.reactions : [] displayNameVal: contact
// First index of reactionsSingletonAsStrings list is all reactions combined which does not appear ? ""
// in reactionsSingleton list : nameObj
filter: tabbar.currentIndex >=1 && mainItem.chatMessageGui && mainItem.chatMessageGui.core.reactionsSingleton[tabbar.currentIndex-1].body || "" ? nameObj.value
: ""
Layout.preferredWidth: Math.round(45 * DefaultStyle.dp)
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
} }
delegate: Item { ColumnLayout {
width: reactionsList.width Text {
height: delegateIn.implicitHeight text: nameObj?.value || ""
property var contactObj: modelData ? UtilsCpp.findFriendByAddress(modelData.address) : null font {
property var nameObj: modelData ? UtilsCpp.getDisplayName(modelData.address) : null pixelSize: Typography.p1.pixelSize
property var isMeObj: modelData ? UtilsCpp.isMe(modelData.address) : null weight: Typography.p1.weight
MouseArea { }
anchors.fill: parent
enabled: isMeObj && isMeObj.value
cursorShape: containsMouse ? Qt.PointingHandCursor : Qt.ArrowCursor
hoverEnabled: true
onClicked: mainItem.chatMessageGui.core.lRemoveReaction()
} }
RowLayout { Text {
id: delegateIn visible: isMeObj && isMeObj.value
anchors.fill: parent //: Click to delete
spacing: Math.round(16 * DefaultStyle.dp) text: qsTr("click_to_delete_reaction_info")
Avatar { color: DefaultStyle.main2_400
Layout.alignment: Qt.AlignHCenter font {
contact: contactObj?.value || null pixelSize: Typography.p3.pixelSize
displayNameVal: contact weight: Typography.p3.weight
? ""
: nameObj
? nameObj.value
: ""
Layout.preferredWidth: Math.round(45 * DefaultStyle.dp)
Layout.preferredHeight: Math.round(45 * DefaultStyle.dp)
}
ColumnLayout {
Text {
text: nameObj?.value || ""
font {
pixelSize: Typography.p1.pixelSize
weight: Typography.p1.weight
}
}
Text {
visible: isMeObj && isMeObj.value
//: Click to delete
text: qsTr("click_to_delete_reaction_info")
color: DefaultStyle.main2_400
font {
pixelSize: Typography.p3.pixelSize
weight: Typography.p3.weight
}
}
}
Item{Layout.fillWidth: true}
Text {
text: UtilsCpp.encodeEmojiToQmlRichFormat(modelData.body)
font {
pixelSize: Typography.h3.pixelSize
weight: Typography.p3.weight
}
} }
} }
} }
Item{Layout.fillWidth: true}
Text {
text: UtilsCpp.encodeEmojiToQmlRichFormat(modelData.body)
font {
pixelSize: Typography.h3.pixelSize
weight: Typography.p3.weight
}
}
} }
} }
} }