Compare commits

..

10 commits

Author SHA1 Message Date
Gaelle Braud
ca4380bfd0 hide notification content setting 2026-02-02 13:58:36 +01:00
Gaelle Braud
8df5fb833c check if safe connection is being destroyed before trying lock
Add apply button and success/error toast for managing chatroom participants

debug logs
2026-02-02 08:55:57 +01:00
Gaelle Braud
d9b879fac7 enable native ringing if ringtone is empty 2026-01-30 11:42:26 +01:00
Gaelle Braud
507bee2946 fix hide spinner in chat messages list when model reset 2026-01-29 09:29:50 +01:00
Gaelle Braud
d4e657adff fix linux packaging (CMAKE_OPTIONS was overriding options set in gitlab CI variables) 2026-01-28 17:42:59 +01:00
Gaelle Braud
7685462960 add debug in crashing connect for debug 2026-01-28 15:21:05 +01:00
Gaelle Braud
fe6e3f4e25 activate bugsplat on linux/macos nightly packages 2026-01-28 12:39:19 +01:00
Gaelle Braud
4916c0ad6e do not clone conference info object on model creation as it blocks the creation
fix typo in cancelCreation calling
2026-01-28 12:14:02 +01:00
Gaelle Braud
9214cb5fed fix typo leading to build error 2026-01-27 17:45:39 +01:00
Gaelle Braud
f06f56bead update SDK to 5.5.0 2026-01-27 17:32:53 +01:00
23 changed files with 1524 additions and 1157 deletions

View file

@ -102,7 +102,7 @@ macosx-ninja-package:
- if: $PACKAGE_MACOSX
- if: $DEPLOY_MACOSX
variables:
CMAKE_OPTIONS: -DPython3_ROOT_DIR=/opt/bc/pip-packages/ -DENABLE_APP_PACKAGING=ON -DENABLE_GPL_THIRD_PARTIES=OFF -DENABLE_G729=ON
CMAKE_OPTIONS: -DPython3_ROOT_DIR=/opt/bc/pip-packages/ -DENABLE_APP_PACKAGING=ON -DENABLE_GPL_THIRD_PARTIES=OFF -DENABLE_G729=ON -DENABLE_BUGSPLAT_SYMBOLS_UPLOAD=ON -DBUGSPLAT_CLIENT_ID=$BUGSPLAT_CLIENT_ID -DBUGSPLAT_CLIENT_SECRET=$BUGSPLAT_CLIENT_SECRET -DBUGSPLAT_DATABASE=$BUGSPLAT_DATABASE
RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$MACOSX_PLATFORM/$APP_FOLDER
extends: macosx-ninja
script:

View file

@ -223,10 +223,22 @@ void ChatCore::setSelf(const QSharedPointer<ChatCore> &me) {
mChatModelConnection->makeConnectToModel(
&ChatModel::chatMessagesReceived, [this](const std::shared_ptr<linphone::ChatRoom> &chatRoom,
const std::list<std::shared_ptr<linphone::EventLog>> &eventsLog) {
if (!mChatModel) {
lWarning() << log().arg("Chat model is null !");
return;
} else if (!mChatModelConnection) {
lWarning() << log().arg("Connection between Core and Model is null !");
return;
}
if (mChatModel->getMonitor() != chatRoom) return;
lDebug() << log().arg("CHAT MESSAGE RECEIVED IN CHATROOM") << this << mChatModel->getTitle();
lInfo() << log().arg("Chat message received in chatroom") << this << mChatModel->getTitle();
lInfo() << log().arg("Connection =") << mChatModelConnection.get();
QList<QSharedPointer<EventLogCore>> list;
for (auto &e : eventsLog) {
if (!e) {
lWarning() << log().arg("Event log is null, continue");
continue;
}
auto event = EventLogCore::create(e, chatRoom);
list.push_back(event);
}
@ -377,6 +389,15 @@ void ChatCore::setSelf(const QSharedPointer<ChatCore> &me) {
setMeAdmin(meAdmin);
});
});
mChatModelConnection->makeConnectToModel(
&ChatModel::participantAddressesChanged,
[this](const std::shared_ptr<linphone::ChatRoom> &chatRoom, bool success) {
if (!success) {
auto participants = buildParticipants(chatRoom);
mChatModelConnection->invokeToCore([this, participants] { setParticipants(participants); });
}
mChatModelConnection->invokeToCore([this, success] { emit participantAddressesChanged(success); });
});
mChatModelConnection->makeConnectToCore(&ChatCore::lRemoveParticipantAtIndex, [this](int index) {
mChatModelConnection->invokeToModel([this, index]() { mChatModel->removeParticipantAtIndex(index); });
});

View file

@ -175,6 +175,7 @@ signals:
void fileListChanged();
void isSecuredChanged();
void conferenceJoined();
void participantAddressesChanged(bool success);
void lDeleteMessage(ChatMessageGui *message);
void lDelete();

View file

