diff --git a/qml/components/InReplyToRow.qml b/qml/components/InReplyToRow.qml index 3c4fb9b..ed9448b 100644 --- a/qml/components/InReplyToRow.qml +++ b/qml/components/InReplyToRow.qml @@ -37,7 +37,7 @@ Row { onInReplyToMessageChanged: { if (inReplyToMessage) { inReplyToUserText.text = (inReplyToMessage.sender["@type"] === "messageSenderChat" ? page.chatInformation.title : (inReplyToRow.inReplyToMessage.sender.user_id !== inReplyToRow.myUserId) ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(inReplyToRow.inReplyToMessage.sender.user_id)), inReplyToUserText.font.pixelSize) : qsTr("You")); - inReplyToMessageText.text = Emoji.emojify(Functions.getMessageText(inReplyToRow.inReplyToMessage, true, inReplyToRow.inReplyToMessage.sender.user_id === inReplyToRow.myUserId, false), inReplyToMessageText.font.pixelSize); + inReplyToMessageText.text = Emoji.emojify(Functions.getMessageText(inReplyToRow.inReplyToMessage, true, inReplyToRow.myUserId, false), inReplyToMessageText.font.pixelSize); } } diff --git a/qml/components/MessageListViewItem.qml b/qml/components/MessageListViewItem.qml index a3aafdb..e39c0e9 100644 --- a/qml/components/MessageListViewItem.qml +++ b/qml/components/MessageListViewItem.qml @@ -106,7 +106,7 @@ ListItem { } MenuItem { onClicked: { - Clipboard.text = Functions.getMessageText(myMessage, true, false, true); + Clipboard.text = Functions.getMessageText(myMessage, true, userInformation.id, true); } text: qsTr("Copy Message to Clipboard") } @@ -163,7 +163,7 @@ ListItem { if (index === modelIndex) { Debug.log("[ChatModel] This message was updated, index ", index, ", updating content..."); messageDateText.text = getMessageStatusText(myMessage, index, chatView.lastReadSentIndex, messageDateText.useElapsed); - messageText.text = Emoji.emojify(Functions.getMessageText(myMessage, false, messageListItem.isOwnMessage. false), messageText.font.pixelSize); + messageText.text = Emoji.emojify(Functions.getMessageText(myMessage, false, page.myUserId, false), messageText.font.pixelSize); } } } @@ -392,7 +392,7 @@ ListItem { Text { id: messageText width: parent.width - text: Emoji.emojify(Functions.getMessageText(myMessage, false, messageListItem.isOwnMessage, false), font.pixelSize) + text: Emoji.emojify(Functions.getMessageText(myMessage, false, page.myUserId, false), font.pixelSize) font.pixelSize: Theme.fontSizeSmall color: messageListItem.textColor wrapMode: Text.Wrap diff --git a/qml/components/MessageListViewItemSimple.qml b/qml/components/MessageListViewItemSimple.qml index b3c75f9..3925028 100644 --- a/qml/components/MessageListViewItemSimple.qml +++ b/qml/components/MessageListViewItemSimple.qml @@ -43,7 +43,7 @@ Item { color: Theme.highlightColor horizontalAlignment: Text.AlignHCenter font.pixelSize: Theme.fontSizeExtraSmall - text: "" + (!messageListItem.isOwnMessage ? Emoji.emojify(Functions.getUserName(messageListItem.userInformation), font.pixelSize) : qsTr("You")) + " " + Emoji.emojify(Functions.getMessageText(messageListItem.myMessage, false, messageListItem.isOwnMessage, false), font.pixelSize) + text: "" + (!messageListItem.isOwnMessage ? Emoji.emojify(Functions.getUserName(messageListItem.userInformation), font.pixelSize) : qsTr("You")) + " " + Emoji.emojify(Functions.getMessageText(messageListItem.myMessage, false, chatPage.myUserId, false), font.pixelSize) textFormat: Text.RichText wrapMode: Text.WrapAtWordBoundaryOrAnywhere onLinkActivated: { diff --git a/qml/components/MessageOverlayFlickable.qml b/qml/components/MessageOverlayFlickable.qml index b6e996d..b3db83d 100644 --- a/qml/components/MessageOverlayFlickable.qml +++ b/qml/components/MessageOverlayFlickable.qml @@ -139,7 +139,7 @@ Flickable { Text { id: overlayMessageText width: parent.width - text: Emoji.emojify(Functions.getMessageText(overlayMessage, false, messageOverlayFlickable.isOwnMessage, false), font.pixelSize) + text: Emoji.emojify(Functions.getMessageText(overlayMessage, false, tdLibWrapper.getUserInformation().id, false), font.pixelSize) font.pixelSize: Theme.fontSizeMedium color: Theme.primaryColor wrapMode: Text.Wrap diff --git a/qml/components/PinnedMessageItem.qml b/qml/components/PinnedMessageItem.qml index 93b6c92..8d048dc 100644 --- a/qml/components/PinnedMessageItem.qml +++ b/qml/components/PinnedMessageItem.qml @@ -35,7 +35,7 @@ Item { Debug.log("[ChatPage] Activating pinned message"); var messageUserText = (pinnedMessage.sender.user_id !== chatPage.myUserId) ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(pinnedMessage.sender.user_id)), pinnedMessageUserText.font.pixelSize) : qsTr("You"); pinnedMessageUserText.text = (messageUserText === "" ? qsTr("Pinned Message") : messageUserText ); - pinnedMessageText.text = Emoji.emojify(Functions.getMessageText(pinnedMessage, true, pinnedMessage.sender.user_id === chatPage.myUserId, false), pinnedMessageText.font.pixelSize); + pinnedMessageText.text = Emoji.emojify(Functions.getMessageText(pinnedMessage, true, chatPage.myUserId, false), pinnedMessageText.font.pixelSize); pinnedMessageItem.visible = true; } else { pinnedMessageItem.visible = false; diff --git a/qml/js/functions.js b/qml/js/functions.js index 3b4d180..923f068 100644 --- a/qml/js/functions.js +++ b/qml/js/functions.js @@ -32,7 +32,10 @@ function getUserName(userInformation) { return ((userInformation.first_name || "") + " " + (userInformation.last_name || "")).trim(); } -function getMessageText(message, simple, myself, ignoreEntities) { +function getMessageText(message, simple, currentUserId, ignoreEntities) { + + var myself = ( message.sender['@type'] === "messageSenderUser" && message.sender.user_id.toString() === currentUserId.toString() ); + switch(message.content['@type']) { case 'messageText': if (simple) { @@ -89,9 +92,24 @@ function getMessageText(message, simple, myself, ignoreEntities) { case 'messageChatJoinByLink': return myself ? qsTr("joined this chat", "myself") : qsTr("joined this chat"); case 'messageChatAddMembers': - return myself ? qsTr("were added to this chat", "myself") : qsTr("was added to this chat"); + if (message.sender['@type'] === "messageSenderUser" && message.sender.user_id === message.content.member_user_ids[0]) { + return myself ? qsTr("were added to this chat", "myself") : qsTr("was added to this chat"); + } else { + var addedUserNames = ""; + for (var i = 0; i < message.content.member_user_ids.length; i++) { + if (i > 0) { + addedUserNames += ", "; + } + addedUserNames += getUserName(tdLibWrapper.getUserInformation(message.content.member_user_ids[i])); + } + return myself ? qsTr("have added %1 to the chat", "myself").arg(addedUserNames) : qsTr("has added %1 to the chat").arg(addedUserNames); + } case 'messageChatDeleteMember': - return myself ? qsTr("left this chat", "myself") : qsTr("left this chat"); + if (message.sender['@type'] === "messageSenderUser" && message.sender.user_id === message.content.user_id) { + return myself ? qsTr("left this chat", "myself") : qsTr("left this chat"); + } else { + return myself ? qsTr("have removed %1 from the chat", "myself").arg(getUserName(tdLibWrapper.getUserInformation(message.content.user_id))) : qsTr("has removed %1 from the chat").arg(getUserName(tdLibWrapper.getUserInformation(message.content.user_id))); + } case 'messageChatChangeTitle': return myself ? qsTr("changed the chat title to %1", "myself").arg(message.content.title) : qsTr("changed the chat title to %1").arg(message.content.title); case 'messagePoll': @@ -415,7 +433,7 @@ function getMessagesArrayText(messages) { lines.push(senderName); } lastSenderName = senderName; - lines.push(getMessageText(messages[i], true, false)); + lines.push(getMessageText(messages[i], true, tdLibWrapper.getUserInformation().id, false)); lines.push(""); } return lines.join("\n"); diff --git a/qml/pages/ChatPage.qml b/qml/pages/ChatPage.qml index ddc59a4..29747e6 100644 --- a/qml/pages/ChatPage.qml +++ b/qml/pages/ChatPage.qml @@ -935,7 +935,7 @@ Page { } onEditMessage: { newMessageColumn.editMessageId = messageId - newMessageTextField.text = Functions.getMessageText(myMessage, false, false, true) + newMessageTextField.text = Functions.getMessageText(myMessage, false, chatPage.myUserId, true) newMessageTextField.focus = true } } diff --git a/src/chatlistmodel.cpp b/src/chatlistmodel.cpp index a998b91..d51fff7 100644 --- a/src/chatlistmodel.cpp +++ b/src/chatlistmodel.cpp @@ -72,7 +72,7 @@ public: RoleIsChannel }; - ChatData(const QVariantMap &data, const QVariantMap &userInformation); + ChatData(TDLibWrapper *tdLibWrapper, const QVariantMap &data); int compareTo(const ChatData *chat) const; bool setOrder(const QString &order); @@ -94,6 +94,7 @@ public: QVector updateLastMessage(const QVariantMap &message); QVector updateGroup(const TDLibWrapper::Group *group); QVector updateSecretChat(const QVariantMap &secretChatDetails); + TDLibWrapper *tdLibWrapper; public: QVariantMap chatData; @@ -107,7 +108,8 @@ public: QVariantMap userInformation; }; -ChatListModel::ChatData::ChatData(const QVariantMap &data, const QVariantMap &userInfo) : +ChatListModel::ChatData::ChatData(TDLibWrapper *tdLibWrapper, const QVariantMap &data) : + tdLibWrapper(tdLibWrapper), chatData(data), chatId(data.value(ID).toLongLong()), order(data.value(ORDER).toLongLong()), @@ -115,7 +117,7 @@ ChatListModel::ChatData::ChatData(const QVariantMap &data, const QVariantMap &us verified(false), memberStatus(TDLibWrapper::ChatMemberStatusUnknown), secretChatState(TDLibWrapper::SecretChatStateUnknown), - userInformation(userInfo) + userInformation(tdLibWrapper->getUserInformation()) { const QVariantMap type(data.value(TYPE).toMap()); switch (chatType = TDLibWrapper::chatTypeFromString(type.value(_TYPE).toString())) { @@ -199,7 +201,7 @@ qlonglong ChatListModel::ChatData::senderMessageDate() const QString ChatListModel::ChatData::senderMessageText() const { - return FernschreiberUtils::getMessageShortText(lastMessage(CONTENT).toMap(), ( isChannel() ? false : this->userInformation.value(ID).toLongLong() == senderUserId() ) ); + return FernschreiberUtils::getMessageShortText(tdLibWrapper, lastMessage(CONTENT).toMap(), isChannel(), this->userInformation.value(ID).toLongLong(), lastMessage(SENDER).toMap() ); } QString ChatListModel::ChatData::senderMessageStatus() const @@ -592,7 +594,7 @@ void ChatListModel::setShowAllChats(bool showAll) void ChatListModel::handleChatDiscovered(const QString &, const QVariantMap &chatToBeAdded) { - ChatData *chat = new ChatData(chatToBeAdded, tdLibWrapper->getUserInformation()); + ChatData *chat = new ChatData(tdLibWrapper, chatToBeAdded); const TDLibWrapper::Group *group = tdLibWrapper->getGroup(chat->groupId); if (group) { diff --git a/src/fernschreiberutils.cpp b/src/fernschreiberutils.cpp index e2e8631..b75734a 100644 --- a/src/fernschreiberutils.cpp +++ b/src/fernschreiberutils.cpp @@ -8,12 +8,14 @@ FernschreiberUtils::FernschreiberUtils(QObject *parent) : QObject(parent) } -QString FernschreiberUtils::getMessageShortText(const QVariantMap &messageContent, const bool &myself) +QString FernschreiberUtils::getMessageShortText(TDLibWrapper *tdLibWrapper, const QVariantMap &messageContent, const bool isChannel, const qlonglong currentUserId, const QVariantMap &messageSender) { if (messageContent.isEmpty()) { return QString(); } + const bool myself = !isChannel && (messageSender.value("@type").toString() == "messageSenderUser" && messageSender.value("user_id").toLongLong() == currentUserId); + QString contentType = messageContent.value("@type").toString(); if (contentType == "messageText") { @@ -53,10 +55,26 @@ QString FernschreiberUtils::getMessageShortText(const QVariantMap &messageConten return myself ? tr("joined this chat", "myself") : tr("joined this chat"); } if (contentType == "messageChatAddMembers") { - return myself ? tr("were added to this chat", "myself") : tr("was added to this chat"); + if (messageSender.value("@type").toString() == "messageSenderUser" && messageSender.value("user_id").toLongLong() == messageContent.value("member_user_ids").toList().at(0).toLongLong()) { + return myself ? tr("were added to this chat", "myself") : tr("was added to this chat"); + } else { + QVariantList memberUserIds = messageContent.value("member_user_ids").toList(); + QString addedUserNames; + for (int i = 0; i < memberUserIds.size(); i++) { + if (i > 0) { + addedUserNames += ", "; + } + addedUserNames += getUserName(tdLibWrapper->getUserInformation(memberUserIds.at(i).toString())); + } + return myself ? tr("have added %1 to the chat", "myself").arg(addedUserNames) : tr("has added %1 to the chat").arg(addedUserNames); + } } if (contentType == "messageChatDeleteMember") { - return myself ? tr("left this chat", "myself") : tr("left this chat"); + if (messageSender.value("@type").toString() == "messageSenderUser" && messageSender.value("user_id").toLongLong() == messageContent.value("user_id").toLongLong()) { + return myself ? tr("left this chat", "myself") : tr("left this chat"); + } else { + return myself ? tr("have removed %1 from the chat", "myself").arg(getUserName(tdLibWrapper->getUserInformation(messageContent.value("user_id").toString()))) : tr("has removed %1 from the chat").arg(getUserName(tdLibWrapper->getUserInformation(messageContent.value("user_id").toString()))); + } } if (contentType == "messageChatChangeTitle") { return myself ? tr("changed the chat title", "myself") : tr("changed the chat title"); @@ -103,3 +121,10 @@ QString FernschreiberUtils::getMessageShortText(const QVariantMap &messageConten return myself ? tr("sent an unsupported message: %1", "myself").arg(contentType.mid(7)) : tr("sent an unsupported message: %1").arg(contentType.mid(7)); } + +QString FernschreiberUtils::getUserName(const QVariantMap &userInformation) +{ + const QString firstName = userInformation.value("first_name").toString(); + const QString lastName = userInformation.value("last_name").toString(); + return QString(firstName + " " + lastName).trimmed(); +} diff --git a/src/fernschreiberutils.h b/src/fernschreiberutils.h index 10858f1..35fc8a0 100644 --- a/src/fernschreiberutils.h +++ b/src/fernschreiberutils.h @@ -2,6 +2,7 @@ #define FERNSCHREIBERUTILS_H #include +#include "tdlibwrapper.h" class FernschreiberUtils : public QObject { @@ -9,7 +10,8 @@ class FernschreiberUtils : public QObject public: explicit FernschreiberUtils(QObject *parent = nullptr); - static QString getMessageShortText(const QVariantMap &messageContent, const bool &myself); + static QString getMessageShortText(TDLibWrapper *tdLibWrapper, const QVariantMap &messageContent, const bool isChannel, const qlonglong currentUserId, const QVariantMap &messageSender); + static QString getUserName(const QVariantMap &userInformation); signals: diff --git a/src/notificationmanager.cpp b/src/notificationmanager.cpp index 43eed89..dbeb1bf 100644 --- a/src/notificationmanager.cpp +++ b/src/notificationmanager.cpp @@ -332,25 +332,22 @@ void NotificationManager::publishNotification(const NotificationGroup *notificat } QString notificationBody; + const QVariantMap senderInformation = messageMap.value(SENDER).toMap(); if (notificationGroup->totalCount == 1 && !messageMap.isEmpty()) { LOG("Group" << notificationGroup->notificationGroupId << "has 1 notification"); if (chatInformation && (chatInformation->type == TDLibWrapper::ChatTypeBasicGroup || (chatInformation->type == TDLibWrapper::ChatTypeSupergroup && !chatInformation->isChannel))) { // Add author - const QVariantMap senderInformation = messageMap.value(SENDER).toMap(); QString fullName; if (senderInformation.value(_TYPE).toString() == "messageSenderChat") { fullName = tdLibWrapper->getChat(senderInformation.value(CHAT_ID).toString()).value(TITLE).toString(); } else { - const QVariantMap authorInformation = tdLibWrapper->getUserInformation(senderInformation.value(USER_ID).toString()); - const QString firstName = authorInformation.value(FIRST_NAME).toString(); - const QString lastName = authorInformation.value(LAST_NAME).toString(); - fullName = firstName + " " + lastName; + fullName = FernschreiberUtils::getUserName(tdLibWrapper->getUserInformation(senderInformation.value(USER_ID).toString())); } notificationBody = notificationBody + fullName.trimmed() + ": "; } - notificationBody += getNotificationText(messageMap.value(CONTENT).toMap()); + notificationBody += FernschreiberUtils::getMessageShortText(tdLibWrapper, messageMap.value(CONTENT).toMap(), (chatInformation ? chatInformation->isChannel : false), tdLibWrapper->getUserInformation().value(ID).toLongLong(), senderInformation ); nemoNotification->setBody(notificationBody); } else { // Either we have more than one notification or we have no content to display @@ -380,13 +377,6 @@ void NotificationManager::publishNotification(const NotificationGroup *notificat nemoNotification->publish(); } -QString NotificationManager::getNotificationText(const QVariantMap ¬ificationContent) -{ - LOG("Getting notification text from content" << notificationContent); - - return FernschreiberUtils::getMessageShortText(notificationContent, false); -} - void NotificationManager::controlLedNotification(bool enabled) { static const QString PATTERN("PatternCommunicationIM"); diff --git a/src/notificationmanager.h b/src/notificationmanager.h index 57c66eb..1fef892 100644 --- a/src/notificationmanager.h +++ b/src/notificationmanager.h @@ -50,7 +50,6 @@ public slots: private: void publishNotification(const NotificationGroup *notificationGroup, bool needFeedback); - QString getNotificationText(const QVariantMap ¬ificationContent); void controlLedNotification(bool enabled); void updateNotificationGroup(int groupId, qlonglong chatId, int totalCount, const QVariantList &addedNotifications, diff --git a/translations/harbour-fernschreiber-de.ts b/translations/harbour-fernschreiber-de.ts index a1e9739..29f8c68 100644 --- a/translations/harbour-fernschreiber-de.ts +++ b/translations/harbour-fernschreiber-de.ts @@ -765,6 +765,24 @@ sent an audio hat eine Audiodatei gesendet + + has added %1 to the chat + hat %1 zum Chat hinzugefügt + + + has removed %1 from the chat + hat %1 vom Chat entfernt + + + have added %1 to the chat + myself + haben %1 zum Chat hinzugefügt + + + have removed %1 from the chat + myself + haben %1 vom Chat entfernt + ImagePage @@ -1028,11 +1046,11 @@ Download of %1 successful. - Download von %1 erfolgreich. + Download von %1 erfolgreich. Download failed. - Download fehlgeschlagen. + Download fehlgeschlagen. @@ -1712,5 +1730,23 @@ Pending acknowledgement Ausstehende Bestätigung + + has added %1 to the chat + hat %1 zum Chat hinzugefügt + + + has removed %1 from the chat + hat %1 vom Chat entfernt + + + have added %1 to the chat + myself + haben %1 zum Chat hinzugefügt + + + have removed %1 from the chat + myself + haben %1 vom Chat entfernt + diff --git a/translations/harbour-fernschreiber-en.ts b/translations/harbour-fernschreiber-en.ts index 41caf9e..9db2c96 100644 --- a/translations/harbour-fernschreiber-en.ts +++ b/translations/harbour-fernschreiber-en.ts @@ -765,6 +765,24 @@ sent an audio sent an audio + + has added %1 to the chat + has added %1 to the chat + + + has removed %1 from the chat + has removed %1 from the chat + + + have added %1 to the chat + myself + have added %1 to the chat + + + have removed %1 from the chat + myself + have removed %1 from the chat + ImagePage @@ -1028,11 +1046,11 @@ Download of %1 successful. - Download of %1 successful. + Download of %1 successful. Download failed. - Download failed. + Download failed. @@ -1712,5 +1730,23 @@ Pending acknowledgement Pending acknowledgement + + has added %1 to the chat + has added %1 to the chat + + + has removed %1 from the chat + has removed %1 from the chat + + + have added %1 to the chat + myself + have added %1 to the chat + + + have removed %1 from the chat + myself + have removed %1 from the chat + diff --git a/translations/harbour-fernschreiber-es.ts b/translations/harbour-fernschreiber-es.ts index 35ed61b..af19a0f 100644 --- a/translations/harbour-fernschreiber-es.ts +++ b/translations/harbour-fernschreiber-es.ts @@ -755,6 +755,24 @@ sent an audio envió un audio + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + ImagePage @@ -1693,5 +1711,23 @@ Pending acknowledgement Pendiente de reconocimiento + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + diff --git a/translations/harbour-fernschreiber-fi.ts b/translations/harbour-fernschreiber-fi.ts index 1419cd6..d940597 100644 --- a/translations/harbour-fernschreiber-fi.ts +++ b/translations/harbour-fernschreiber-fi.ts @@ -766,6 +766,24 @@ sent an audio lähetti äänitteen + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + ImagePage @@ -1713,5 +1731,23 @@ Pending acknowledgement Odottaa hyväksyntää + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + diff --git a/translations/harbour-fernschreiber-hu.ts b/translations/harbour-fernschreiber-hu.ts index f24ffa0..1d6a27d 100644 --- a/translations/harbour-fernschreiber-hu.ts +++ b/translations/harbour-fernschreiber-hu.ts @@ -755,6 +755,24 @@ sent an audio audiót küldött + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + ImagePage @@ -1693,5 +1711,23 @@ Pending acknowledgement + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + diff --git a/translations/harbour-fernschreiber-it.ts b/translations/harbour-fernschreiber-it.ts index c33a2a1..3f6c8e0 100644 --- a/translations/harbour-fernschreiber-it.ts +++ b/translations/harbour-fernschreiber-it.ts @@ -765,6 +765,24 @@ sent an audio ha inviato un audio + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + ImagePage @@ -1712,5 +1730,23 @@ Pending acknowledgement In attesa di conferma + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + diff --git a/translations/harbour-fernschreiber-pl.ts b/translations/harbour-fernschreiber-pl.ts index 4f6b1ae..e8ad7cf 100644 --- a/translations/harbour-fernschreiber-pl.ts +++ b/translations/harbour-fernschreiber-pl.ts @@ -775,6 +775,24 @@ sent an audio wysłał plik dźwiękowy + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + ImagePage @@ -1731,5 +1749,23 @@ Pending acknowledgement Oczekujące na potwierdzenie + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + diff --git a/translations/harbour-fernschreiber-ru.ts b/translations/harbour-fernschreiber-ru.ts index a8a0405..ce981da 100644 --- a/translations/harbour-fernschreiber-ru.ts +++ b/translations/harbour-fernschreiber-ru.ts @@ -775,6 +775,24 @@ sent an audio отправил(а) аудио + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + ImagePage @@ -1731,5 +1749,23 @@ Pending acknowledgement Ожидание подтверждения + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + diff --git a/translations/harbour-fernschreiber-sv.ts b/translations/harbour-fernschreiber-sv.ts index 4cede85..0aa1fbc 100644 --- a/translations/harbour-fernschreiber-sv.ts +++ b/translations/harbour-fernschreiber-sv.ts @@ -765,6 +765,24 @@ sent an audio skickade en ljudfil + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + ImagePage @@ -1712,5 +1730,23 @@ Pending acknowledgement Väntar på bekräftelse + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + diff --git a/translations/harbour-fernschreiber-zh_CN.ts b/translations/harbour-fernschreiber-zh_CN.ts index ec605f6..3557b00 100644 --- a/translations/harbour-fernschreiber-zh_CN.ts +++ b/translations/harbour-fernschreiber-zh_CN.ts @@ -755,6 +755,24 @@ sent an audio 发送音频 + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + ImagePage @@ -1693,5 +1711,23 @@ Pending acknowledgement 等待确认 + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + diff --git a/translations/harbour-fernschreiber.ts b/translations/harbour-fernschreiber.ts index a0687d8..b3969bf 100644 --- a/translations/harbour-fernschreiber.ts +++ b/translations/harbour-fernschreiber.ts @@ -765,6 +765,24 @@ sent an audio sent an audio + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + + ImagePage @@ -1712,5 +1730,23 @@ Pending acknowledgement + + has added %1 to the chat + + + + has removed %1 from the chat + + + + have added %1 to the chat + myself + + + + have removed %1 from the chat + myself + +