Merge latest upstream changes
This commit is contained in:
commit
461b724d15
16 changed files with 176 additions and 266 deletions
14
README.md
14
README.md
|
@ -46,6 +46,20 @@ Moreover, you need to have a compiled version of [TDLib 1.7](https://github.com/
|
||||||
|
|
||||||
In case you encounter strange performance issues on startup (several seconds delay, app seems to do nothing), please be sure to [follow the instructions from the respective GitHub issue](https://github.com/tdlib/td/issues/1322), i.e. let TDLib build SQLite with `-DOMIT_MEMLOCK` and be sure to comment the two lines 22558 (`#ifndef OMIT_MEMLOCK`) and 22567 (`#endif`) in the file `sqlite/sqlite/sqlite3.c`.
|
In case you encounter strange performance issues on startup (several seconds delay, app seems to do nothing), please be sure to [follow the instructions from the respective GitHub issue](https://github.com/tdlib/td/issues/1322), i.e. let TDLib build SQLite with `-DOMIT_MEMLOCK` and be sure to comment the two lines 22558 (`#ifndef OMIT_MEMLOCK`) and 22567 (`#endif`) in the file `sqlite/sqlite/sqlite3.c`.
|
||||||
|
|
||||||
|
Moreover, TDLib 1.7 has issues loading some pinned messages in case the message database is used (which is the case in Fernschreiber). [A small patch](https://github.com/tdlib/td/commit/30d912bd4b145afb8d494b307d37645ffa21ec29) is required to make TDLib work properly in all cases. See [the respective TDLib issue](https://github.com/tdlib/td/issues/1343) for more details.
|
||||||
|
|
||||||
|
In case you want to use the same codebase which was used to compile the library that is shipped with Fernschreiber, please [check out the fork](https://github.com/Wunderfitz/td), be sure to use the branch `fernschreiber` and compile these sources using the following commands (be sure to have the Sailfish OS build engine running):
|
||||||
|
|
||||||
|
- `alias sfdk=~/SailfishOS/bin/sfdk`
|
||||||
|
- `sfdk config target=SailfishOS-3.3.0.16-armv7hl` (this compiles the sources on SFOS 3.3 and ARM - the target needs to be adjusted according to the running SDK engine and the platform)
|
||||||
|
- `mkdir build`
|
||||||
|
- `cd build`
|
||||||
|
- `sfdk build-shell cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib -DTD_ENABLE_LTO=ON ..` (in case of compilation issues, try removing the flag `-DTD_ENABLE_LTO=ON`)
|
||||||
|
- `sfdk build-shell cmake --build . --target install`
|
||||||
|
|
||||||
|
You'll find the compiled library in the directory `td/tdlib`.
|
||||||
|
|
||||||
|
|
||||||
## Debug
|
## Debug
|
||||||
Fernschreiber does only output a few TDLib messages by default. To get its own debug log messages, you can either run a debug build to see all of them or use the environment variable `QT_LOGGING_RULES` to specify/filter which messages you'd like to see.
|
Fernschreiber does only output a few TDLib messages by default. To get its own debug log messages, you can either run a debug build to see all of them or use the environment variable `QT_LOGGING_RULES` to specify/filter which messages you'd like to see.
|
||||||
|
|
||||||
|
|
|
@ -24,39 +24,57 @@ PhotoTextsListItem {
|
||||||
isSecret: ( chat_type === TelegramAPI.ChatTypeSecret )
|
isSecret: ( chat_type === TelegramAPI.ChatTypeSecret )
|
||||||
|
|
||||||
openMenuOnPressAndHold: true//chat_id != overviewPage.ownUserId
|
openMenuOnPressAndHold: true//chat_id != overviewPage.ownUserId
|
||||||
menu: ContextMenu {
|
|
||||||
MenuItem {
|
|
||||||
visible: unread_count > 0
|
|
||||||
onClicked: {
|
|
||||||
tdLibWrapper.viewMessage(chat_id, display.last_message.id, true);
|
|
||||||
}
|
|
||||||
text: qsTr("Mark all messages as read")
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuItem {
|
onPressAndHold: {
|
||||||
visible: chat_id != listItem.ownUserId
|
contextMenuLoader.active = true;
|
||||||
onClicked: {
|
}
|
||||||
var newNotificationSettings = display.notification_settings;
|
|
||||||
if (newNotificationSettings.mute_for > 0) {
|
|
||||||
newNotificationSettings.mute_for = 0;
|
|
||||||
} else {
|
|
||||||
newNotificationSettings.mute_for = 6666666;
|
|
||||||
}
|
|
||||||
newNotificationSettings.use_default_mute_for = false;
|
|
||||||
tdLibWrapper.setChatNotificationSettings(chat_id, newNotificationSettings);
|
|
||||||
}
|
|
||||||
text: display.notification_settings.mute_for > 0 ? qsTr("Unmute Chat") : qsTr("Mute Chat")
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuItem {
|
Loader {
|
||||||
onClicked: {
|
id: contextMenuLoader
|
||||||
if(pageStack.depth > 2) {
|
active: false
|
||||||
pageStack.pop(pageStack.find( function(page){ return(page._depth === 0)} ), PageStackAction.Immediate);
|
asynchronous: true
|
||||||
|
onStatusChanged: {
|
||||||
|
if(status === Loader.Ready) {
|
||||||
|
listItem.menu = item;
|
||||||
|
listItem.openMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sourceComponent: Component {
|
||||||
|
ContextMenu {
|
||||||
|
MenuItem {
|
||||||
|
visible: unread_count > 0
|
||||||
|
onClicked: {
|
||||||
|
tdLibWrapper.viewMessage(chat_id, display.last_message.id, true);
|
||||||
|
}
|
||||||
|
text: qsTr("Mark all messages as read")
|
||||||
}
|
}
|
||||||
|
|
||||||
pageStack.push(Qt.resolvedUrl("../pages/ChatInformationPage.qml"), { "chatInformation" : display});
|
MenuItem {
|
||||||
|
visible: chat_id != listItem.ownUserId
|
||||||
|
onClicked: {
|
||||||
|
var newNotificationSettings = display.notification_settings;
|
||||||
|
if (newNotificationSettings.mute_for > 0) {
|
||||||
|
newNotificationSettings.mute_for = 0;
|
||||||
|
} else {
|
||||||
|
newNotificationSettings.mute_for = 6666666;
|
||||||
|
}
|
||||||
|
newNotificationSettings.use_default_mute_for = false;
|
||||||
|
tdLibWrapper.setChatNotificationSettings(chat_id, newNotificationSettings);
|
||||||
|
}
|
||||||
|
text: display.notification_settings.mute_for > 0 ? qsTr("Unmute Chat") : qsTr("Mute Chat")
|
||||||
|
}
|
||||||
|
|
||||||
|
MenuItem {
|
||||||
|
onClicked: {
|
||||||
|
if(pageStack.depth > 2) {
|
||||||
|
pageStack.pop(pageStack.find( function(page){ return(page._depth === 0)} ), PageStackAction.Immediate);
|
||||||
|
}
|
||||||
|
|
||||||
|
pageStack.push(Qt.resolvedUrl("../pages/ChatInformationPage.qml"), { "chatInformation" : display});
|
||||||
|
}
|
||||||
|
text: model.display.type['@type'] === "chatTypePrivate" ? qsTr("User Info") : qsTr("Group Info")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
text: model.display.type['@type'] === "chatTypePrivate" ? qsTr("User Info") : qsTr("Group Info")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -154,15 +154,6 @@ ChatInformationTabItemBase {
|
||||||
pageStack.pop(pageStack.find( function(page){ return(page._depth === 0)} ), PageStackAction.Immediate);
|
pageStack.pop(pageStack.find( function(page){ return(page._depth === 0)} ), PageStackAction.Immediate);
|
||||||
pageStack.push(Qt.resolvedUrl("../../pages/ChatPage.qml"), { "chatInformation" : display });
|
pageStack.push(Qt.resolvedUrl("../../pages/ChatPage.qml"), { "chatInformation" : display });
|
||||||
}
|
}
|
||||||
Connections {
|
|
||||||
target: chatListModel
|
|
||||||
onChatChanged: {
|
|
||||||
if (changedChatId === chat_id) {
|
|
||||||
// Force update of some list item elements (currently only last message text seems to create problems). dataChanged() doesn't seem to trigger them all :(
|
|
||||||
secondaryText.text = last_message_text ? Emoji.emojify(Functions.enhanceHtmlEntities(last_message_text), Theme.fontSizeExtraSmall) : qsTr("Unknown")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,13 +59,13 @@ Page {
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
id: chatListCreatedTimer
|
id: chatListCreatedTimer
|
||||||
interval: 300
|
interval: 100
|
||||||
running: false
|
running: false
|
||||||
repeat: false
|
repeat: false
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
overviewPage.chatListCreated = true;
|
overviewPage.chatListCreated = true;
|
||||||
chatListModel.redrawModel();
|
|
||||||
chatListView.scrollToTop();
|
chatListView.scrollToTop();
|
||||||
|
updateSecondaryContentTimer.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,6 +76,15 @@ Page {
|
||||||
pageStack.push(Qt.resolvedUrl("../pages/InitializationPage.qml"));
|
pageStack.push(Qt.resolvedUrl("../pages/InitializationPage.qml"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Timer {
|
||||||
|
id: updateSecondaryContentTimer
|
||||||
|
interval: 600
|
||||||
|
onTriggered: {
|
||||||
|
tdLibWrapper.getRecentStickers();
|
||||||
|
tdLibWrapper.getInstalledStickerSets();
|
||||||
|
tdLibWrapper.getContacts();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
id: searchChatTimer
|
id: searchChatTimer
|
||||||
|
@ -114,9 +123,6 @@ Page {
|
||||||
|
|
||||||
function updateContent() {
|
function updateContent() {
|
||||||
tdLibWrapper.getChats();
|
tdLibWrapper.getChats();
|
||||||
tdLibWrapper.getRecentStickers();
|
|
||||||
tdLibWrapper.getInstalledStickerSets();
|
|
||||||
tdLibWrapper.getContacts();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function initializePage() {
|
function initializePage() {
|
||||||
|
@ -228,144 +234,120 @@ Page {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Column {
|
Row {
|
||||||
id: column
|
id: headerRow
|
||||||
width: parent.width
|
width: parent.width - Theme.horizontalPageMargin
|
||||||
height: parent.height
|
|
||||||
spacing: Theme.paddingMedium
|
|
||||||
|
|
||||||
Row {
|
|
||||||
id: headerRow
|
|
||||||
width: parent.width - Theme.horizontalPageMargin
|
|
||||||
|
|
||||||
GlassItem {
|
|
||||||
id: pageStatus
|
|
||||||
width: Theme.itemSizeMedium
|
|
||||||
height: Theme.itemSizeMedium
|
|
||||||
color: "red"
|
|
||||||
falloffRadius: 0.1
|
|
||||||
radius: 0.2
|
|
||||||
cache: false
|
|
||||||
}
|
|
||||||
|
|
||||||
PageHeader {
|
|
||||||
id: pageHeader
|
|
||||||
title: qsTr("Fernschreiber")
|
|
||||||
width: visible ? ( parent.width - pageStatus.width - searchChatButton.width ) : 0
|
|
||||||
opacity: visible ? 1 : 0
|
|
||||||
Behavior on opacity { NumberAnimation {} }
|
|
||||||
}
|
|
||||||
|
|
||||||
IconButton {
|
|
||||||
id: searchChatButton
|
|
||||||
width: visible ? height : 0
|
|
||||||
opacity: visible ? 1 : 0
|
|
||||||
Behavior on opacity { NumberAnimation {} }
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
icon {
|
|
||||||
source: "image://theme/icon-m-search?" + Theme.highlightColor
|
|
||||||
asynchronous: true
|
|
||||||
}
|
|
||||||
visible: overviewPage.connectionState === TelegramAPI.ConnectionReady
|
|
||||||
onClicked: {
|
|
||||||
chatSearchField.focus = true;
|
|
||||||
chatSearchField.visible = true;
|
|
||||||
pageHeader.visible = false;
|
|
||||||
searchChatButton.visible = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SearchField {
|
|
||||||
id: chatSearchField
|
|
||||||
visible: false
|
|
||||||
opacity: visible ? 1 : 0
|
|
||||||
Behavior on opacity { NumberAnimation {} }
|
|
||||||
width: visible ? ( parent.width - pageStatus.width ) : 0
|
|
||||||
height: pageHeader.height
|
|
||||||
placeholderText: qsTr("Search a chat...")
|
|
||||||
active: searchHeaderItem.visible
|
|
||||||
|
|
||||||
onTextChanged: {
|
|
||||||
searchChatTimer.restart();
|
|
||||||
}
|
|
||||||
|
|
||||||
EnterKey.iconSource: "image://theme/icon-m-enter-close"
|
|
||||||
EnterKey.onClicked: {
|
|
||||||
resetFocus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
GlassItem {
|
||||||
|
id: pageStatus
|
||||||
|
width: Theme.itemSizeMedium
|
||||||
|
height: Theme.itemSizeMedium
|
||||||
|
color: "red"
|
||||||
|
falloffRadius: 0.1
|
||||||
|
radius: 0.2
|
||||||
|
cache: false
|
||||||
}
|
}
|
||||||
|
|
||||||
Item {
|
PageHeader {
|
||||||
id: chatListItem
|
id: pageHeader
|
||||||
width: parent.width
|
title: qsTr("Fernschreiber")
|
||||||
height: parent.height - Theme.paddingMedium - headerRow.height
|
width: visible ? ( parent.width - pageStatus.width - searchChatButton.width ) : 0
|
||||||
|
opacity: visible ? 1 : 0
|
||||||
|
Behavior on opacity { FadeAnimation {} }
|
||||||
|
}
|
||||||
|
|
||||||
SilicaListView {
|
IconButton {
|
||||||
|
id: searchChatButton
|
||||||
|
width: visible ? height : 0
|
||||||
|
opacity: visible ? 1 : 0
|
||||||
|
Behavior on opacity { NumberAnimation {} }
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
icon {
|
||||||
|
source: "image://theme/icon-m-search?" + Theme.highlightColor
|
||||||
|
asynchronous: true
|
||||||
|
}
|
||||||
|
visible: overviewPage.connectionState === TelegramAPI.ConnectionReady
|
||||||
|
onClicked: {
|
||||||
|
chatSearchField.focus = true;
|
||||||
|
chatSearchField.visible = true;
|
||||||
|
pageHeader.visible = false;
|
||||||
|
searchChatButton.visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
id: chatListView
|
SearchField {
|
||||||
|
id: chatSearchField
|
||||||
|
visible: false
|
||||||
|
opacity: visible ? 1 : 0
|
||||||
|
Behavior on opacity { FadeAnimation {} }
|
||||||
|
width: visible ? ( parent.width - pageStatus.width ) : 0
|
||||||
|
height: pageHeader.height
|
||||||
|
placeholderText: qsTr("Search a chat...")
|
||||||
|
active: searchHeaderItem.visible
|
||||||
|
|
||||||
anchors.fill: parent
|
onTextChanged: {
|
||||||
|
searchChatTimer.restart();
|
||||||
clip: true
|
|
||||||
opacity: overviewPage.chatListCreated ? 1 : 0
|
|
||||||
Behavior on opacity { NumberAnimation {} }
|
|
||||||
|
|
||||||
model: chatSearchField.text !== "" ? chatListProxyModel : chatListModel
|
|
||||||
delegate: ChatListViewItem {
|
|
||||||
ownUserId: overviewPage.ownUserId
|
|
||||||
isVerified: is_verified
|
|
||||||
|
|
||||||
onClicked: {
|
|
||||||
pageStack.push(Qt.resolvedUrl("../pages/ChatPage.qml"), {
|
|
||||||
chatInformation : display,
|
|
||||||
chatPicture: photo_small
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
Connections {
|
|
||||||
target: chatListModel
|
|
||||||
onChatChanged: {
|
|
||||||
if (overviewPage.chatListCreated && changedChatId === chat_id) {
|
|
||||||
// Force update of some list item elements (currently only last message text seems to create problems). dataChanged() doesn't seem to trigger them all :(
|
|
||||||
secondaryText.text = last_message_text ? Emoji.emojify(Functions.enhanceHtmlEntities(last_message_text), Theme.fontSizeExtraSmall) : qsTr("Unknown")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ViewPlaceholder {
|
|
||||||
enabled: chatListView.count === 0
|
|
||||||
text: qsTr("You don't have any chats yet.")
|
|
||||||
}
|
|
||||||
|
|
||||||
VerticalScrollDecorator {}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Column {
|
EnterKey.iconSource: "image://theme/icon-m-enter-close"
|
||||||
width: parent.width
|
EnterKey.onClicked: {
|
||||||
height: loadingLabel.height + loadingBusyIndicator.height + Theme.paddingMedium
|
resetFocus();
|
||||||
spacing: Theme.paddingMedium
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
|
|
||||||
opacity: overviewPage.chatListCreated ? 0 : 1
|
|
||||||
Behavior on opacity { NumberAnimation {} }
|
|
||||||
visible: !overviewPage.chatListCreated
|
|
||||||
|
|
||||||
InfoLabel {
|
|
||||||
id: loadingLabel
|
|
||||||
text: qsTr("Loading chat list...")
|
|
||||||
}
|
|
||||||
|
|
||||||
BusyIndicator {
|
|
||||||
id: loadingBusyIndicator
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
running: !overviewPage.chatListCreated
|
|
||||||
size: BusyIndicatorSize.Large
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
SilicaListView {
|
||||||
|
id: chatListView
|
||||||
|
anchors {
|
||||||
|
top: headerRow.bottom
|
||||||
|
bottom: parent.bottom
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
}
|
||||||
|
clip: true
|
||||||
|
opacity: overviewPage.chatListCreated ? 1 : 0
|
||||||
|
Behavior on opacity { FadeAnimation {} }
|
||||||
|
model: chatSearchField.text !== "" ? chatListProxyModel : chatListModel
|
||||||
|
delegate: ChatListViewItem {
|
||||||
|
ownUserId: overviewPage.ownUserId
|
||||||
|
isVerified: is_verified
|
||||||
|
onClicked: {
|
||||||
|
pageStack.push(Qt.resolvedUrl("../pages/ChatPage.qml"), {
|
||||||
|
chatInformation : display,
|
||||||
|
chatPicture: photo_small
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ViewPlaceholder {
|
||||||
|
enabled: chatListView.count === 0
|
||||||
|
text: qsTr("You don't have any chats yet.")
|
||||||
|
}
|
||||||
|
|
||||||
|
VerticalScrollDecorator {}
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
width: parent.width
|
||||||
|
spacing: Theme.paddingMedium
|
||||||
|
anchors.verticalCenter: chatListView.verticalCenter
|
||||||
|
|
||||||
|
opacity: overviewPage.chatListCreated ? 0 : 1
|
||||||
|
Behavior on opacity { FadeAnimation {} }
|
||||||
|
visible: !overviewPage.chatListCreated
|
||||||
|
|
||||||
|
InfoLabel {
|
||||||
|
id: loadingLabel
|
||||||
|
text: qsTr("Loading chat list...")
|
||||||
|
}
|
||||||
|
|
||||||
|
BusyIndicator {
|
||||||
|
id: loadingBusyIndicator
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
running: !overviewPage.chatListCreated
|
||||||
|
size: BusyIndicatorSize.Large
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1300,15 +1300,8 @@ void TDLibWrapper::handleMessageInformation(const QString &messageId, const QVar
|
||||||
QString extraInformation = receivedInformation.value(_EXTRA).toString();
|
QString extraInformation = receivedInformation.value(_EXTRA).toString();
|
||||||
if (extraInformation.startsWith("getChatPinnedMessage")) {
|
if (extraInformation.startsWith("getChatPinnedMessage")) {
|
||||||
emit chatPinnedMessageUpdated(receivedInformation.value(CHAT_ID).toLongLong(), messageId.toLongLong());
|
emit chatPinnedMessageUpdated(receivedInformation.value(CHAT_ID).toLongLong(), messageId.toLongLong());
|
||||||
// Sometimes it seems that pinned messages aren't returned as pinned ones, weird!
|
|
||||||
// This is a workaround for now, let's see what comes out of https://github.com/tdlib/td/issues/1343
|
|
||||||
QVariantMap updatedInformation(receivedInformation);
|
|
||||||
updatedInformation.insert("is_pinned", true);
|
|
||||||
emit receivedMessage(messageId, updatedInformation);
|
|
||||||
} else {
|
|
||||||
emit receivedMessage(messageId, receivedInformation);
|
|
||||||
}
|
}
|
||||||
|
emit receivedMessage(messageId, receivedInformation);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDLibWrapper::handleMessageIsPinnedUpdated(qlonglong chatId, qlonglong messageId, bool isPinned)
|
void TDLibWrapper::handleMessageIsPinnedUpdated(qlonglong chatId, qlonglong messageId, bool isPinned)
|
||||||
|
|
|
@ -195,10 +195,6 @@
|
||||||
<comment>chats you have in common with a user</comment>
|
<comment>chats you have in common with a user</comment>
|
||||||
<translation>Lade gemeinsame Chats…</translation>
|
<translation>Lade gemeinsame Chats…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Unbekannt</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading group members…</source>
|
<source>Loading group members…</source>
|
||||||
<translation>Lade Gruppenmitglieder…</translation>
|
<translation>Lade Gruppenmitglieder…</translation>
|
||||||
|
@ -1014,10 +1010,6 @@
|
||||||
<source>Updating content...</source>
|
<source>Updating content...</source>
|
||||||
<translation>Aktualisiere Inhalte...</translation>
|
<translation>Aktualisiere Inhalte...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Unbekannt</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading chat list...</source>
|
<source>Loading chat list...</source>
|
||||||
<translation>Lade Chatliste...</translation>
|
<translation>Lade Chatliste...</translation>
|
||||||
|
|
|
@ -191,10 +191,6 @@
|
||||||
<comment>chats you have in common with a user</comment>
|
<comment>chats you have in common with a user</comment>
|
||||||
<translation>Loading common chats…</translation>
|
<translation>Loading common chats…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Unknown</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading group members…</source>
|
<source>Loading group members…</source>
|
||||||
<translation>Loading group members…</translation>
|
<translation>Loading group members…</translation>
|
||||||
|
@ -1014,10 +1010,6 @@
|
||||||
<source>Updating content...</source>
|
<source>Updating content...</source>
|
||||||
<translation>Updating content...</translation>
|
<translation>Updating content...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Unknown</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading chat list...</source>
|
<source>Loading chat list...</source>
|
||||||
<translation>Loading chat list...</translation>
|
<translation>Loading chat list...</translation>
|
||||||
|
|
|
@ -188,10 +188,6 @@
|
||||||
<comment>chats you have in common with a user</comment>
|
<comment>chats you have in common with a user</comment>
|
||||||
<translation>Cargando las charlas comunes…</translation>
|
<translation>Cargando las charlas comunes…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Desconocido</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading group members…</source>
|
<source>Loading group members…</source>
|
||||||
<translation>Cargando miembros del grupo…</translation>
|
<translation>Cargando miembros del grupo…</translation>
|
||||||
|
@ -1003,10 +999,6 @@
|
||||||
<source>Updating content...</source>
|
<source>Updating content...</source>
|
||||||
<translation>Actualizando contenido...</translation>
|
<translation>Actualizando contenido...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>desconocido</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading chat list...</source>
|
<source>Loading chat list...</source>
|
||||||
<translation>cargando lista de charla...</translation>
|
<translation>cargando lista de charla...</translation>
|
||||||
|
|
|
@ -191,10 +191,6 @@
|
||||||
<comment>chats you have in common with a user</comment>
|
<comment>chats you have in common with a user</comment>
|
||||||
<translation>Ladataan yhteisiä keskusteluja...</translation>
|
<translation>Ladataan yhteisiä keskusteluja...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Tuntematon</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading group members…</source>
|
<source>Loading group members…</source>
|
||||||
<translation>Ladataan ryhmän jäseniä...</translation>
|
<translation>Ladataan ryhmän jäseniä...</translation>
|
||||||
|
@ -1015,10 +1011,6 @@
|
||||||
<source>Updating content...</source>
|
<source>Updating content...</source>
|
||||||
<translation>Päivitetään sisältöä...</translation>
|
<translation>Päivitetään sisältöä...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Tuntematon</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading chat list...</source>
|
<source>Loading chat list...</source>
|
||||||
<translation>Ladataan keskustelulistaa...</translation>
|
<translation>Ladataan keskustelulistaa...</translation>
|
||||||
|
|
|
@ -188,10 +188,6 @@
|
||||||
<comment>chats you have in common with a user</comment>
|
<comment>chats you have in common with a user</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation type="unfinished">Ismeretlen</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading group members…</source>
|
<source>Loading group members…</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
@ -1003,10 +999,6 @@
|
||||||
<source>Updating content...</source>
|
<source>Updating content...</source>
|
||||||
<translation>Tartalom frissítése...</translation>
|
<translation>Tartalom frissítése...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Ismeretlen</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading chat list...</source>
|
<source>Loading chat list...</source>
|
||||||
<translation>Csevegés lista betöltése...</translation>
|
<translation>Csevegés lista betöltése...</translation>
|
||||||
|
|
|
@ -190,10 +190,6 @@
|
||||||
<source>You</source>
|
<source>You</source>
|
||||||
<translation>Tu</translation>
|
<translation>Tu</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Sconosciuto</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>You don't have any groups in common with this user.</source>
|
<source>You don't have any groups in common with this user.</source>
|
||||||
<translation>Non hai nessun gruppo in comune con questo utente.</translation>
|
<translation>Non hai nessun gruppo in comune con questo utente.</translation>
|
||||||
|
@ -998,10 +994,6 @@
|
||||||
<source>Fernschreiber</source>
|
<source>Fernschreiber</source>
|
||||||
<translation>Fernschreiber</translation>
|
<translation>Fernschreiber</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Sconosciuto</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Settings</source>
|
<source>Settings</source>
|
||||||
<translation>Impostazioni</translation>
|
<translation>Impostazioni</translation>
|
||||||
|
|
|
@ -194,10 +194,6 @@
|
||||||
<comment>chats you have in common with a user</comment>
|
<comment>chats you have in common with a user</comment>
|
||||||
<translation>Ładowanie wspólnych czatów...</translation>
|
<translation>Ładowanie wspólnych czatów...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Nieznany</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading group members…</source>
|
<source>Loading group members…</source>
|
||||||
<translation>Ładowanie członków grupy</translation>
|
<translation>Ładowanie członków grupy</translation>
|
||||||
|
@ -1025,10 +1021,6 @@
|
||||||
<source>Updating content...</source>
|
<source>Updating content...</source>
|
||||||
<translation>Aktualizacja treści...</translation>
|
<translation>Aktualizacja treści...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Nieznany</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading chat list...</source>
|
<source>Loading chat list...</source>
|
||||||
<translation>Ładowanie listy czatu...</translation>
|
<translation>Ładowanie listy czatu...</translation>
|
||||||
|
|
|
@ -194,10 +194,6 @@
|
||||||
<comment>chats you have in common with a user</comment>
|
<comment>chats you have in common with a user</comment>
|
||||||
<translation>Загрузка общих чатов…</translation>
|
<translation>Загрузка общих чатов…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>нет информации</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading group members…</source>
|
<source>Loading group members…</source>
|
||||||
<translation>Загрузка списка участников…</translation>
|
<translation>Загрузка списка участников…</translation>
|
||||||
|
@ -1025,10 +1021,6 @@
|
||||||
<source>Updating content...</source>
|
<source>Updating content...</source>
|
||||||
<translation>Обновление контента...</translation>
|
<translation>Обновление контента...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Неизвестный</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading chat list...</source>
|
<source>Loading chat list...</source>
|
||||||
<translation>Загрузка чатов...</translation>
|
<translation>Загрузка чатов...</translation>
|
||||||
|
|
|
@ -191,10 +191,6 @@
|
||||||
<comment>chats you have in common with a user</comment>
|
<comment>chats you have in common with a user</comment>
|
||||||
<translation>Läser in gemensamma chattar...</translation>
|
<translation>Läser in gemensamma chattar...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Okänd</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading group members…</source>
|
<source>Loading group members…</source>
|
||||||
<translation>Läser in gruppmedlemmar...</translation>
|
<translation>Läser in gruppmedlemmar...</translation>
|
||||||
|
@ -1014,10 +1010,6 @@
|
||||||
<source>Updating content...</source>
|
<source>Updating content...</source>
|
||||||
<translation>Uppdaterar innehåll...</translation>
|
<translation>Uppdaterar innehåll...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Okänd</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading chat list...</source>
|
<source>Loading chat list...</source>
|
||||||
<translation>Läser in chattlistan...</translation>
|
<translation>Läser in chattlistan...</translation>
|
||||||
|
|
|
@ -188,10 +188,6 @@
|
||||||
<comment>chats you have in common with a user</comment>
|
<comment>chats you have in common with a user</comment>
|
||||||
<translation>正在加载共有对话…</translation>
|
<translation>正在加载共有对话…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>未知</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading group members…</source>
|
<source>Loading group members…</source>
|
||||||
<translation>正在加载群组成员…</translation>
|
<translation>正在加载群组成员…</translation>
|
||||||
|
@ -1003,10 +999,6 @@
|
||||||
<source>Updating content...</source>
|
<source>Updating content...</source>
|
||||||
<translation>正在更新内容…</translation>
|
<translation>正在更新内容…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>未知</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading chat list...</source>
|
<source>Loading chat list...</source>
|
||||||
<translation>正在加载对话列表…</translation>
|
<translation>正在加载对话列表…</translation>
|
||||||
|
|
|
@ -191,10 +191,6 @@
|
||||||
<comment>chats you have in common with a user</comment>
|
<comment>chats you have in common with a user</comment>
|
||||||
<translation>Loading common chats…</translation>
|
<translation>Loading common chats…</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Unknown</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading group members…</source>
|
<source>Loading group members…</source>
|
||||||
<translation>Loading group members…</translation>
|
<translation>Loading group members…</translation>
|
||||||
|
@ -1014,10 +1010,6 @@
|
||||||
<source>Updating content...</source>
|
<source>Updating content...</source>
|
||||||
<translation>Updating content...</translation>
|
<translation>Updating content...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Unknown</source>
|
|
||||||
<translation>Unknown</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Loading chat list...</source>
|
<source>Loading chat list...</source>
|
||||||
<translation>Loading chat list...</translation>
|
<translation>Loading chat list...</translation>
|
||||||
|
|
Loading…
Reference in a new issue