@ -366,7 +366,8 @@ void Notifier::notifyReceivedMessages(const std::shared_ptr<linphone::ChatRoom>
txt = tr("new_conference_invitation");
};
if (messages.size() == 1) { // Display only sender on mono message.
if (messages.size() == 1 &&
SettingsModel::getInstance()->getDisplayNotificationContent()) { // Display only sender on mono message.
if (message->isRead()) return;
getMessage(message);
if (txt.isEmpty()) { // Do not notify message without content
@ -382,6 +383,9 @@ void Notifier::notifyReceivedMessages(const std::shared_ptr<linphone::ChatRoom>
}
}
if (unreadCount == 0) return;
else if (unreadCount == 1)
//: 'New message received!' Notification that warn the user of a new message.
txt = tr("new_chat_room_message");
if (unreadCount > 1)
//: 'New messages received!' Notification that warn the user of new messages.
txt = tr("new_chat_room_messages");

View file

@ -275,6 +275,8 @@ QString Paths::getLogsDirPath() {
QString Paths::getAppRootCaFilePath() {
// Hardcoded because it comes from linphone and is not customizable.
return getReadableFilePath(getAppPackageDataDirPath() + "/linphone/rootca.pem");
}
QString Paths::getCrashpadDirPath() {
#ifdef HAVE_CRASH_HANDLER
return getWritableDirPath(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) +

View file

@ -92,6 +92,8 @@ void MagicSearchList::setSelf(const QSharedPointer<MagicSearchList> &me) {
mModelConnection->makeConnectToModel(
&MagicSearchModel::searchResultsReceived,
[this](const std::list<std::shared_ptr<linphone::SearchResult>> &results) {
lInfo() << log().arg("Search result received : Safe Connection =") << mModelConnection.get();
lInfo() << log().arg("this =") << this;
auto *contacts = new QList<QSharedPointer<FriendCore>>();
auto ldapContacts = ToolModel::getLdapFriendList();
auto core = CoreModel::getInstance()->getCore();

View file

@ -50,6 +50,7 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) {
mVideoEnabled = settingsModel->getVideoEnabled();
mEchoCancellationEnabled = settingsModel->getEchoCancellationEnabled();
mAutoDownloadReceivedFiles = settingsModel->getAutoDownloadReceivedFiles();
mDisplayNotificationContent = settingsModel->getDisplayNotificationContent();
mAutomaticallyRecordCallsEnabled = settingsModel->getAutomaticallyRecordCallsEnabled();
mRingtonePath = settingsModel->getRingtone();
QFileInfo ringtone(mRingtonePath);
@ -164,6 +165,7 @@ SettingsCore::SettingsCore(const SettingsCore &settingsCore) {
mVideoEnabled = settingsCore.mVideoEnabled;
mEchoCancellationEnabled = settingsCore.mEchoCancellationEnabled;
mAutoDownloadReceivedFiles = settingsCore.mAutoDownloadReceivedFiles;
mDisplayNotificationContent = settingsCore.mDisplayNotificationContent;
mAutomaticallyRecordCallsEnabled = settingsCore.mAutomaticallyRecordCallsEnabled;
// Audio
@ -250,6 +252,7 @@ void SettingsCore::reloadSettings() {
setVideoEnabled(settingsModel->getVideoEnabled());
setEchoCancellationEnabled(settingsModel->getEchoCancellationEnabled());
setAutoDownloadReceivedFiles(settingsModel->getAutoDownloadReceivedFiles());
setDisplayNotificationContent(settingsModel->getDisplayNotificationContent());
setAutomaticallyRecordCallsEnabled(settingsModel->getAutomaticallyRecordCallsEnabled());
setRingtone(settingsModel->getRingtone());
@ -400,6 +403,12 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
mSettingsModelConnection->invokeToCore([this, enabled]() { setAutoDownloadReceivedFiles(enabled); });
});
// Auto download incoming files
mSettingsModelConnection->makeConnectToModel(
&SettingsModel::displayNotificationContentChanged, [this](const bool enabled) {
mSettingsModelConnection->invokeToCore([this, enabled]() { setDisplayNotificationContent(enabled); });
});
// Auto recording
mSettingsModelConnection->makeConnectToModel(
&SettingsModel::automaticallyRecordCallsEnabledChanged, [this](const bool enabled) {
@ -640,6 +649,7 @@ void SettingsCore::reset(const SettingsCore &settingsCore) {
setAutomaticallyRecordCallsEnabled(settingsCore.mAutomaticallyRecordCallsEnabled);
setAutoDownloadReceivedFiles(settingsCore.mAutoDownloadReceivedFiles);
setDisplayNotificationContent(settingsCore.mDisplayNotificationContent);
// Audio
setCaptureDevices(settingsCore.mCaptureDevices);
setPlaybackDevices(settingsCore.mPlaybackDevices);
@ -795,6 +805,14 @@ void SettingsCore::setAutoDownloadReceivedFiles(bool enabled) {
}
}
void SettingsCore::setDisplayNotificationContent(bool enabled) {
if (mDisplayNotificationContent != enabled) {
mDisplayNotificationContent = enabled;
emit displayNotificationContentChanged();
setIsSaved(false);
}
}
void SettingsCore::setAutomaticallyRecordCallsEnabled(bool enabled) {
if (mAutomaticallyRecordCallsEnabled != enabled) {
mAutomaticallyRecordCallsEnabled = enabled;
@ -1241,6 +1259,8 @@ void SettingsCore::writeIntoModel(std::shared_ptr<SettingsModel> model) const {
// Chat
model->setAutoDownloadReceivedFiles(mAutoDownloadReceivedFiles);
model->setDisplayNotificationContent(mDisplayNotificationContent);
// Audio
model->setRingerDevice(mRingerDevice);
model->setCaptureDevice(mCaptureDevice);
@ -1316,6 +1336,7 @@ void SettingsCore::writeFromModel(const std::shared_ptr<SettingsModel> &model) {
// Chat
mAutoDownloadReceivedFiles = model->getAutoDownloadReceivedFiles();
mDisplayNotificationContent = model->getDisplayNotificationContent();
// Audio
mCaptureDevices = model->getCaptureDevices();

View file

@ -42,6 +42,8 @@ public:
echoCancellationEnabledChanged)
Q_PROPERTY(bool autoDownloadReceivedFiles READ getAutoDownloadReceivedFiles WRITE setAutoDownloadReceivedFiles
NOTIFY autoDownloadReceivedFilesChanged)
Q_PROPERTY(bool displayNotificationContent READ getDisplayNotificationContent WRITE setDisplayNotificationContent
NOTIFY displayNotificationContentChanged)
Q_PROPERTY(
int echoCancellationCalibration READ getEchoCancellationCalibration NOTIFY echoCancellationCalibrationChanged)
Q_PROPERTY(bool automaticallyRecordCallsEnabled READ getAutomaticallyRecordCallsEnabled WRITE
@ -93,16 +95,15 @@ public:
Q_PROPERTY(bool fullLogsEnabled READ getFullLogsEnabled WRITE setFullLogsEnabled NOTIFY fullLogsEnabledChanged)
Q_PROPERTY(bool crashReporterEnabled READ getCrashReporterEnabled WRITE setCrashReporterEnabled NOTIFY
crashReporterEnabledChanged)
Q_PROPERTY(QString logsEmail READ getLogsEmail)
Q_PROPERTY(QString logsFolder READ getLogsFolder)
Q_PROPERTY(QString logsEmail READ getLogsEmail) Q_PROPERTY(QString logsFolder READ getLogsFolder)
Q_PROPERTY(QString ringtoneName READ getRingtoneFileName NOTIFY ringtoneChanged)
Q_PROPERTY(QString ringtonePath READ getRingtonePath WRITE setRingtone NOTIFY ringtoneChanged)
Q_PROPERTY(QString ringtoneFolder MEMBER mRingtoneFolder NOTIFY ringtoneChanged)
Q_PROPERTY(bool dnd READ dndEnabled WRITE lEnableDnd NOTIFY dndChanged)
Q_PROPERTY(bool isSaved READ isSaved WRITE setIsSaved NOTIFY isSavedChanged)
Q_PROPERTY(
bool showAccountDevices READ showAccountDevices WRITE setShowAccountDevices NOTIFY showAccountDevicesChanged)
Q_PROPERTY(bool showAccountDevices READ showAccountDevices WRITE setShowAccountDevices
NOTIFY showAccountDevicesChanged)
static QSharedPointer<SettingsCore> create();
SettingsCore(QObject *parent = Q_NULLPTR);
@ -152,6 +153,11 @@ public:
}
void setAutoDownloadReceivedFiles(bool enabled);
bool getDisplayNotificationContent() {
return mDisplayNotificationContent;
}
void setDisplayNotificationContent(bool enabled);
bool getAutomaticallyRecordCallsEnabled() {
return mAutomaticallyRecordCallsEnabled;
}
@ -309,6 +315,7 @@ signals:
void echoCancellationEnabledChanged();
void autoDownloadReceivedFilesChanged();
void displayNotificationContentChanged();
void automaticallyRecordCallsEnabledChanged();
@ -406,6 +413,7 @@ private:
bool mVideoEnabled;
bool mEchoCancellationEnabled;
bool mAutoDownloadReceivedFiles;
bool mDisplayNotificationContent;
bool mAutomaticallyRecordCallsEnabled;
// Audio

File diff suppressed because it is too large Load diff

View file

@ -39,45 +39,45 @@
<context>
<name>AccountCore</name>
<message>
<location filename="../../core/account/AccountCore.cpp" line="447"/>
<location filename="../../core/account/AccountCore.cpp" line="454"/>
<source>drawer_menu_account_connection_status_connected</source>
<extracomment>&quot;Connecté&quot;</extracomment>
<translation>Connected</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="450"/>
<location filename="../../core/account/AccountCore.cpp" line="457"/>
<source>drawer_menu_account_connection_status_refreshing</source>
<translation>Refreshing</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="453"/>
<location filename="../../core/account/AccountCore.cpp" line="460"/>
<source>drawer_menu_account_connection_status_progress</source>
<translation>Connecting</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="456"/>
<location filename="../../core/account/AccountCore.cpp" line="463"/>
<source>drawer_menu_account_connection_status_failed</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="460"/>
<location filename="../../core/account/AccountCore.cpp" line="467"/>
<source>drawer_menu_account_connection_status_cleared</source>
<translation>Disabled</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="494"/>
<location filename="../../core/account/AccountCore.cpp" line="501"/>
<source>manage_account_status_connected_summary</source>
<extracomment>&quot;Vous êtes en ligne et joignable.&quot;</extracomment>
<translation>You are online and reachable.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="497"/>
<location filename="../../core/account/AccountCore.cpp" line="504"/>
<source>manage_account_status_failed_summary</source>
<extracomment>&quot;Erreur de connexion, vérifiez vos paramètres.&quot;</extracomment>
<translation>Connection error, check your settings.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="501"/>
<location filename="../../core/account/AccountCore.cpp" line="508"/>
<source>manage_account_status_cleared_summary</source>
<extracomment>&quot;Compte désactivé, vous ne recevrez ni appel ni message.&quot;</extracomment>
<translation>Account disabled, you will not receive calls or messages.</translation>
@ -503,7 +503,7 @@
<translation>Lime server URL</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="282"/>
<source>account_settings_ccmp_server_url_title</source>
<extracomment>&quot;URL du serveur CCMP&quot;</extracomment>
<translation>CCMP server URL</translation>
@ -661,141 +661,141 @@
<context>
<name>App</name>
<message>
<location filename="../../core/App.cpp" line="368"/>
<location filename="../../core/App.cpp" line="370"/>
<source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment>
<translation>Do you want to download and apply remote provisioning from this address ?</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="425"/>
<location filename="../../core/App.cpp" line="503"/>
<location filename="../../core/App.cpp" line="789"/>
<location filename="../../core/App.cpp" line="427"/>
<location filename="../../core/App.cpp" line="505"/>
<location filename="../../core/App.cpp" line="791"/>
<source>info_popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Error</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="426"/>
<location filename="../../core/App.cpp" line="791"/>
<location filename="../../core/App.cpp" line="428"/>
<location filename="../../core/App.cpp" line="793"/>
<source>info_popup_configuration_failed_message</source>
<extracomment>Remote provisioning failed : %1</extracomment>
<translation>Remote provisioning failed : %1</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="506"/>
<location filename="../../core/App.cpp" line="508"/>
<source>info_popup_error_checking_update</source>
<extracomment>An error occured while trying to check update. Please try again later or contact support team.</extracomment>
<translation>An error occured while trying to check update. Please try again later or contact support team.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="513"/>
<location filename="../../core/App.cpp" line="515"/>
<source>info_popup_new_version_download_label</source>
<translation>Download it !</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="516"/>
<location filename="../../core/App.cpp" line="518"/>
<source>info_popup_new_version_available_title</source>
<extracomment>New version available !</extracomment>
<translation>New version available !</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="518"/>
<location filename="../../core/App.cpp" line="520"/>
<source>info_popup_new_version_available_message</source>
<extracomment>A new version of Linphone (%1) is available. %2</extracomment>
<translation>A new version of Linphone (%1) is available at %1</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="524"/>
<location filename="../../core/App.cpp" line="526"/>
<source>info_popup_version_up_to_date_title</source>
<translation>Up to date</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="526"/>
<location filename="../../core/App.cpp" line="528"/>
<source>info_popup_version_up_to_date_message</source>
<extracomment>Your version is up to date</extracomment>
<translation>Up to date Your version is up to date</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="785"/>
<location filename="../../core/App.cpp" line="787"/>
<source>configuration_error_detail</source>
<extracomment>not reachable</extracomment>
<translation>not reachable</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1076"/>
<location filename="../../core/App.cpp" line="1078"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>A free and open source SIP video-phone.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1078"/>
<location filename="../../core/App.cpp" line="1080"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Send an order to the application towards a command line</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1082"/>
<location filename="../../core/App.cpp" line="1084"/>
<source>command_line_option_show_help</source>
<translation>Show this help</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1087"/>
<location filename="../../core/App.cpp" line="1089"/>
<source>command_line_option_show_app_version</source>
<translation>Show app version</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1095"/>
<location filename="../../core/App.cpp" line="1097"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1097"/>
<location filename="../../core/App.cpp" line="1099"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, path or file</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1102"/>
<location filename="../../core/App.cpp" line="1104"/>
<source>command_line_option_minimized</source>
<translation>Minimize</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1105"/>
<location filename="../../core/App.cpp" line="1107"/>
<source>command_line_option_log_to_stdout</source>
<translation>Log to stdout some debug information while running</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1108"/>
<location filename="../../core/App.cpp" line="1110"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Print only logs from the application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1564"/>
<location filename="../../core/App.cpp" line="1566"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Hide</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1564"/>
<location filename="../../core/App.cpp" line="1566"/>
<source>show_action</source>
<translation>Show</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1579"/>
<location filename="../../core/App.cpp" line="1581"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quit</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1597"/>
<location filename="../../core/App.cpp" line="1599"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Check for update</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1720"/>
<location filename="../../core/App.cpp" line="1722"/>
<source>mark_all_read_action</source>
<translation>Marquer tout comme lu</translation>
</message>
@ -841,76 +841,76 @@
<context>
<name>CallCore</name>
<message>
<location filename="../../core/call/CallCore.cpp" line="215"/>
<location filename="../../core/call/CallCore.cpp" line="217"/>
<source>call_record_end_message</source>
<extracomment>&quot;Enregistrement terminé&quot;</extracomment>
<translation>Recording ended</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="217"/>
<location filename="../../core/call/CallCore.cpp" line="219"/>
<source>call_record_saved_in_file_message</source>
<extracomment>&quot;L&apos;appel a é enregistré dans le fichier : %1&quot;</extracomment>
<translation>Recording has been saved in file : %1</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="401"/>
<location filename="../../core/call/CallCore.cpp" line="426"/>
<location filename="../../core/call/CallCore.cpp" line="403"/>
<location filename="../../core/call/CallCore.cpp" line="428"/>
<source>call_stats_codec_label</source>
<extracomment>&quot;Codec: %1 / %2 kHz&quot;</extracomment>
<translation>Codec: %1 / %2 kHz</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="405"/>
<location filename="../../core/call/CallCore.cpp" line="429"/>
<location filename="../../core/call/CallCore.cpp" line="407"/>
<location filename="../../core/call/CallCore.cpp" line="431"/>
<source>call_stats_bandwidth_label</source>
<extracomment>&quot;Bande passante : %1 %2 kbits/s %3 %4 kbits/s&quot;</extracomment>
<translation>Bandwidth : %1 %2 kbits/s %3 %4 kbits/s</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="411"/>
<location filename="../../core/call/CallCore.cpp" line="434"/>
<location filename="../../core/call/CallCore.cpp" line="413"/>
<location filename="../../core/call/CallCore.cpp" line="436"/>
<source>call_stats_loss_rate_label</source>
<extracomment>&quot;Taux de perte: %1% %2%&quot;</extracomment>
<translation>Loss rate: %1% %2%</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="416"/>
<location filename="../../core/call/CallCore.cpp" line="418"/>
<source>call_stats_jitter_buffer_label</source>
<extracomment>&quot;Tampon de gigue: %1 ms&quot;</extracomment>
<translation>Jitter buffer : %1 ms</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="443"/>
<location filename="../../core/call/CallCore.cpp" line="445"/>
<source>call_stats_resolution_label</source>
<extracomment>&quot;Définition vidéo : %1 %2 %3 %4&quot;</extracomment>
<translation>Video resolution: %1 %2 %3 %4</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="449"/>
<location filename="../../core/call/CallCore.cpp" line="451"/>
<source>call_stats_fps_label</source>
<extracomment>&quot;FPS : %1 %2 %3 %4&quot;</extracomment>
<translation>FPS : %1 %2 %3 %4</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="674"/>
<location filename="../../core/call/CallCore.cpp" line="714"/>
<source>media_encryption_dtls</source>
<extracomment>DTLS</extracomment>
<translation>DTLS</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="677"/>
<location filename="../../core/call/CallCore.cpp" line="717"/>
<source>media_encryption_none</source>
<extracomment>None</extracomment>
<translation>None</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="680"/>
<location filename="../../core/call/CallCore.cpp" line="720"/>
<source>media_encryption_srtp</source>
<extracomment>SRTP</extracomment>
<translation>SRTP</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="683"/>
<location filename="../../core/call/CallCore.cpp" line="723"/>
<source>media_encryption_post_quantum</source>
<extracomment>&quot;ZRTP - Post quantique&quot;</extracomment>
<translation>Post quantum ZRTP</translation>
@ -2079,13 +2079,13 @@
<context>
<name>ChatDroppableTextArea</name>
<message>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="156"/>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="158"/>
<source>chat_view_send_area_placeholder_text</source>
<extracomment>Say something : placeholder text for sending message text area</extracomment>
<translation>Say something</translation>
</message>
<message>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="195"/>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="197"/>
<source>cannot_record_while_in_call_tooltip</source>
<extracomment>Cannot record a message while a call is ongoing</extracomment>
<translation>Cannot record a message while a call is ongoing</translation>
@ -2161,99 +2161,98 @@
<context>
<name>ChatMessage</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="444"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="480"/>
<source>chat_message_copy_selection</source>
<extracomment>&quot;Copy selection&quot;</extracomment>
<translation>Copy selection</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="446"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="482"/>
<source>chat_message_copy</source>
<extracomment>&quot;Copy&quot;</extracomment>
<translation>Copy</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="454"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="490"/>
<source>chat_message_copied_to_clipboard_title</source>
<extracomment>Copied</extracomment>
<translation>Copied</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="456"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="492"/>
<source>chat_message_copied_to_clipboard_toast</source>
<extracomment>&quot;to clipboard&quot;</extracomment>
<translation>in clipboard</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="129"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="130"/>
<source>chat_message_remote_replied</source>
<extracomment>%1 replied</extracomment>
<translation>%1 replied to</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="96"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="97"/>
<source>chat_message_forwarded</source>
<extracomment>Forwarded</extracomment>
<translation>Forwarded</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="127"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="128"/>
<source>chat_message_remote_replied_to</source>
<extracomment>%1 replied to %2</extracomment>
<translation>%1 replied to %2</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="132"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="133"/>
<source>chat_message_user_replied_to</source>
<extracomment>You replied to %1</extracomment>
<translation>You replied to %1</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="134"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="135"/>
<source>chat_message_user_replied</source>
<extracomment>You replied</extracomment>
<translation>You replied</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="408"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="429"/>
<source>chat_message_send_again</source>
<extracomment>&quot;Re-send&quot;</extracomment>
<translation>Re-send</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="419"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="440"/>
<source>chat_message_reception_info</source>
<extracomment>&quot;Reception info&quot;</extracomment>
<translation>Reception info</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="407"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="452"/>
<source>menu_edit_chat_message</source>
<extracomment>&quot;Edit&quot;</extracomment>
<translation>Edit</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="431"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="466"/>
<source>chat_message_reply</source>
<extracomment>Reply</extracomment>
<translation>Reply</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="463"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="500"/>
<source>chat_message_forward</source>
<extracomment>Forward</extracomment>
<translation>Forward</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="480"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="517"/>
<source>chat_message_delete</source>
<extracomment>&quot;Delete&quot;</extracomment>
<translation>Delete</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="469"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="306"/>
<source>conversation_message_edited_label</source>
<extracomment>&quot;Edited&quot;</extracomment>
<translation>Edited</translation>
</message>
</context>
@ -2376,19 +2375,19 @@ Error</extracomment>
<context>
<name>ChatMessageCore</name>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="157"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="163"/>
<source>all_reactions_label</source>
<extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment>
<translation>Reactions</translation>
</message>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="214"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="223"/>
<source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment>
<translation>Deleted</translation>
</message>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="216"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="225"/>
<source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment>
<translation>The message has been deleted</translation>
@ -2419,24 +2418,24 @@ Error</extracomment>
<translation>Meeting has been cancelled</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="171"/>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="182"/>
<source></source>
<translation>from %1 to %2 (UTC%3)</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="234"/>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="245"/>
<source>ics_bubble_description_title</source>
<extracomment>Description</extracomment>
<translation>Description</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="286"/>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="297"/>
<source>ics_bubble_join</source>
<extracomment>&quot;Rejoindre&quot;</extracomment>
<translation>Join</translation>
</message>
<message numerus="yes">
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="276"/>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="287"/>
<source>ics_bubble_participants</source>
<extracomment>%n participant(s)</extracomment>
<translation>
@ -2448,44 +2447,44 @@ Error</extracomment>
<context>
<name>ChatMessagesListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="121"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="112"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<source>popup_info_find_message_title</source>
<extracomment>Find message</extracomment>
<translation>Find message</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="125"/>
<source>info_popup_no_result_message</source>
<extracomment>No result found</extracomment>
<translation>No result found</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="117"/>
<source>info_popup_first_result_message</source>
<extracomment>First result reached</extracomment>
<translation>First result reached</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="113"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<source>info_popup_last_result_message</source>
<extracomment>Last result reached</extracomment>
<translation>Last result reached</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="160"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="162"/>
<source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment>
<translation>End to end encrypted chat</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="162"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="164"/>
<source>unencrypted_conversation_warning</source>
<extracomment>This conversation is not encrypted !</extracomment>
<translation>This conversation is not encrypted !</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="173"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="175"/>
<source>chat_message_list_encrypted_header_message</source>
<extracomment>Messages in this conversation are e2e encrypted.
Only your correspondent can decrypt them.</extracomment>
@ -2493,7 +2492,7 @@ Error</extracomment>
Only your correspondent can decrypt them.</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="175"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="177"/>
<source>chat_message_list_not_encrypted_header_message</source>
<extracomment>Messages are not end to end encrypted,
may sure you don&apos;t share any sensitive information !</extracomment>
@ -2501,43 +2500,39 @@ Only your correspondent can decrypt them.</translation>
may sure you don&apos;t share any sensitive information !</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="215"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="217"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation>%1 is writing</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="470"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="238"/>
<source>conversation_dialog_delete_chat_message_title</source>
<extracomment>&quot;Delete this message?&quot;</extracomment>
<extracomment>&quot;Supprimer le message ?&quot;</extracomment>
<translation>Delete this message?</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="471"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="246"/>
<source>conversation_dialog_delete_locally_label</source>
<extracomment>&quot;For me&quot;</extracomment>
<translation>For me</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="257"/>
<source>conversation_dialog_delete_for_everyone_label</source>
<extracomment>&quot;For everyone&quot;</extracomment>
<translation>For everyone</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="268"/>
<source>dialog_cancel</source>
<extracomment>&quot;Cancel&quot;</extracomment>
<translation>Cancel</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="349"/>
<source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment>
<translation>Deleted</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="351"/>
<source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment>
<translation>The message has been deleted</translation>
@ -2681,17 +2676,35 @@ Only your correspondent can decrypt them.</translation>
<translation>Attached files</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="25"/>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="21"/>
<source>settings_chat_notifications_title</source>
<extracomment>Notifications</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="32"/>
<source>settings_chat_attached_files_auto_download_title</source>
<extracomment>&quot;Automatic download&quot;</extracomment>
<translation>Automatic download</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="27"/>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="34"/>
<source>settings_chat_attached_files_auto_download_subtitle</source>
<extracomment>&quot;Automatically download transferred or received files in conversations&quot;</extracomment>
<translation>Automatically download transferred or received files in conversations</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="50"/>
<source>settings_chat_display_notification_content_title</source>
<extracomment>&quot;Display notification content&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="52"/>
<source>settings_chat_display_notification_content_subtitle</source>
<extracomment>&quot;Display the content of the received message&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CliModel</name>
@ -2729,13 +2742,13 @@ Only your correspondent can decrypt them.</translation>
<context>
<name>ConferenceInfoCore</name>
<message>
<location filename="../../core/conference/ConferenceInfoCore.cpp" line="577"/>
<location filename="../../core/conference/ConferenceInfoCore.cpp" line="583"/>
<source>information_popup_error_title</source>
<extracomment>&quot;Erreur&quot;</extracomment>
<translation>Error</translation>
</message>
<message>
<location filename="../../core/conference/ConferenceInfoCore.cpp" line="579"/>
<location filename="../../core/conference/ConferenceInfoCore.cpp" line="585"/>
<source>information_popup_disconnected_account_message</source>
<extracomment>&quot;Votre compte est déconnecté&quot;</extracomment>
<translation>Your account is disconnected</translation>
@ -3530,12 +3543,12 @@ Only your correspondent can decrypt them.</translation>
<context>
<name>CoreModel</name>
<message>
<location filename="../../model/core/CoreModel.cpp" line="215"/>
<location filename="../../model/core/CoreModel.cpp" line="218"/>
<source>info_popup_error_title</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../model/core/CoreModel.cpp" line="217"/>
<location filename="../../model/core/CoreModel.cpp" line="220"/>
<source>fetching_config_failed_error_message</source>
<extracomment>&quot;Remote provisioning cannot be retrieved&quot;</extracomment>
<translation>Remote provisioning cannot be retrieved</translation>
@ -4314,7 +4327,7 @@ Expiration : %1</translation>
<context>
<name>MagicSearchList</name>
<message>
<location filename="../../core/search/MagicSearchList.cpp" line="143"/>
<location filename="../../core/search/MagicSearchList.cpp" line="145"/>
<source>device_id</source>
<translation>Phone</translation>
</message>
@ -4558,10 +4571,38 @@ Expiration : %1</translation>
<context>
<name>ManageParticipants</name>
<message>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="44"/>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="29"/>
<source>info_popup_error_title</source>
<translation type="unfinished">Error</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="31"/>
<source>info_popup_manage_participant_error_message</source>
<extracomment>Error while setting participants !</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="34"/>
<source>info_popup_success_title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="36"/>
<source>info_popup_manage_participant_updated_message</source>
<extracomment>Participants updated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="59"/>
<source>group_infos_manage_participants</source>
<translation>Participants</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="68"/>
<source>apply_button_text</source>
<extracomment>Apply</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MeetingForm</name>
@ -4815,19 +4856,19 @@ Expiration : %1</translation>
<translation>Meeting URI copied</translation>
</message>
<message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="786"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="798"/>
<source>meeting_schedule_timezone_title</source>
<extracomment>&quot;Fuseau horaire&quot;</extracomment>
<translation>Timezone</translation>
</message>
<message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="892"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="904"/>
<source>meeting_info_organizer_label</source>
<extracomment>&quot;Organisateur&quot;</extracomment>
<translation>Organizer</translation>
</message>
<message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="909"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="921"/>
<source>meeting_info_join_title</source>
<extracomment>&quot;Rejoindre la réunion&quot;</extracomment>
<translation>Join meeting</translation>
@ -5028,13 +5069,19 @@ Expiration : %1</translation>
<translation>Conference invitation received !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="387"/>
<location filename="../../core/notifier/Notifier.cpp" line="388"/>
<source>new_chat_room_message</source>
<extracomment>&apos;New message received!&apos; Notification that warn the user of a new message.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="391"/>
<source>new_chat_room_messages</source>
<extracomment>&apos;New messages received!&apos; Notification that warn the user of new messages.</extracomment>
<translation>New messages received !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="415"/>
<location filename="../../core/notifier/Notifier.cpp" line="419"/>
<source>new_message_alert_accessible_name</source>
<extracomment>New message on chatroom %1</extracomment>
<translation>New message on chatroom %1</translation>
@ -5811,48 +5858,47 @@ To enable them in a commercial project, please contact us.</translation>
<context>
<name>SelectedChatView</name>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="49"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="50"/>
<source>chat_view_group_call_toast_message</source>
<translation>Start a group call ?</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="145"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="146"/>
<source>unencrypted_conversation_warning</source>
<extracomment>This conversation is not encrypted !</extracomment>
<translation>This conversation is not encrypted !</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="433"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="448"/>
<source>reply_to_label</source>
<extracomment>Reply to %1</extracomment>
<translation>Reply to %1</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="417"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="449"/>
<source>conversation_editing_message_title</source>
<extracomment>Message beeing edited</extracomment>
<translation>Message beeing edited</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="639"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="660"/>
<source>shared_medias_title</source>
<extracomment>Shared medias</extracomment>
<translation>Shared medias</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="641"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="662"/>
<source>shared_documents_title</source>
<extracomment>Shared documents</extracomment>
<translation>Shared documents</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="670"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="691"/>
<source>forward_to_title</source>
<extracomment>Forward to</extracomment>
<translation>Forward to</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="704"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="725"/>
<source>conversations_title</source>
<extracomment>Conversations</extracomment>
<translation>Conversations</translation>
@ -6002,7 +6048,7 @@ To enable them in a commercial project, please contact us.</translation>
<translation>Voice recording (%1)</translation>
</message>
<message>
<location filename="../../model/tool/ToolModel.cpp" line="614"/>
<location filename="../../model/tool/ToolModel.cpp" line="623"/>
<source>unknown_audio_device_name</source>
<translation>Unknown device name</translation>
</message>
@ -6022,22 +6068,20 @@ To enable them in a commercial project, please contact us.</translation>
<translation>Meeting modification</translation>
</message>
<message>
<location filename="../../model/tool/ToolModel.cpp" line="530"/>
<location filename="../../model/tool/ToolModel.cpp" line="563"/>
<source>conversation_message_content_deleted_label</source>
<extracomment>&quot;&lt;i&gt;This message has been deleted&lt;/i&gt;&quot;</extracomment>
<translation>&lt;i&gt;This message has been deleted&lt;/i&gt;</translation>
</message>
<message>
<location filename="../../model/tool/ToolModel.cpp" line="530"/>
<location filename="../../model/tool/ToolModel.cpp" line="562"/>
<source>conversation_message_content_deleted_by_us_label</source>
<extracomment>&quot;&lt;i&gt;You have deleted this message&lt;/i&gt;&quot;</extracomment>
<translation>&lt;i&gt;You have deleted this message&lt;/i&gt;</translation>
</message>
</context>
<context>
<name>Utils</name>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2197"/>
<location filename="../../tool/Utils.cpp" line="2241"/>
<source>nSeconds</source>
<translation>
<numerusform>%1 second</numerusform>
@ -6045,7 +6089,7 @@ To enable them in a commercial project, please contact us.</translation>
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2192"/>
<location filename="../../tool/Utils.cpp" line="2236"/>
<source>nMinute</source>
<translation>
<numerusform>%1 minute</numerusform>
@ -6077,9 +6121,9 @@ To enable them in a commercial project, please contact us.</translation>
<translation>Cannot reply to invalid message</translation>
</message>
<message>
<location filename="../../tool/Utils.cpp" line="2123"/>
<location filename="../../tool/Utils.cpp" line="2082"/>
<source>chat_message_edit_error</source>
<extracomment>Cannot modify invalid message</extracomment>
<extracomment>Cannot edit to invalid message</extracomment>
<translation>Cannot modify invalid message</translation>
</message>
<message>
@ -6089,7 +6133,7 @@ To enable them in a commercial project, please contact us.</translation>
<translation>Could not send reply message : %1</translation>
</message>
<message>
<location filename="../../tool/Utils.cpp" line="2129"/>
<location filename="../../tool/Utils.cpp" line="2088"/>
<source>info_popup_edited_message_error</source>
<extracomment>Could not send edited message : %1</extracomment>
<translation>Could not send edited message : %1</translation>
@ -6101,13 +6145,13 @@ To enable them in a commercial project, please contact us.</translation>
<translation>Failed to create reply message</translation>
</message>
<message>
<location filename="../../tool/Utils.cpp" line="2156"/>
<location filename="../../tool/Utils.cpp" line="2115"/>
<source>info_popup_send_edited_message_error_message</source>
<extracomment>Failed to create edited message</extracomment>
<translation>Failed to create edited message</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2193"/>
<location filename="../../tool/Utils.cpp" line="2237"/>
<source>nHour</source>
<translation>
<numerusform>%1 hour</numerusform>
@ -6115,8 +6159,8 @@ To enable them in a commercial project, please contact us.</translation>
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2194"/>
<location filename="../../tool/Utils.cpp" line="2195"/>
<location filename="../../tool/Utils.cpp" line="2238"/>
<location filename="../../tool/Utils.cpp" line="2239"/>
<source>nDay</source>
<translation>
<numerusform>%1 day</numerusform>
@ -6124,7 +6168,7 @@ To enable them in a commercial project, please contact us.</translation>
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2196"/>
<location filename="../../tool/Utils.cpp" line="2240"/>
<source>nWeek</source>
<translation>
<numerusform>%1 week</numerusform>
@ -6250,7 +6294,7 @@ To enable them in a commercial project, please contact us.</translation>
<translation>Failed to create 1-1 conversation with %1 !</translation>
</message>
<message>
<location filename="../../tool/Utils.cpp" line="2103"/>
<location filename="../../tool/Utils.cpp" line="2147"/>
<source>recorder_error</source>
<extracomment>Error with the recorder</extracomment>
<translation>Error with the recorder</translation>
@ -6258,7 +6302,8 @@ To enable them in a commercial project, please contact us.</translation>
<message>
<location filename="../../tool/Utils.cpp" line="2008"/>
<location filename="../../tool/Utils.cpp" line="2040"/>
<location filename="../../tool/Utils.cpp" line="2105"/>
<location filename="../../tool/Utils.cpp" line="2084"/>
<location filename="../../tool/Utils.cpp" line="2149"/>
<source>chat_error</source>
<translation>Error in the chat</translation>
</message>
@ -6267,20 +6312,22 @@ To enable them in a commercial project, please contact us.</translation>
<location filename="../../tool/Utils.cpp" line="2025"/>
<location filename="../../tool/Utils.cpp" line="2042"/>
<location filename="../../tool/Utils.cpp" line="2069"/>
<location filename="../../tool/Utils.cpp" line="2107"/>
<location filename="../../tool/Utils.cpp" line="2121"/>
<location filename="../../tool/Utils.cpp" line="2086"/>
<location filename="../../tool/Utils.cpp" line="2113"/>
<location filename="../../tool/Utils.cpp" line="2151"/>
<location filename="../../tool/Utils.cpp" line="2165"/>
<source>info_popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Error</translation>
</message>
<message>
<location filename="../../tool/Utils.cpp" line="2109"/>
<location filename="../../tool/Utils.cpp" line="2153"/>
<source>info_popup_send_voice_message_error_message</source>
<extracomment>Could not send voice message : %1</extracomment>
<translation>Could not send voice message : %1</translation>
</message>
<message>
<location filename="../../tool/Utils.cpp" line="2123"/>
<location filename="../../tool/Utils.cpp" line="2167"/>
<source>info_popup_send_voice_message_sending_error_message</source>
<extracomment>Failed to create message from record</extracomment>
<translation>Failed to create message from record</translation>

View file

@ -39,45 +39,45 @@
<context>
<name>AccountCore</name>
<message>
<location filename="../../core/account/AccountCore.cpp" line="447"/>
<location filename="../../core/account/AccountCore.cpp" line="454"/>
<source>drawer_menu_account_connection_status_connected</source>
<extracomment>&quot;Connecté&quot;</extracomment>
<translation>Connecté</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="450"/>
<location filename="../../core/account/AccountCore.cpp" line="457"/>
<source>drawer_menu_account_connection_status_refreshing</source>
<translation>En cours de rafraîchissement</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="453"/>
<location filename="../../core/account/AccountCore.cpp" line="460"/>
<source>drawer_menu_account_connection_status_progress</source>
<translation>Connexion</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="456"/>
<location filename="../../core/account/AccountCore.cpp" line="463"/>
<source>drawer_menu_account_connection_status_failed</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="460"/>
<location filename="../../core/account/AccountCore.cpp" line="467"/>
<source>drawer_menu_account_connection_status_cleared</source>
<translation>Désactivé</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="494"/>
<location filename="../../core/account/AccountCore.cpp" line="501"/>
<source>manage_account_status_connected_summary</source>
<extracomment>&quot;Vous êtes en ligne et joignable.&quot;</extracomment>
<translation>Vous êtes en ligne et joignable.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="497"/>
<location filename="../../core/account/AccountCore.cpp" line="504"/>
<source>manage_account_status_failed_summary</source>
<extracomment>&quot;Erreur de connexion, vérifiez vos paramètres.&quot;</extracomment>
<translation>Erreur de connexion, vérifiez vos paramètres.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="501"/>
<location filename="../../core/account/AccountCore.cpp" line="508"/>
<source>manage_account_status_cleared_summary</source>
<extracomment>&quot;Compte désactivé, vous ne recevrez ni appel ni message.&quot;</extracomment>
<translation>Compte désactivé, vous ne recevrez ni appel ni message.</translation>
@ -498,7 +498,7 @@
<translation>URL du serveur déchange de clés de chiffrement</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml"/>
<location filename="../../view/Page/Layout/Settings/AccountSettingsParametersLayout.qml" line="282"/>
<source>account_settings_ccmp_server_url_title</source>
<extracomment>&quot;URL du serveur CCMP&quot;</extracomment>
<translation>URL du serveur CCMP</translation>
@ -656,141 +656,141 @@
<context>
<name>App</name>
<message>
<location filename="../../core/App.cpp" line="368"/>
<location filename="../../core/App.cpp" line="370"/>
<source>remote_provisioning_dialog</source>
<extracomment>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</extracomment>
<translation>Voulez-vous télécharger et appliquer la configuration depuis cette adresse ?</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="425"/>
<location filename="../../core/App.cpp" line="503"/>
<location filename="../../core/App.cpp" line="789"/>
<location filename="../../core/App.cpp" line="427"/>
<location filename="../../core/App.cpp" line="505"/>
<location filename="../../core/App.cpp" line="791"/>
<source>info_popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="426"/>
<location filename="../../core/App.cpp" line="791"/>
<location filename="../../core/App.cpp" line="428"/>
<location filename="../../core/App.cpp" line="793"/>
<source>info_popup_configuration_failed_message</source>
<extracomment>Remote provisioning failed : %1</extracomment>
<translation>La configuration distante a échoué : %1</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="506"/>
<location filename="../../core/App.cpp" line="508"/>
<source>info_popup_error_checking_update</source>
<extracomment>An error occured while trying to check update. Please try again later or contact support team.</extracomment>
<translation>Une erreur est survenue lors de la recherche de mise à jour. Merci de réessayer plus tard ou de contacter l&apos;équipe de support.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="513"/>
<location filename="../../core/App.cpp" line="515"/>
<source>info_popup_new_version_download_label</source>
<translation>Téléchargez-&#x202f;!</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="516"/>
<location filename="../../core/App.cpp" line="518"/>
<source>info_popup_new_version_available_title</source>
<extracomment>New version available !</extracomment>
<translation>Nouvelle version disponible !</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="518"/>
<location filename="../../core/App.cpp" line="520"/>
<source>info_popup_new_version_available_message</source>
<extracomment>A new version of Linphone (%1) is available. %2</extracomment>
<translation>Une nouvelle version de Linphone (%1) est disponible. %2</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="524"/>
<location filename="../../core/App.cpp" line="526"/>
<source>info_popup_version_up_to_date_title</source>
<translation>À jour</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="526"/>
<location filename="../../core/App.cpp" line="528"/>
<source>info_popup_version_up_to_date_message</source>
<extracomment>Your version is up to date</extracomment>
<translation>Votre version est à jour</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="785"/>
<location filename="../../core/App.cpp" line="787"/>
<source>configuration_error_detail</source>
<extracomment>not reachable</extracomment>
<translation>indisponible</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1076"/>
<location filename="../../core/App.cpp" line="1078"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>A free and open source SIP video-phone.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1078"/>
<location filename="../../core/App.cpp" line="1080"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Send an order to the application towards a command line</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1082"/>
<location filename="../../core/App.cpp" line="1084"/>
<source>command_line_option_show_help</source>
<translation>Show this help</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1087"/>
<location filename="../../core/App.cpp" line="1089"/>
<source>command_line_option_show_app_version</source>
<translation>Afficher la version de l&apos;application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1095"/>
<location filename="../../core/App.cpp" line="1097"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1097"/>
<location filename="../../core/App.cpp" line="1099"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, path or file</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1102"/>
<location filename="../../core/App.cpp" line="1104"/>
<source>command_line_option_minimized</source>
<translation>Minimiser</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1105"/>
<location filename="../../core/App.cpp" line="1107"/>
<source>command_line_option_log_to_stdout</source>
<translation>Log to stdout some debug information while running</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1108"/>
<location filename="../../core/App.cpp" line="1110"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Print only logs from the application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1564"/>
<location filename="../../core/App.cpp" line="1566"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Cacher</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1564"/>
<location filename="../../core/App.cpp" line="1566"/>
<source>show_action</source>
<translation>Afficher</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1579"/>
<location filename="../../core/App.cpp" line="1581"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quitter</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1597"/>
<location filename="../../core/App.cpp" line="1599"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Rechercher une mise à jour</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1720"/>
<location filename="../../core/App.cpp" line="1722"/>
<source>mark_all_read_action</source>
<translation>Marquer tout comme lu</translation>
</message>
@ -836,76 +836,76 @@
<context>
<name>CallCore</name>
<message>
<location filename="../../core/call/CallCore.cpp" line="215"/>
<location filename="../../core/call/CallCore.cpp" line="217"/>
<source>call_record_end_message</source>
<extracomment>&quot;Enregistrement terminé&quot;</extracomment>
<translation>Enregistrement terminé</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="217"/>
<location filename="../../core/call/CallCore.cpp" line="219"/>
<source>call_record_saved_in_file_message</source>
<extracomment>&quot;L&apos;appel a é enregistré dans le fichier : %1&quot;</extracomment>
<translation>L&apos;appel a é enregistré dans le fichier : %1</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="401"/>
<location filename="../../core/call/CallCore.cpp" line="426"/>
<location filename="../../core/call/CallCore.cpp" line="403"/>
<location filename="../../core/call/CallCore.cpp" line="428"/>
<source>call_stats_codec_label</source>
<extracomment>&quot;Codec: %1 / %2 kHz&quot;</extracomment>
<translation>Codec: %1 / %2 kHz</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="405"/>
<location filename="../../core/call/CallCore.cpp" line="429"/>
<location filename="../../core/call/CallCore.cpp" line="407"/>
<location filename="../../core/call/CallCore.cpp" line="431"/>
<source>call_stats_bandwidth_label</source>
<extracomment>&quot;Bande passante : %1 %2 kbits/s %3 %4 kbits/s&quot;</extracomment>
<translation>Bande passante : %1 %2 kbits/s %3 %4 kbits/s</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="411"/>
<location filename="../../core/call/CallCore.cpp" line="434"/>
<location filename="../../core/call/CallCore.cpp" line="413"/>
<location filename="../../core/call/CallCore.cpp" line="436"/>
<source>call_stats_loss_rate_label</source>
<extracomment>&quot;Taux de perte: %1% %2%&quot;</extracomment>
<translation>Taux de perte: %1% %2%</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="416"/>
<location filename="../../core/call/CallCore.cpp" line="418"/>
<source>call_stats_jitter_buffer_label</source>
<extracomment>&quot;Tampon de gigue: %1 ms&quot;</extracomment>
<translation>Tampon de gigue: %1 ms</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="443"/>
<location filename="../../core/call/CallCore.cpp" line="445"/>
<source>call_stats_resolution_label</source>
<extracomment>&quot;Définition vidéo : %1 %2 %3 %4&quot;</extracomment>
<translation>Définition vidéo : %1 %2 %3 %4</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="449"/>
<location filename="../../core/call/CallCore.cpp" line="451"/>
<source>call_stats_fps_label</source>
<extracomment>&quot;FPS : %1 %2 %3 %4&quot;</extracomment>
<translation>FPS : %1 %2 %3 %4</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="674"/>
<location filename="../../core/call/CallCore.cpp" line="714"/>
<source>media_encryption_dtls</source>
<extracomment>DTLS</extracomment>
<translation>DTLS</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="677"/>
<location filename="../../core/call/CallCore.cpp" line="717"/>
<source>media_encryption_none</source>
<extracomment>None</extracomment>
<translation>None</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="680"/>
<location filename="../../core/call/CallCore.cpp" line="720"/>
<source>media_encryption_srtp</source>
<extracomment>SRTP</extracomment>
<translation>SRTP</translation>
</message>
<message>
<location filename="../../core/call/CallCore.cpp" line="683"/>
<location filename="../../core/call/CallCore.cpp" line="723"/>
<source>media_encryption_post_quantum</source>
<extracomment>&quot;ZRTP - Post quantique&quot;</extracomment>
<translation>ZRTP - Post quantique</translation>
@ -2054,13 +2054,13 @@
<context>
<name>ChatDroppableTextArea</name>
<message>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="156"/>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="158"/>
<source>chat_view_send_area_placeholder_text</source>
<extracomment>Say something : placeholder text for sending message text area</extracomment>
<translation>Dites quelque chose</translation>
</message>
<message>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="195"/>
<location filename="../../view/Control/Input/Chat/ChatDroppableTextArea.qml" line="197"/>
<source>cannot_record_while_in_call_tooltip</source>
<extracomment>Cannot record a message while a call is ongoing</extracomment>
<translation>Impossible d&apos;enregistrer un message vocal pendant un appel</translation>
@ -2136,99 +2136,98 @@
<context>
<name>ChatMessage</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="444"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="480"/>
<source>chat_message_copy_selection</source>
<extracomment>&quot;Copy selection&quot;</extracomment>
<translation>Copier la sélection</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="446"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="482"/>
<source>chat_message_copy</source>
<extracomment>&quot;Copy&quot;</extracomment>
<translation>Copier</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="454"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="490"/>
<source>chat_message_copied_to_clipboard_title</source>
<extracomment>Copied</extracomment>
<translation>Copié</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="456"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="492"/>
<source>chat_message_copied_to_clipboard_toast</source>
<extracomment>&quot;to clipboard&quot;</extracomment>
<translation>dans le presse-papiers</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="129"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="130"/>
<source>chat_message_remote_replied</source>
<extracomment>%1 replied</extracomment>
<translation>%1 a répondu</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="96"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="97"/>
<source>chat_message_forwarded</source>
<extracomment>Forwarded</extracomment>
<translation>Transféré</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="127"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="128"/>
<source>chat_message_remote_replied_to</source>
<extracomment>%1 replied to %2</extracomment>
<translation>%1 a répondu à %2</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="132"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="133"/>
<source>chat_message_user_replied_to</source>
<extracomment>You replied to %1</extracomment>
<translation>Vous avez répondu à %1</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="134"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="135"/>
<source>chat_message_user_replied</source>
<extracomment>You replied</extracomment>
<translation>Vous avez répondu</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="408"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="429"/>
<source>chat_message_send_again</source>
<extracomment>&quot;Re-send&quot;</extracomment>
<translation>-envoyer</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="419"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="440"/>
<source>chat_message_reception_info</source>
<extracomment>&quot;Reception info&quot;</extracomment>
<translation>Info de réception</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="407"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="452"/>
<source>menu_edit_chat_message</source>
<extracomment>&quot;Edit&quot;</extracomment>
<translation>Modifier</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="431"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="466"/>
<source>chat_message_reply</source>
<extracomment>Reply</extracomment>
<translation>Répondre</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="463"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="500"/>
<source>chat_message_forward</source>
<extracomment>Forward</extracomment>
<translation>Transférer</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="480"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="517"/>
<source>chat_message_delete</source>
<extracomment>&quot;Delete&quot;</extracomment>
<translation>Supprimer</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="469"/>
<location filename="../../view/Control/Display/Chat/ChatMessage.qml" line="306"/>
<source>conversation_message_edited_label</source>
<extracomment>&quot;Edited&quot;</extracomment>
<translation>Modifié</translation>
</message>
</context>
@ -2351,19 +2350,19 @@ Error</extracomment>
<context>
<name>ChatMessageCore</name>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="157"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="163"/>
<source>all_reactions_label</source>
<extracomment>&quot;Reactions&quot;: all reactions for one message label</extracomment>
<translation>Réactions</translation>
</message>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="214"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="223"/>
<source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment>
<translation>Supprimé</translation>
</message>
<message>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="216"/>
<location filename="../../core/chat/message/ChatMessageCore.cpp" line="225"/>
<source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment>
<translation>Le message a é supprimé</translation>
@ -2394,24 +2393,24 @@ Error</extracomment>
<translation>La réunion a é annulée</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="171"/>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="182"/>
<source></source>
<translation>de %1 à %2 (UTC%3)</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="234"/>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="245"/>
<source>ics_bubble_description_title</source>
<extracomment>Description</extracomment>
<translation>Description</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="286"/>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="297"/>
<source>ics_bubble_join</source>
<extracomment>&quot;Rejoindre&quot;</extracomment>
<translation>Rejoindre</translation>
</message>
<message numerus="yes">
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="276"/>
<location filename="../../view/Control/Display/Chat/ChatMessageInvitationBubble.qml" line="287"/>
<source>ics_bubble_participants</source>
<extracomment>%n participant(s)</extracomment>
<translation>
@ -2423,44 +2422,44 @@ Error</extracomment>
<context>
<name>ChatMessagesListView</name>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="110"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="121"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="112"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<source>popup_info_find_message_title</source>
<extracomment>Find message</extracomment>
<translation>Trouver un message</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="123"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="125"/>
<source>info_popup_no_result_message</source>
<extracomment>No result found</extracomment>
<translation>Aucun résultat trouvé</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="117"/>
<source>info_popup_first_result_message</source>
<extracomment>First result reached</extracomment>
<translation>Premier résultat atteint</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="113"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="115"/>
<source>info_popup_last_result_message</source>
<extracomment>Last result reached</extracomment>
<translation>Dernier résultat atteint</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="160"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="162"/>
<source>chat_message_list_encrypted_header_title</source>
<extracomment>End to end encrypted chat</extracomment>
<translation>Conversation chiffrée de bout en bout</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="162"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="164"/>
<source>unencrypted_conversation_warning</source>
<extracomment>This conversation is not encrypted !</extracomment>
<translation>Cette conversation n&apos;est pas chiffrée !</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="173"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="175"/>
<source>chat_message_list_encrypted_header_message</source>
<extracomment>Messages in this conversation are e2e encrypted.
Only your correspondent can decrypt them.</extracomment>
@ -2468,7 +2467,7 @@ Error</extracomment>
en bout. Seul votre correspondant peut les déchiffrer.</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="175"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="177"/>
<source>chat_message_list_not_encrypted_header_message</source>
<extracomment>Messages are not end to end encrypted,
may sure you don&apos;t share any sensitive information !</extracomment>
@ -2476,43 +2475,39 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
assurez-vous de ne pas partager dinformations sensibles !</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="215"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="217"/>
<source>chat_message_is_writing_info</source>
<extracomment>%1 is writing</extracomment>
<translation>%1 est en train d&apos;écrire</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="470"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="238"/>
<source>conversation_dialog_delete_chat_message_title</source>
<extracomment>&quot;Delete this message?&quot;</extracomment>
<extracomment>&quot;Supprimer le message ?&quot;</extracomment>
<translation>Supprimer le message ?</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="471"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="246"/>
<source>conversation_dialog_delete_locally_label</source>
<extracomment>&quot;For me&quot;</extracomment>
<translation>Pour moi</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="257"/>
<source>conversation_dialog_delete_for_everyone_label</source>
<extracomment>&quot;For everyone&quot;</extracomment>
<translation>Pour tout le monde</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="268"/>
<source>dialog_cancel</source>
<extracomment>&quot;Cancel&quot;</extracomment>
<translation>Annuler</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="349"/>
<source>info_toast_deleted_title</source>
<extracomment>Deleted</extracomment>
<translation>Supprimé</translation>
</message>
<message>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="472"/>
<location filename="../../view/Control/Display/Chat/ChatMessagesListView.qml" line="351"/>
<source>info_toast_deleted_message</source>
<extracomment>The message has been deleted</extracomment>
<translation>Le message a é supprimé</translation>
@ -2656,17 +2651,35 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<translation>Fichiers joints</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="25"/>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="21"/>
<source>settings_chat_notifications_title</source>
<extracomment>Notifications</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="32"/>
<source>settings_chat_attached_files_auto_download_title</source>
<extracomment>&quot;Automatic download&quot;</extracomment>
<translation>Téléchargement automatique</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="27"/>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="34"/>
<source>settings_chat_attached_files_auto_download_subtitle</source>
<extracomment>&quot;Automatically download transferred or received files in conversations&quot;</extracomment>
<translation>Télécharger automatiquement les fichiers échangés dans les conversations</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="50"/>
<source>settings_chat_display_notification_content_title</source>
<extracomment>&quot;Display notification content&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Settings/ChatSettingsLayout.qml" line="52"/>
<source>settings_chat_display_notification_content_subtitle</source>
<extracomment>&quot;Display the content of the received message&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CliModel</name>
@ -2704,13 +2717,13 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<context>
<name>ConferenceInfoCore</name>
<message>
<location filename="../../core/conference/ConferenceInfoCore.cpp" line="577"/>
<location filename="../../core/conference/ConferenceInfoCore.cpp" line="583"/>
<source>information_popup_error_title</source>
<extracomment>&quot;Erreur&quot;</extracomment>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../core/conference/ConferenceInfoCore.cpp" line="579"/>
<location filename="../../core/conference/ConferenceInfoCore.cpp" line="585"/>
<source>information_popup_disconnected_account_message</source>
<extracomment>&quot;Votre compte est déconnecté&quot;</extracomment>
<translation>Votre compte est déconnecté</translation>
@ -3505,12 +3518,12 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<context>
<name>CoreModel</name>
<message>
<location filename="../../model/core/CoreModel.cpp" line="215"/>
<location filename="../../model/core/CoreModel.cpp" line="218"/>
<source>info_popup_error_title</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../model/core/CoreModel.cpp" line="217"/>
<location filename="../../model/core/CoreModel.cpp" line="220"/>
<source>fetching_config_failed_error_message</source>
<extracomment>&quot;Remote provisioning cannot be retrieved&quot;</extracomment>
<translation>La configuration distante n&apos;a pas pu être récupérée</translation>
@ -4289,7 +4302,7 @@ Expiration : %1</translation>
<context>
<name>MagicSearchList</name>
<message>
<location filename="../../core/search/MagicSearchList.cpp" line="143"/>
<location filename="../../core/search/MagicSearchList.cpp" line="145"/>
<source>device_id</source>
<translation>Téléphone</translation>
</message>
@ -4529,10 +4542,38 @@ Expiration : %1</translation>
<context>
<name>ManageParticipants</name>
<message>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="44"/>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="29"/>
<source>info_popup_error_title</source>
<translation type="unfinished">Erreur</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="31"/>
<source>info_popup_manage_participant_error_message</source>
<extracomment>Error while setting participants !</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="34"/>
<source>info_popup_success_title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="36"/>
<source>info_popup_manage_participant_updated_message</source>
<extracomment>Participants updated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="59"/>
<source>group_infos_manage_participants</source>
<translation>Participants</translation>
</message>
<message>
<location filename="../../view/Page/Layout/Chat/ManageParticipants.qml" line="68"/>
<source>apply_button_text</source>
<extracomment>Apply</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MeetingForm</name>
@ -4786,19 +4827,19 @@ Expiration : %1</translation>
<translation>Adresse de la réunion copiée</translation>
</message>
<message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="786"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="798"/>
<source>meeting_schedule_timezone_title</source>
<extracomment>&quot;Fuseau horaire&quot;</extracomment>
<translation>Fuseau horaire</translation>
</message>
<message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="892"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="904"/>
<source>meeting_info_organizer_label</source>
<extracomment>&quot;Organisateur&quot;</extracomment>
<translation>Organisateur</translation>
</message>
<message>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="909"/>
<location filename="../../view/Page/Main/Meeting/MeetingPage.qml" line="921"/>
<source>meeting_info_join_title</source>
<extracomment>&quot;Rejoindre la réunion&quot;</extracomment>
<translation>Rejoindre la réunion</translation>
@ -4999,13 +5040,19 @@ Expiration : %1</translation>
<translation>Nouvelle invitation à une conférence !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="387"/>
<location filename="../../core/notifier/Notifier.cpp" line="388"/>
<source>new_chat_room_message</source>
<extracomment>&apos;New message received!&apos; Notification that warn the user of a new message.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="391"/>
<source>new_chat_room_messages</source>
<extracomment>&apos;New messages received!&apos; Notification that warn the user of new messages.</extracomment>
<translation>Nouveaux messages reçus !</translation>
</message>
<message>
<location filename="../../core/notifier/Notifier.cpp" line="415"/>
<location filename="../../core/notifier/Notifier.cpp" line="419"/>
<source>new_message_alert_accessible_name</source>
<extracomment>New message on chatroom %1</extracomment>
<translation>Nouveau message sur la conversation %1</translation>
@ -5782,48 +5829,47 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<context>
<name>SelectedChatView</name>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="49"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="50"/>
<source>chat_view_group_call_toast_message</source>
<translation>Démarrer un appel de groupe ?</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="145"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="146"/>
<source>unencrypted_conversation_warning</source>
<extracomment>This conversation is not encrypted !</extracomment>
<translation>Cette conversation n&apos;est pas chiffrée !</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="433"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="448"/>
<source>reply_to_label</source>
<extracomment>Reply to %1</extracomment>
<translation>Réponse à %1</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="417"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="449"/>
<source>conversation_editing_message_title</source>
<extracomment>Message beeing edited</extracomment>
<translation>Modification du message</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="639"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="660"/>
<source>shared_medias_title</source>
<extracomment>Shared medias</extracomment>
<translation>Médias partagés</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="641"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="662"/>
<source>shared_documents_title</source>
<extracomment>Shared documents</extracomment>
<translation>Documents partagés</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="670"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="691"/>
<source>forward_to_title</source>
<extracomment>Forward to</extracomment>
<translation>Transférer à</translation>
</message>
<message>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="704"/>
<location filename="../../view/Page/Form/Chat/SelectedChatView.qml" line="725"/>
<source>conversations_title</source>
<extracomment>Conversations</extracomment>
<translation>Conversations</translation>
@ -5973,7 +6019,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<translation>Message vocal (%1)</translation>
</message>
<message>
<location filename="../../model/tool/ToolModel.cpp" line="614"/>
<location filename="../../model/tool/ToolModel.cpp" line="623"/>
<source>unknown_audio_device_name</source>
<translation>Appareil inconnu</translation>
</message>
@ -5993,22 +6039,20 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<translation>Modification d&apos;une réunion</translation>
</message>
<message>
<location filename="../../model/tool/ToolModel.cpp" line="530"/>
<location filename="../../model/tool/ToolModel.cpp" line="563"/>
<source>conversation_message_content_deleted_label</source>
<extracomment>&quot;&lt;i&gt;This message has been deleted&lt;/i&gt;&quot;</extracomment>
<translation>&lt;i&gt;Le message a é supprimé&lt;/i&gt;</translation>
</message>
<message>
<location filename="../../model/tool/ToolModel.cpp" line="530"/>
<location filename="../../model/tool/ToolModel.cpp" line="562"/>
<source>conversation_message_content_deleted_by_us_label</source>
<extracomment>&quot;&lt;i&gt;You have deleted this message&lt;/i&gt;&quot;</extracomment>
<translation>&lt;i&gt;Vous avez supprimé le message&lt;/i&gt;</translation>
</message>
</context>
<context>
<name>Utils</name>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2192"/>
<location filename="../../tool/Utils.cpp" line="2236"/>
<source>nMinute</source>
<translation>
<numerusform>%1 minute</numerusform>
@ -6016,7 +6060,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2193"/>
<location filename="../../tool/Utils.cpp" line="2237"/>
<source>nHour</source>
<translation>
<numerusform>%1 heure</numerusform>
@ -6024,8 +6068,8 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2194"/>
<location filename="../../tool/Utils.cpp" line="2195"/>
<location filename="../../tool/Utils.cpp" line="2238"/>
<location filename="../../tool/Utils.cpp" line="2239"/>
<source>nDay</source>
<translation>
<numerusform>%1 jour</numerusform>
@ -6033,7 +6077,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2196"/>
<location filename="../../tool/Utils.cpp" line="2240"/>
<source>nWeek</source>
<translation>
<numerusform>%1 semaine</numerusform>
@ -6041,7 +6085,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
</translation>
</message>
<message numerus="yes">
<location filename="../../tool/Utils.cpp" line="2197"/>
<location filename="../../tool/Utils.cpp" line="2241"/>
<source>nSeconds</source>
<translation>
<numerusform>%1 seconde</numerusform>
@ -6167,7 +6211,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<translation>Erreur lors de la création de la conversation avec %1</translation>
</message>
<message>
<location filename="../../tool/Utils.cpp" line="2103"/>
<location filename="../../tool/Utils.cpp" line="2147"/>
<source>recorder_error</source>
<extracomment>Error with the recorder</extracomment>
<translation>Erreur avec l&apos;enregistreur</translation>
@ -6175,7 +6219,8 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<message>
<location filename="../../tool/Utils.cpp" line="2008"/>
<location filename="../../tool/Utils.cpp" line="2040"/>
<location filename="../../tool/Utils.cpp" line="2105"/>
<location filename="../../tool/Utils.cpp" line="2084"/>
<location filename="../../tool/Utils.cpp" line="2149"/>
<source>chat_error</source>
<translation>Erreur dans le chat</translation>
</message>
@ -6190,8 +6235,10 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<location filename="../../tool/Utils.cpp" line="2025"/>
<location filename="../../tool/Utils.cpp" line="2042"/>
<location filename="../../tool/Utils.cpp" line="2069"/>
<location filename="../../tool/Utils.cpp" line="2107"/>
<location filename="../../tool/Utils.cpp" line="2121"/>
<location filename="../../tool/Utils.cpp" line="2086"/>
<location filename="../../tool/Utils.cpp" line="2113"/>
<location filename="../../tool/Utils.cpp" line="2151"/>
<location filename="../../tool/Utils.cpp" line="2165"/>
<source>info_popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Erreur</translation>
@ -6215,9 +6262,9 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<translation>Impossible de répondre : message invalide</translation>
</message>
<message>
<location filename="../../tool/Utils.cpp" line="2123"/>
<location filename="../../tool/Utils.cpp" line="2082"/>
<source>chat_message_edit_error</source>
<extracomment>Cannot modify invalid message</extracomment>
<extracomment>Cannot edit to invalid message</extracomment>
<translation>Impossible de modifier le message : message invalide</translation>
</message>
<message>
@ -6227,7 +6274,7 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<translation>Impossible d&apos;envoyer la réponse : %1</translation>
</message>
<message>
<location filename="../../tool/Utils.cpp" line="2129"/>
<location filename="../../tool/Utils.cpp" line="2088"/>
<source>info_popup_edited_message_error</source>
<extracomment>Could not send edited message : %1</extracomment>
<translation>Impossible d&apos;envoyer le message modifié : %1</translation>
@ -6239,19 +6286,19 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<translation>Impossible de créer le message</translation>
</message>
<message>
<location filename="../../tool/Utils.cpp" line="2156"/>
<location filename="../../tool/Utils.cpp" line="2115"/>
<source>info_popup_send_edited_message_error_message</source>
<extracomment>Failed to create edited message</extracomment>
<translation>Impossible de créer le message modifié</translation>
</message>
<message>
<location filename="../../tool/Utils.cpp" line="2109"/>
<location filename="../../tool/Utils.cpp" line="2153"/>
<source>info_popup_send_voice_message_error_message</source>
<extracomment>Could not send voice message : %1</extracomment>
<translation>Impossible d&apos;envoyer le message vocal : %1</translation>
</message>
<message>
<location filename="../../tool/Utils.cpp" line="2123"/>
<location filename="../../tool/Utils.cpp" line="2167"/>
<source>info_popup_send_voice_message_sending_error_message</source>
<extracomment>Failed to create message from record</extracomment>
<translation>Impossible de créer le message vocal</translation>

View file

@ -237,18 +237,24 @@ void ChatModel::toggleParticipantAdminStatusAtIndex(int index) const {
mMonitor->setParticipantAdminStatus(participant, !participant->isAdmin());
}
void ChatModel::setParticipantAddresses(const QStringList &addresses) const {
void ChatModel::setParticipantAddresses(const QStringList &addresses) {
QSet<QString> s{addresses.cbegin(), addresses.cend()};
bool soFarSoGood = true;
for (auto p : mMonitor->getParticipants()) {
auto address = Utils::coreStringToAppString(p->getAddress()->asStringUriOnly());
if (s.contains(address)) s.remove(address);
else mMonitor->removeParticipant(p);
else {
mMonitor->removeParticipants({p});
}
}
for (const auto &a : s) {
auto address = linphone::Factory::get()->createAddress(Utils::appStringToCoreString(a));
if (address) mMonitor->addParticipant(address);
if (address) {
soFarSoGood &= mMonitor->addParticipants({address});
}
}
emit participantAddressesChanged(mMonitor, soFarSoGood);
}
//---------------------------------------------------------------//

View file

@ -84,7 +84,7 @@ public:
void setEphemeralLifetime(int time);
void setSubject(QString subject) const;
void removeParticipantAtIndex(int index) const;
void setParticipantAddresses(const QStringList &addresses) const;
void setParticipantAddresses(const QStringList &addresses);
void toggleParticipantAdminStatusAtIndex(int index) const;
signals:
@ -94,6 +94,7 @@ signals:
void mutedChanged(bool muted);
void ephemeralEnableChanged(bool enable);
void ephemeralLifetimeChanged(int time);
void participantAddressesChanged(const std::shared_ptr<linphone::ChatRoom> &chatRoom, bool success);
private:
DECLARE_ABSTRACT_OBJECT

View file

@ -37,6 +37,7 @@ ChatMessageModel::ChatMessageModel(const std::shared_ptr<linphone::ChatMessage>
mEphemeralTimer.setInterval(60);
mEphemeralTimer.setSingleShot(false);
if (mMonitor->getEphemeralExpireTime() != 0) mEphemeralTimer.start();
mChatRoom = mMonitor->getChatRoom();
connect(&mEphemeralTimer, &QTimer::timeout, this,
[this] { emit ephemeralMessageTimeUpdated(mMonitor, mMonitor->getEphemeralExpireTime()); });
connect(this, &ChatMessageModel::ephemeralMessageTimerStarted, this, [this] { mEphemeralTimer.start(); });
@ -47,7 +48,8 @@ ChatMessageModel::ChatMessageModel(const std::shared_ptr<linphone::ChatMessage>
// We need to force this signal sending because there is no callback to know when a message has been read
connect(CoreModel::getInstance().get(), &CoreModel::chatRoomRead, this,
[this](const std::shared_ptr<linphone::Core> &core, const std::shared_ptr<linphone::ChatRoom> &chatRoom) {
if (chatRoom == mMonitor->getChatRoom()) {
if (!mMonitor || !mChatRoom.lock()) return;
if (chatRoom == mChatRoom.lock()) {
if (mMonitor->isRead()) {
emit messageRead(mMonitor);
}

View file

@ -33,7 +33,7 @@ DEFINE_ABSTRACT_OBJECT(ConferenceInfoModel)
ConferenceInfoModel::ConferenceInfoModel(const std::shared_ptr<linphone::ConferenceInfo> &conferenceInfo,
QObject *parent)
// TODO : remove cloning when a fix will be done in SDK (#SDK-1001 ticket)
: mConferenceInfo(conferenceInfo->clone()) {
: mConferenceInfo(conferenceInfo) {
mustBeInLinphoneThread(getClassName());
}

View file

@ -521,6 +521,17 @@ void SettingsModel::setAutoDownloadReceivedFiles(bool status) {
emit autoDownloadReceivedFilesChanged(status);
}
bool SettingsModel::getDisplayNotificationContent() const {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
return !!mConfig->getInt(UiSection, "display_notification_content", 1);
}
void SettingsModel::setDisplayNotificationContent(bool display) {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
mConfig->setInt(UiSection, "display_notification_content", display);
emit displayNotificationContentChanged(display);
}
bool SettingsModel::getEchoCancellationEnabled() const {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
return CoreModel::getInstance()->getCore()->echoCancellationEnabled();

View file

@ -66,6 +66,9 @@ public:
void setAutoDownloadReceivedFiles(bool enabled);
bool getAutoDownloadReceivedFiles() const;
void setDisplayNotificationContent(bool display);
bool getDisplayNotificationContent() const;
// Audio. --------------------------------------------------------------------
bool getIsInCall() const;
@ -287,6 +290,7 @@ signals:
// Messages. --------------------------------------------------------------------
void autoDownloadReceivedFilesChanged(bool enabled);
void displayNotificationContentChanged(bool display);
private:
void notifyConfigReady();

View file

@ -66,7 +66,7 @@ template <class A, class B>
class SafeConnection : public QObject {
// Use create functions.
protected:
SafeConnection(const QSharedPointer<A> &a, std::shared_ptr<B> b)
SafeConnection(QSharedPointer<A> a, std::shared_ptr<B> b)
: mCore(a), mModel(b), mCoreObject(a.get()), mModelObject(b.get()) {
}
SafeConnection(QSharedPointer<A> a, QSharedPointer<B> b)
@ -150,6 +150,7 @@ public:
}
bool tryLock() {
if (!this) return false;
mLocker.lock();
auto coreLocked = mCore.lock();
auto modelLocked = mModel.lock();

View file

@ -87,6 +87,7 @@ ListView {
onModelAboutToBeReset: {
loading = true
}
onModelReset: loading = false
onModelUpdated: {
loading = false
var index = eventLogProxy.findFirstUnreadIndex()

View file

@ -22,6 +22,22 @@ Rectangle {
height: participantAddColumn.implicitHeight
signal done()
Connections {
enabled: chatGui !== null
target: chatGui.core
function onParticipantAddressesChanged(success) {
if (!success) UtilsCpp.showInformationPopup(qsTr("info_popup_error_title"),
//: Error while setting participants !
qsTr("info_popup_manage_participant_error_message"), false)
else {
mainItem.done()
UtilsCpp.showInformationPopup(qsTr("info_popup_success_title"),
//: Participants updated
qsTr("info_popup_manage_participant_updated_message"), true)
}
}
}
ColumnLayout {
id: participantAddColumn
anchors.fill: parent
@ -36,7 +52,6 @@ Rectangle {
style: ButtonStyle.noBackground
icon.source: AppIcons.leftArrow
onClicked: {
mainItem.chatGui.core.lSetParticipantsAddresses(manageParticipantsLayout.selectedParticipants)
mainItem.done()
}
}
@ -47,6 +62,14 @@ Rectangle {
font: Typography.h4
Layout.fillWidth: true
}
MediumButton {
id: manageParticipantsApplyButton
//: Apply
text: qsTr("apply_button_text")
onClicked: {
mainItem.chatGui.core.lSetParticipantsAddresses(manageParticipantsLayout.selectedParticipants)
}
}
}
AddParticipantsForm {
id: manageParticipantsLayout

View file

@ -15,6 +15,13 @@ AbstractSettingsLayout {
subTitle: "",
contentComponent: attachedFilesParamComp,
// hideTopMargin: true
},
{
//: Notifications
title: qsTr("settings_chat_notifications_title"),
subTitle: "",
contentComponent: displayNotifParamComp,
// hideTopMargin: true
}
]
@ -28,6 +35,24 @@ AbstractSettingsLayout {
propertyName: "autoDownloadReceivedFiles"
propertyOwner: SettingsCpp
Connections {
target: mainItem
function onSave() {
SettingsCpp.save()
}
}
}
}
Component {
id: displayNotifParamComp
SwitchSetting {
//: "Display notification content"
titleText: qsTr("settings_chat_display_notification_content_title")
//: "Display the content of the received message"
subTitleText: qsTr("settings_chat_display_notification_content_subtitle")
propertyName: "displayNotificationContent"
propertyOwner: SettingsCpp
Connections {
target: mainItem
function onSave() {

View file

@ -321,7 +321,7 @@ AbstractMainPage {
meetingSetup.conferenceInfoGui.core.save()
//: "Création de la réunion en cours "
mainWindow.showLoadingPopup(qsTr("meeting_schedule_creation_in_progress"), true, function () {
meetingSetup.conferenceInfoGui.core.cancelCreation()
meetingSetup.conferenceInfoGui.core.lCancelCreation()
})
}
}

@ -1 +1 @@
Subproject commit cbf282611d1d39dac1405a5a9388de0e8ee5b9e5
Subproject commit 2e6e6b927ce202f6948da02ea33081a52b89bf48