Merge pull request #217 from Nheko-Reborn/reactions

Reactions
master
Joseph Donofry 5 years ago committed by GitHub
commit 813884ee0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      CMakeLists.txt
  2. BIN
      resources/icons/ui/search.png
  3. BIN
      resources/icons/ui/search@2x.png
  4. 280
      resources/langs/nheko_de.ts
  5. 278
      resources/langs/nheko_el.ts
  6. 280
      resources/langs/nheko_en.ts
  7. 278
      resources/langs/nheko_fi.ts
  8. 278
      resources/langs/nheko_fr.ts
  9. 354
      resources/langs/nheko_it.ts
  10. 278
      resources/langs/nheko_ja.ts
  11. 278
      resources/langs/nheko_nl.ts
  12. 278
      resources/langs/nheko_pl.ts
  13. 278
      resources/langs/nheko_ru.ts
  14. 278
      resources/langs/nheko_zh_CN.ts
  15. 3
      resources/qml/ImageButton.qml
  16. 33
      resources/qml/Reactions.qml
  17. 2
      resources/qml/ScrollHelper.qml
  18. 18
      resources/qml/TimelineRow.qml
  19. 21
      resources/qml/TimelineView.qml
  20. 1
      resources/qml/delegates/Pill.qml
  21. 18
      resources/qml/emoji/EmojiButton.qml
  22. 290
      resources/qml/emoji/EmojiPicker.qml
  23. 4
      resources/res.qrc
  24. 17
      scripts/emoji_codegen.py
  25. 38
      scripts/generate_icns.sh
  26. 110
      src/emoji/EmojiModel.cpp
  27. 64
      src/emoji/EmojiModel.h
  28. 9656
      src/emoji/Provider.cpp
  29. 34
      src/emoji/Provider.h
  30. 7701
      src/emoji/Provider_new.cpp
  31. 8
      src/timeline/ReactionsModel.cpp
  32. 2
      src/timeline/ReactionsModel.h
  33. 65
      src/timeline/TimelineModel.cpp
  34. 1
      src/timeline/TimelineModel.h
  35. 44
      src/timeline/TimelineViewManager.cpp
  36. 14
      src/timeline/TimelineViewManager.h

@ -243,10 +243,13 @@ set(SRC_FILES
# Emoji
src/emoji/Category.cpp
src/emoji/EmojiModel.cpp
src/emoji/ItemDelegate.cpp
src/emoji/Panel.cpp
src/emoji/PickButton.cpp
src/emoji/Provider.cpp
src/emoji/Provider_new.cpp
# Timeline
src/timeline/ReactionsModel.cpp
@ -445,9 +448,11 @@ qt5_wrap_cpp(MOC_HEADERS
# Emoji
src/emoji/Category.h
src/emoji/EmojiModel.h
src/emoji/ItemDelegate.h
src/emoji/Panel.h
src/emoji/PickButton.h
src/emoji/Provider.h
# Timeline
src/timeline/ReactionsModel.h

Binary file not shown.

After

Width:  |  Height:  |  Size: 573 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -4,7 +4,7 @@
<context>
<name>Cache</name>
<message>
<location filename="../../src/Cache.cpp" line="+1341"/>
<location filename="../../src/Cache.cpp" line="+1342"/>
<source>You joined this room.</source>
<translation>Du bist dem Raum beigetreten.</translation>
</message>
@ -12,23 +12,23 @@
<context>
<name>ChatPage</name>
<message>
<location filename="../../src/ChatPage.cpp" line="+226"/>
<location filename="../../src/ChatPage.cpp" line="+227"/>
<source>Failed to invite user: %1</source>
<translation>Nutzer konnte nicht eingeladen werden: %1</translation>
</message>
<message>
<location line="+4"/>
<location line="+892"/>
<location line="+923"/>
<source>Invited user: %1</source>
<translation>Eingeladener Benutzer: %1</translation>
</message>
<message>
<location line="-463"/>
<location line="-471"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation>Migrieren des Caches auf die aktuelle Version fehlgeschlagen. Das kann verschiedene Gründe als Ursache haben. Bitte lege einen Bugreport an und verwende in der Zwischenzeit eine ältere Version. Alternativ kannst du das Cache manuell entfernen.</translation>
</message>
<message>
<location line="+428"/>
<location line="+436"/>
<source>Room %1 created.</source>
<translation>Raum %1 erzeugt.</translation>
</message>
@ -68,7 +68,7 @@
<translation>Verbannung von %1 wurde aufgehoben.</translation>
</message>
<message>
<location line="-817"/>
<location line="-825"/>
<source>Failed to upload media. Please try again.</source>
<translation>Medienupload fehlgeschlagen. Bitte versuche es erneut.</translation>
</message>
@ -98,7 +98,7 @@
<translation>Gespeicherte Nachrichten konnten nicht wiederhergestellt werden. Bitte melde Dich erneut an.</translation>
</message>
<message>
<location line="+148"/>
<location line="+156"/>
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
<translation>Fehler beim Setup der Verschlüsselungsschlüssel. Servermeldung: %1 %2. Bitte versuche es später erneut.</translation>
</message>
@ -151,6 +151,12 @@
<source>Low priority rooms</source>
<translation>Räume niedriger Priorität</translation>
</message>
<message>
<location line="+2"/>
<source>Server Notices</source>
<comment>Tag translation for m.server_notice</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+2"/>
@ -166,7 +172,7 @@
<context>
<name>EditModal</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+60"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+72"/>
<source>Apply</source>
<translation>Anwenden</translation>
</message>
@ -186,6 +192,55 @@
<translation>Thema</translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+117"/>
<location line="+139"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-42"/>
<source>People</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Nature</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Food</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Activity</source>
<translation type="unfinished">Aktivitäten</translation>
</message>
<message>
<location line="+2"/>
<source>Travel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Objects</source>
<translation type="unfinished">Objekte</translation>
</message>
<message>
<location line="+2"/>
<source>Symbols</source>
<translation type="unfinished">Symbole</translation>
</message>
<message>
<location line="+2"/>
<source>Flags</source>
<translation type="unfinished">Flaggen</translation>
</message>
</context>
<context>
<name>EncryptionIndicator</name>
<message>
@ -202,7 +257,7 @@
<context>
<name>InviteeItem</name>
<message>
<location filename="../../src/InviteeItem.cpp" line="+17"/>
<location filename="../../src/InviteeItem.cpp" line="+18"/>
<source>Remove</source>
<translation>Löschen</translation>
</message>
@ -210,7 +265,7 @@
<context>
<name>LoginPage</name>
<message>
<location filename="../../src/LoginPage.cpp" line="+89"/>
<location filename="../../src/LoginPage.cpp" line="+90"/>
<source>Matrix ID</source>
<translation>Matrix-ID</translation>
</message>
@ -242,8 +297,8 @@ Wenn Nheko deinen Server nicht automatisch erkennen kann, wird es dich nach dem
</message>
<message>
<location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation>Ein Name für dieses Gerät. Dieser wird anderen angezeigt, wenn sie dieses Gerät verifizieren. Wenn kein Name angegeben wurde, wird automatisch ein zufälliger Name erzeugt, der keine Rückschlüsse auf deine Identität zulassen sollte.</translation>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
@ -254,7 +309,7 @@ Beispiel: https://mein.server:8787</translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<location line="+191"/>
<source>LOGIN</source>
<translation>ANMELDEN</translation>
</message>
@ -369,7 +424,7 @@ Beispiel: https://mein.server:8787</translation>
<context>
<name>RegisterPage</name>
<message>
<location filename="../../src/RegisterPage.cpp" line="+87"/>
<location filename="../../src/RegisterPage.cpp" line="+88"/>
<source>Username</source>
<translation>Benutzername</translation>
</message>
@ -437,7 +492,7 @@ Beispiel: https://mein.server:8787</translation>
<context>
<name>RoomInfo</name>
<message>
<location filename="../../src/Cache.cpp" line="+939"/>
<location filename="../../src/Cache.cpp" line="+940"/>
<source>no version stored</source>
<translation>keine Version gespeichert</translation>
</message>
@ -455,7 +510,7 @@ Beispiel: https://mein.server:8787</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<location line="+18"/>
<source>Favourite</source>
<comment>Standard matrix tag for favourites</comment>
<translation type="unfinished"></translation>
@ -473,7 +528,7 @@ Beispiel: https://mein.server:8787</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+12"/>
<source>Adds or removes the specified tag.</source>
<comment>WhatsThis hint for tag menu actions</comment>
<translation type="unfinished"></translation>
@ -485,14 +540,15 @@ Beispiel: https://mein.server:8787</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+4"/>
<source>New Tag</source>
<comment>Tag name prompt title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<location line="+1"/>
<source>Tag:</source>
<comment>Tag name prompt</comment>
<translation type="unfinished"></translation>
</message>
<message>
@ -509,7 +565,7 @@ Beispiel: https://mein.server:8787</translation>
<context>
<name>SideBarActions</name>
<message>
<location filename="../../src/SideBarActions.cpp" line="+38"/>
<location filename="../../src/SideBarActions.cpp" line="+40"/>
<source>User settings</source>
<translation>Benutzereinstellungen</translation>
</message>
@ -560,7 +616,7 @@ Beispiel: https://mein.server:8787</translation>
<context>
<name>TextInputWidget</name>
<message>
<location filename="../../src/TextInputWidget.cpp" line="+459"/>
<location filename="../../src/TextInputWidget.cpp" line="+460"/>
<source>Send a file</source>
<translation>Versende Datei</translation>
</message>
@ -581,7 +637,7 @@ Beispiel: https://mein.server:8787</translation>
<translation>Emoji</translation>
</message>
<message>
<location line="+84"/>
<location line="+86"/>
<source>Select a file</source>
<translation>Datei auswählen</translation>
</message>
@ -599,7 +655,7 @@ Beispiel: https://mein.server:8787</translation>
<context>
<name>TimelineModel</name>
<message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<location filename="../../src/timeline/TimelineModel.cpp" line="+891"/>
<source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation>-- Entschlüsselungsfehler (Fehler bei Kommunikation mit Datenbank) --</translation>
@ -622,7 +678,7 @@ Beispiel: https://mein.server:8787</translation>
<translation>Nachricht zurückziehen fehlgeschlagen: %1</translation>
</message>
<message>
<location line="+455"/>
<location line="+488"/>
<source>Save image</source>
<translation>Bild speichern</translation>
</message>
@ -642,7 +698,7 @@ Beispiel: https://mein.server:8787</translation>
<translation>Datei speichern</translation>
</message>
<message>
<location line="-610"/>
<location line="-643"/>
<source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation>-- Verschlüsseltes Event (keine Schlüssel zur Entschlüsselung gefunden) --</translation>
@ -654,7 +710,7 @@ Beispiel: https://mein.server:8787</translation>
<translation>-- Verschlüsseltes Event (Unbekannter Eventtyp) --</translation>
</message>
<message numerus="yes">
<location line="+660"/>
<location line="+693"/>
<source>%1 and %2 are typing.</source>
<comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
<translation>
@ -727,6 +783,11 @@ Beispiel: https://mein.server:8787</translation>
<source>%1 changed their avatar.</source>
<translation>%1 hat den Avatar geändert.</translation>
</message>
<message>
<location line="+2"/>
<source>%1 changed some profile info.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>%1 joined.</source>
@ -768,12 +829,12 @@ Beispiel: https://mein.server:8787</translation>
<translation>%1 hat das Anklopfen zurückgezogen.</translation>
</message>
<message>
<location line="-1238"/>
<location line="-1281"/>
<source>You joined this room.</source>
<translation>Du bist dem Raum beigetreten.</translation>
</message>
<message>
<location line="+1240"/>
<location line="+1283"/>
<source>Rejected the knock from %1.</source>
<translation>Hat das Anklopfen von %1 abgewiesen.</translation>
</message>
@ -797,7 +858,12 @@ Beispiel: https://mein.server:8787</translation>
<context>
<name>TimelineRow</name>
<message>
<location filename="../qml/TimelineRow.qml" line="+92"/>
<location filename="../qml/TimelineRow.qml" line="+91"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Reply</source>
<translation>Antworten</translation>
</message>
@ -811,6 +877,11 @@ Beispiel: https://mein.server:8787</translation>
<name>TimelineView</name>
<message>
<location filename="../qml/TimelineView.qml" line="+54"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Reply</source>
<translation>Antworten</translation>
</message>
@ -850,7 +921,7 @@ Beispiel: https://mein.server:8787</translation>
<translation>Kein Raum geöffnet</translation>
</message>
<message>
<location line="+257"/>
<location line="+259"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
@ -904,7 +975,7 @@ Beispiel: https://mein.server:8787</translation>
<context>
<name>UserInfoWidget</name>
<message>
<location filename="../../src/UserInfoWidget.cpp" line="+88"/>
<location filename="../../src/UserInfoWidget.cpp" line="+91"/>
<source>Logout</source>
<translation>Abmelden</translation>
</message>
@ -912,70 +983,173 @@ Beispiel: https://mein.server:8787</translation>
<context>
<name>UserSettingsPage</name>
<message>
<location filename="../../src/UserSettingsPage.cpp" line="+339"/>
<location filename="../../src/UserSettingsPage.cpp" line="+520"/>
<source>Minimize to tray</source>
<translation>Ins Benachrichtigungsfeld minimieren</translation>
</message>
<message>
<location line="+1"/>
<location line="+3"/>
<source>Start in tray</source>
<translation>Im Benachrichtigungsfeld starten</translation>
</message>
<message>
<location line="+3"/>
<location line="+7"/>
<source>Group&apos;s sidebar</source>
<translation>Gruppen-Seitenleiste</translation>
</message>
<message>
<location line="-1"/>
<location line="-3"/>
<source>Circular Avatars</source>
<translation>Runde Profilbilder</translation>
</message>
<message>
<location line="+2"/>
<location line="-5"/>
<source>Keep the application running in the background after closing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Start the application in the background without showing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Change the appearance of user avatars in chats.
OFF - square, ON - Circle.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Show a column containing groups and tags next to the room list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Decrypt messages in sidebar</source>
<translation>Entschlüssele Nachrichten in der Raumliste</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Decrypt the messages shown in the sidebar.
Only affects messages in encrypted chats.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show buttons in timeline</source>
<translation>Zeige Buttons in der Historie</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show buttons to quickly reply, react or access additional options next to each message.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Limit width of timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Typing notifications</source>
<translation>Schreibbenachrichtigungen</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show who is typing in a room.
This will also enable or disable sending typing notifications to others.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Sort rooms by unreads</source>
<translation>Sortiere ungelesene Räume zuerst</translation>
</message>
<message>
<location line="+2"/>
<source>Display rooms with new messages first.
If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Read receipts</source>
<translation>Lesebestätigungen</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show if your message was read.
Status is displayed next to timestamps.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Send messages as Markdown</source>
<translation>Sende Nachrichten als Markdown formatiert</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Allow using markdown in messages.
When disabled, all messages are sent as a plain text.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Desktop notifications</source>
<translation>Desktopbenachrichtigungen</translation>
</message>
<message>
<location line="+2"/>
<source>Notify about received message when the client is not currently focused.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Alert on notification</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show an alert when a message is received.
This usually causes the application icon in the task bar to animate in some fashion.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Highlight message on hover</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the background color of messages when you hover over them.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Large Emoji in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Make font size larger if messages with only a few emojis are displayed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Scale factor</source>
<translation>Skalierungsfaktor</translation>
</message>
<message>
<location line="+2"/>
<source>Change the scale factor of the whole user interface.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Font size</source>
@ -1002,7 +1176,7 @@ Beispiel: https://mein.server:8787</translation>
<translation>Gerätefingerabdruck</translation>
</message>
<message>
<location line="-60"/>
<location line="-113"/>
<source>Session Keys</source>
<translation>Sitzungsschlüssel</translation>
</message>
@ -1022,22 +1196,22 @@ Beispiel: https://mein.server:8787</translation>
<translation>VERSCHLÜSSELUNG</translation>
</message>
<message>
<location line="-64"/>
<location line="-71"/>
<source>GENERAL</source>
<translation>ALLGEMEINES</translation>
</message>
<message>
<location line="+26"/>
<location line="+29"/>
<source>INTERFACE</source>
<translation>OBERFLÄCHE</translation>
</message>
<message>
<location line="+109"/>
<location line="+166"/>
<source>Emoji Font Family</source>
<translation>Emojischriftart</translation>
</message>
<message>
<location line="+163"/>
<location line="+179"/>
<source>Open Sessions File</source>
<translation>Öffne Sessions Datei</translation>
</message>
@ -1109,7 +1283,7 @@ Beispiel: https://mein.server:8787</translation>
<context>
<name>descriptiveTime</name>
<message>
<location filename="../../src/Utils.cpp" line="+141"/>
<location filename="../../src/Utils.cpp" line="+147"/>
<source>Yesterday</source>
<translation>Gestern</translation>
</message>
@ -1183,7 +1357,7 @@ Beispiel: https://mein.server:8787</translation>
<context>
<name>dialogs::InviteUsers</name>
<message>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+41"/>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+42"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
@ -1280,7 +1454,7 @@ Medien-Größe: %2
<context>
<name>dialogs::ReadReceipts</name>
<message>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+120"/>
<source>Read receipts</source>
<translation>Lesebestätigungen</translation>
</message>
@ -1293,12 +1467,12 @@ Medien-Größe: %2
<context>
<name>dialogs::ReceiptItem</name>
<message>
<location line="-44"/>
<location line="-46"/>
<source>Today %1</source>
<translation>Heute %1</translation>
</message>
<message>
<location line="+2"/>
<location line="+3"/>
<source>Yesterday %1</source>
<translation>Gestern %1</translation>
</message>
@ -1306,7 +1480,7 @@ Medien-Größe: %2
<context>
<name>dialogs::RoomSettings</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+113"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+135"/>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
@ -1506,7 +1680,7 @@ Medien-Größe: %2
<context>
<name>message-description sent:</name>
<message>
<location filename="../../src/Utils.h" line="+100"/>
<location filename="../../src/Utils.h" line="+103"/>
<source>You sent an audio clip</source>
<translation>Du hast eine Audiodatei gesendet.</translation>
</message>

@ -4,7 +4,7 @@
<context>
<name>Cache</name>
<message>
<location filename="../../src/Cache.cpp" line="+1341"/>
<location filename="../../src/Cache.cpp" line="+1342"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
@ -12,23 +12,23 @@
<context>
<name>ChatPage</name>
<message>
<location filename="../../src/ChatPage.cpp" line="+226"/>
<location filename="../../src/ChatPage.cpp" line="+227"/>
<source>Failed to invite user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<location line="+892"/>
<location line="+923"/>
<source>Invited user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-463"/>
<location line="-471"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<location line="+436"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
@ -68,7 +68,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="-817"/>
<location line="-825"/>
<source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation>
</message>
@ -98,7 +98,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="+148"/>
<location line="+156"/>
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
<translation type="unfinished"></translation>
</message>
@ -151,6 +151,12 @@
<source>Low priority rooms</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Server Notices</source>
<comment>Tag translation for m.server_notice</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+2"/>
@ -166,7 +172,7 @@
<context>
<name>EditModal</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+60"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+72"/>
<source>Apply</source>
<translation type="unfinished"></translation>
</message>
@ -186,6 +192,55 @@
<translation type="unfinished">Θέμα</translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+117"/>
<location line="+139"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-42"/>
<source>People</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Nature</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Food</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Activity</source>
<translation type="unfinished">Δραστηριότητες</translation>
</message>
<message>
<location line="+2"/>
<source>Travel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Objects</source>
<translation type="unfinished">Αντικείμενα</translation>
</message>
<message>
<location line="+2"/>
<source>Symbols</source>
<translation type="unfinished">Σύμβολα</translation>
</message>
<message>
<location line="+2"/>
<source>Flags</source>
<translation type="unfinished">Σημαίες</translation>
</message>
</context>
<context>
<name>EncryptionIndicator</name>
<message>
@ -202,7 +257,7 @@
<context>
<name>InviteeItem</name>
<message>
<location filename="../../src/InviteeItem.cpp" line="+17"/>
<location filename="../../src/InviteeItem.cpp" line="+18"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
@ -210,7 +265,7 @@
<context>
<name>LoginPage</name>
<message>
<location filename="../../src/LoginPage.cpp" line="+89"/>
<location filename="../../src/LoginPage.cpp" line="+90"/>
<source>Matrix ID</source>
<translation>Matrix ID</translation>
</message>
@ -239,7 +294,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
</message>
<message>
<location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -250,7 +305,7 @@ Example: https://server.my:8787</source>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<location line="+191"/>
<source>LOGIN</source>
<translation>ΕΙΣΟΔΟΣ</translation>
</message>
@ -365,7 +420,7 @@ Example: https://server.my:8787</source>
<context>
<name>RegisterPage</name>
<message>
<location filename="../../src/RegisterPage.cpp" line="+87"/>
<location filename="../../src/RegisterPage.cpp" line="+88"/>
<source>Username</source>
<translation>Όνομα χρήστη</translation>
</message>
@ -433,7 +488,7 @@ Example: https://server.my:8787</source>
<context>
<name>RoomInfo</name>
<message>
<location filename="../../src/Cache.cpp" line="+939"/>
<location filename="../../src/Cache.cpp" line="+940"/>
<source>no version stored</source>
<translation type="unfinished"></translation>
</message>
@ -451,7 +506,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<location line="+18"/>
<source>Favourite</source>
<comment>Standard matrix tag for favourites</comment>
<translation type="unfinished"></translation>
@ -469,7 +524,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+12"/>
<source>Adds or removes the specified tag.</source>
<comment>WhatsThis hint for tag menu actions</comment>
<translation type="unfinished"></translation>
@ -481,14 +536,15 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+4"/>
<source>New Tag</source>
<comment>Tag name prompt title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<location line="+1"/>
<source>Tag:</source>
<comment>Tag name prompt</comment>
<translation type="unfinished"></translation>
</message>
<message>
@ -505,7 +561,7 @@ Example: https://server.my:8787</source>
<context>
<name>SideBarActions</name>
<message>
<location filename="../../src/SideBarActions.cpp" line="+38"/>
<location filename="../../src/SideBarActions.cpp" line="+40"/>
<source>User settings</source>
<translation type="unfinished"></translation>
</message>
@ -556,7 +612,7 @@ Example: https://server.my:8787</source>
<context>
<name>TextInputWidget</name>
<message>
<location filename="../../src/TextInputWidget.cpp" line="+459"/>
<location filename="../../src/TextInputWidget.cpp" line="+460"/>
<source>Send a file</source>
<translation type="unfinished"></translation>
</message>
@ -577,7 +633,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+84"/>
<location line="+86"/>
<source>Select a file</source>
<translation>Διάλεξε ένα αρχείο</translation>
</message>
@ -595,7 +651,7 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineModel</name>
<message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<location filename="../../src/timeline/TimelineModel.cpp" line="+891"/>
<source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished"></translation>
@ -618,7 +674,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+455"/>
<location line="+488"/>
<source>Save image</source>
<translation type="unfinished">Αποθήκευση Εικόνας</translation>
</message>
@ -638,7 +694,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-610"/>
<location line="-643"/>
<source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation type="unfinished"></translation>
@ -650,7 +706,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+660"/>
<location line="+693"/>
<source>%1 and %2 are typing.</source>
<comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
<translation type="unfinished">
@ -723,6 +779,11 @@ Example: https://server.my:8787</source>
<source>%1 changed their avatar.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>%1 changed some profile info.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>%1 joined.</source>
@ -764,12 +825,12 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-1238"/>
<location line="-1281"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1240"/>
<location line="+1283"/>
<source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation>
</message>
@ -793,7 +854,12 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineRow</name>
<message>
<location filename="../qml/TimelineRow.qml" line="+92"/>
<location filename="../qml/TimelineRow.qml" line="+91"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -807,6 +873,11 @@ Example: https://server.my:8787</source>
<name>TimelineView</name>
<message>
<location filename="../qml/TimelineView.qml" line="+54"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -846,7 +917,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+257"/>
<location line="+259"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
@ -900,7 +971,7 @@ Example: https://server.my:8787</source>
<context>
<name>UserInfoWidget</name>
<message>
<location filename="../../src/UserInfoWidget.cpp" line="+88"/>
<location filename="../../src/UserInfoWidget.cpp" line="+91"/>
<source>Logout</source>
<translation type="unfinished"></translation>
</message>
@ -908,70 +979,173 @@ Example: https://server.my:8787</source>
<context>
<name>UserSettingsPage</name>
<message>
<location filename="../../src/UserSettingsPage.cpp" line="+339"/>
<location filename="../../src/UserSettingsPage.cpp" line="+520"/>
<source>Minimize to tray</source>
<translation>Ελαχιστοποίηση</translation>
</message>
<message>
<location line="+1"/>
<location line="+3"/>
<source>Start in tray</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+7"/>
<source>Group&apos;s sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-1"/>
<location line="-3"/>
<source>Circular Avatars</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt messages in sidebar</source>
<location line="-5"/>
<source>Keep the application running in the background after closing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Start the application in the background without showing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Change the appearance of user avatars in chats.
OFF - square, ON - Circle.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Show a column containing groups and tags next to the room list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Decrypt messages in sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt the messages shown in the sidebar.
Only affects messages in encrypted chats.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show buttons in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show buttons to quickly reply, react or access additional options next to each message.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Limit width of timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Typing notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show who is typing in a room.
This will also enable or disable sending typing notifications to others.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Sort rooms by unreads</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Display rooms with new messages first.
If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Read receipts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show if your message was read.
Status is displayed next to timestamps.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Send messages as Markdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Allow using markdown in messages.
When disabled, all messages are sent as a plain text.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Desktop notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Notify about received message when the client is not currently focused.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Alert on notification</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show an alert when a message is received.
This usually causes the application icon in the task bar to animate in some fashion.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Highlight message on hover</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the background color of messages when you hover over them.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Large Emoji in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Make font size larger if messages with only a few emojis are displayed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Scale factor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the scale factor of the whole user interface.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Font size</source>
@ -998,7 +1172,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-60"/>
<location line="-113"/>
<source>Session Keys</source>
<translation type="unfinished"></translation>
</message>
@ -1018,22 +1192,22 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-64"/>
<location line="-71"/>
<source>GENERAL</source>
<translation>ΓΕΝΙΚΑ</translation>
</message>
<message>
<location line="+26"/>
<location line="+29"/>
<source>INTERFACE</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+109"/>
<location line="+166"/>
<source>Emoji Font Family</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+163"/>
<location line="+179"/>
<source>Open Sessions File</source>
<translation type="unfinished"></translation>
</message>
@ -1105,7 +1279,7 @@ Example: https://server.my:8787</source>
<context>
<name>descriptiveTime</name>
<message>
<location filename="../../src/Utils.cpp" line="+141"/>
<location filename="../../src/Utils.cpp" line="+147"/>
<source>Yesterday</source>
<translation type="unfinished"></translation>
</message>
@ -1179,7 +1353,7 @@ Example: https://server.my:8787</source>
<context>
<name>dialogs::InviteUsers</name>
<message>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+41"/>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+42"/>
<source>Cancel</source>
<translation type="unfinished">Άκυρο</translation>
</message>
@ -1274,7 +1448,7 @@ Media size: %2
<context>
<name>dialogs::ReadReceipts</name>
<message>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+120"/>
<source>Read receipts</source>
<translation type="unfinished"></translation>
</message>
@ -1287,12 +1461,12 @@ Media size: %2
<context>
<name>dialogs::ReceiptItem</name>
<message>
<location line="-44"/>
<location line="-46"/>
<source>Today %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+3"/>
<source>Yesterday %1</source>
<translation type="unfinished"></translation>
</message>
@ -1300,7 +1474,7 @@ Media size: %2
<context>
<name>dialogs::RoomSettings</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+113"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+135"/>
<source>Settings</source>
<translation type="unfinished">Ρυθμίσεις</translation>
</message>
@ -1500,7 +1674,7 @@ Media size: %2
<context>
<name>message-description sent:</name>
<message>
<location filename="../../src/Utils.h" line="+100"/>
<location filename="../../src/Utils.h" line="+103"/>
<source>You sent an audio clip</source>
<translation type="unfinished"></translation>
</message>

@ -4,7 +4,7 @@
<context>
<name>Cache</name>
<message>
<location filename="../../src/Cache.cpp" line="+1341"/>
<location filename="../../src/Cache.cpp" line="+1342"/>
<source>You joined this room.</source>
<translation>You joined this room.</translation>
</message>
@ -12,23 +12,23 @@
<context>
<name>ChatPage</name>
<message>
<location filename="../../src/ChatPage.cpp" line="+226"/>
<location filename="../../src/ChatPage.cpp" line="+227"/>
<source>Failed to invite user: %1</source>
<translation>Failed to invite user: %1</translation>
</message>
<message>
<location line="+4"/>
<location line="+892"/>
<location line="+923"/>
<source>Invited user: %1</source>
<translation>Invited user: %1</translation>
</message>
<message>
<location line="-463"/>
<location line="-471"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</translation>
</message>
<message>
<location line="+428"/>
<location line="+436"/>
<source>Room %1 created.</source>
<translation>Room %1 created.</translation>
</message>
@ -68,7 +68,7 @@
<translation>Unbanned user: %1</translation>
</message>
<message>
<location line="-817"/>
<location line="-825"/>
<source>Failed to upload media. Please try again.</source>
<translation>Failed to upload media. Please try again.</translation>
</message>
@ -98,7 +98,7 @@
<translation>Failed to restore save data. Please login again.</translation>
</message>
<message>
<location line="+148"/>
<location line="+156"/>
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
<translation>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</translation>
</message>
@ -151,6 +151,12 @@
<source>Low priority rooms</source>
<translation>Low priority rooms</translation>
</message>
<message>
<location line="+2"/>
<source>Server Notices</source>
<comment>Tag translation for m.server_notice</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+2"/>
@ -166,7 +172,7 @@
<context>
<name>EditModal</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+60"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+72"/>
<source>Apply</source>
<translation>Apply</translation>
</message>
@ -186,6 +192,55 @@
<translation>Topic</translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+117"/>
<location line="+139"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-42"/>
<source>People</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Nature</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Food</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Activity</source>
<translation type="unfinished">Activity</translation>
</message>
<message>
<location line="+2"/>
<source>Travel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Objects</source>
<translation type="unfinished">Objects</translation>
</message>
<message>
<location line="+2"/>
<source>Symbols</source>
<translation type="unfinished">Symbols</translation>
</message>
<message>
<location line="+2"/>
<source>Flags</source>
<translation type="unfinished">Flags</translation>
</message>
</context>
<context>
<name>EncryptionIndicator</name>
<message>
@ -202,7 +257,7 @@
<context>
<name>InviteeItem</name>
<message>
<location filename="../../src/InviteeItem.cpp" line="+17"/>
<location filename="../../src/InviteeItem.cpp" line="+18"/>
<source>Remove</source>
<translation>Remove</translation>
</message>
@ -210,7 +265,7 @@
<context>
<name>LoginPage</name>
<message>
<location filename="../../src/LoginPage.cpp" line="+89"/>
<location filename="../../src/LoginPage.cpp" line="+90"/>
<source>Matrix ID</source>
<translation>Matrix ID</translation>
</message>
@ -242,8 +297,8 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
</message>
<message>
<location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</translation>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
@ -254,7 +309,7 @@ Example: https://server.my:8787</translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<location line="+191"/>
<source>LOGIN</source>
<translation>LOGIN</translation>
</message>
@ -369,7 +424,7 @@ Example: https://server.my:8787</translation>
<context>
<name>RegisterPage</name>
<message>
<location filename="../../src/RegisterPage.cpp" line="+87"/>
<location filename="../../src/RegisterPage.cpp" line="+88"/>
<source>Username</source>
<translation>Username</translation>
</message>
@ -437,7 +492,7 @@ Example: https://server.my:8787</translation>
<context>
<name>RoomInfo</name>
<message>
<location filename="../../src/Cache.cpp" line="+939"/>
<location filename="../../src/Cache.cpp" line="+940"/>
<source>no version stored</source>
<translation>no version stored</translation>
</message>
@ -455,7 +510,7 @@ Example: https://server.my:8787</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<location line="+18"/>
<source>Favourite</source>
<comment>Standard matrix tag for favourites</comment>
<translation type="unfinished"></translation>
@ -473,7 +528,7 @@ Example: https://server.my:8787</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+12"/>
<source>Adds or removes the specified tag.</source>
<comment>WhatsThis hint for tag menu actions</comment>
<translation type="unfinished"></translation>
@ -485,14 +540,15 @@ Example: https://server.my:8787</translation>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+4"/>
<source>New Tag</source>
<comment>Tag name prompt title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<location line="+1"/>
<source>Tag:</source>
<comment>Tag name prompt</comment>
<translation type="unfinished"></translation>
</message>
<message>
@ -509,7 +565,7 @@ Example: https://server.my:8787</translation>
<context>
<name>SideBarActions</name>
<message>
<location filename="../../src/SideBarActions.cpp" line="+38"/>
<location filename="../../src/SideBarActions.cpp" line="+40"/>
<source>User settings</source>
<translation>User settings</translation>
</message>
@ -560,7 +616,7 @@ Example: https://server.my:8787</translation>
<context>
<name>TextInputWidget</name>
<message>
<location filename="../../src/TextInputWidget.cpp" line="+459"/>
<location filename="../../src/TextInputWidget.cpp" line="+460"/>
<source>Send a file</source>
<translation>Send a file</translation>
</message>
@ -581,7 +637,7 @@ Example: https://server.my:8787</translation>
<translation>Emoji</translation>
</message>
<message>
<location line="+84"/>
<location line="+86"/>
<source>Select a file</source>
<translation>Select a file</translation>
</message>
@ -599,7 +655,7 @@ Example: https://server.my:8787</translation>
<context>
<name>TimelineModel</name>
<message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<location filename="../../src/timeline/TimelineModel.cpp" line="+891"/>
<source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation>-- Decryption Error (failed to communicate with DB) --</translation>
@ -622,7 +678,7 @@ Example: https://server.my:8787</translation>
<translation>Message redaction failed: %1</translation>
</message>
<message>
<location line="+455"/>
<location line="+488"/>
<source>Save image</source>
<translation>Save image</translation>
</message>
@ -642,7 +698,7 @@ Example: https://server.my:8787</translation>
<translation>Save file</translation>
</message>
<message>
<location line="-610"/>
<location line="-643"/>
<source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation>-- Encrypted Event (No keys found for decryption) --</translation>
@ -654,7 +710,7 @@ Example: https://server.my:8787</translation>
<translation>-- Encrypted Event (Unknown event type) --</translation>
</message>
<message numerus="yes">
<location line="+660"/>
<location line="+693"/>
<source>%1 and %2 are typing.</source>
<comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
<translation>
@ -727,6 +783,11 @@ Example: https://server.my:8787</translation>
<source>%1 changed their avatar.</source>
<translation>%1 changed their avatar.</translation>
</message>
<message>
<location line="+2"/>
<source>%1 changed some profile info.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>%1 joined.</source>
@ -768,12 +829,12 @@ Example: https://server.my:8787</translation>
<translation>%1 redacted their knock.</translation>
</message>
<message>
<location line="-1238"/>
<location line="-1281"/>
<source>You joined this room.</source>
<translation>You joined this room.</translation>
</message>
<message>
<location line="+1240"/>
<location line="+1283"/>
<source>Rejected the knock from %1.</source>
<translation>Rejected the knock from %1.</translation>
</message>
@ -797,7 +858,12 @@ Example: https://server.my:8787</translation>
<context>
<name>TimelineRow</name>
<message>
<location filename="../qml/TimelineRow.qml" line="+92"/>
<location filename="../qml/TimelineRow.qml" line="+91"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Reply</source>
<translation>Reply</translation>
</message>
@ -811,6 +877,11 @@ Example: https://server.my:8787</translation>
<name>TimelineView</name>
<message>
<location filename="../qml/TimelineView.qml" line="+54"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Reply</source>
<translation>Reply</translation>
</message>
@ -850,7 +921,7 @@ Example: https://server.my:8787</translation>
<translation>No room open</translation>
</message>
<message>
<location line="+257"/>
<location line="+259"/>
<source>Close</source>
<translation>Close</translation>
</message>
@ -904,7 +975,7 @@ Example: https://server.my:8787</translation>
<context>
<name>UserInfoWidget</name>
<message>
<location filename="../../src/UserInfoWidget.cpp" line="+88"/>
<location filename="../../src/UserInfoWidget.cpp" line="+91"/>
<source>Logout</source>
<translation>Logout</translation>
</message>
@ -912,70 +983,173 @@ Example: https://server.my:8787</translation>
<context>
<name>UserSettingsPage</name>
<message>
<location filename="../../src/UserSettingsPage.cpp" line="+339"/>
<location filename="../../src/UserSettingsPage.cpp" line="+520"/>
<source>Minimize to tray</source>
<translation>Minimize to tray</translation>
</message>
<message>
<location line="+1"/>
<location line="+3"/>
<source>Start in tray</source>
<translation>Start in tray</translation>
</message>
<message>
<location line="+3"/>
<location line="+7"/>
<source>Group&apos;s sidebar</source>
<translation>Group&apos;s sidebar</translation>
</message>
<message>
<location line="-1"/>
<location line="-3"/>
<source>Circular Avatars</source>
<translation>Circular Avatars</translation>
</message>
<message>
<location line="+2"/>
<location line="-5"/>
<source>Keep the application running in the background after closing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Start the application in the background without showing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Change the appearance of user avatars in chats.
OFF - square, ON - Circle.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Show a column containing groups and tags next to the room list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Decrypt messages in sidebar</source>
<translation>Decrypt messages in sidebar</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Decrypt the messages shown in the sidebar.
Only affects messages in encrypted chats.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show buttons in timeline</source>
<translation>Show buttons in timeline</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show buttons to quickly reply, react or access additional options next to each message.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Limit width of timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Typing notifications</source>
<translation>Typing notifications</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show who is typing in a room.
This will also enable or disable sending typing notifications to others.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Sort rooms by unreads</source>
<translation>Sort rooms by unreads</translation>
</message>
<message>
<location line="+2"/>
<source>Display rooms with new messages first.
If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Read receipts</source>
<translation>Read receipts</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show if your message was read.
Status is displayed next to timestamps.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Send messages as Markdown</source>
<translation>Send messages as Markdown</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Allow using markdown in messages.
When disabled, all messages are sent as a plain text.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Desktop notifications</source>
<translation>Desktop notifications</translation>
</message>
<message>
<location line="+2"/>
<source>Notify about received message when the client is not currently focused.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Alert on notification</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show an alert when a message is received.
This usually causes the application icon in the task bar to animate in some fashion.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Highlight message on hover</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the background color of messages when you hover over them.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Large Emoji in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Make font size larger if messages with only a few emojis are displayed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Scale factor</source>
<translation>Scale factor</translation>
</message>
<message>
<location line="+2"/>
<source>Change the scale factor of the whole user interface.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Font size</source>
@ -1002,7 +1176,7 @@ Example: https://server.my:8787</translation>
<translation>Device Fingerprint</translation>
</message>
<message>
<location line="-60"/>
<location line="-113"/>
<source>Session Keys</source>
<translation>Session Keys</translation>
</message>
@ -1022,22 +1196,22 @@ Example: https://server.my:8787</translation>
<translation>ENCRYPTION</translation>
</message>
<message>
<location line="-64"/>
<location line="-71"/>
<source>GENERAL</source>
<translation>GENERAL</translation>
</message>
<message>
<location line="+26"/>
<location line="+29"/>
<source>INTERFACE</source>
<translation>INTERFACE</translation>
</message>
<message>
<location line="+109"/>
<location line="+166"/>
<source>Emoji Font Family</source>
<translation>Emoji Font Family</translation>
</message>
<message>
<location line="+163"/>
<location line="+179"/>
<source>Open Sessions File</source>
<translation>Open Sessions File</translation>
</message>
@ -1109,7 +1283,7 @@ Example: https://server.my:8787</translation>
<context>
<name>descriptiveTime</name>
<message>
<location filename="../../src/Utils.cpp" line="+141"/>
<location filename="../../src/Utils.cpp" line="+147"/>
<source>Yesterday</source>
<translation>Yesterday</translation>
</message>
@ -1183,7 +1357,7 @@ Example: https://server.my:8787</translation>
<context>
<name>dialogs::InviteUsers</name>
<message>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+41"/>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+42"/>
<source>Cancel</source>
<translation>Cancel</translation>
</message>
@ -1280,7 +1454,7 @@ Media size: %2
<context>
<name>dialogs::ReadReceipts</name>
<message>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+120"/>
<source>Read receipts</source>
<translation>Read receipts</translation>
</message>
@ -1293,12 +1467,12 @@ Media size: %2
<context>
<name>dialogs::ReceiptItem</name>
<message>
<location line="-44"/>
<location line="-46"/>
<source>Today %1</source>
<translation>Today %1</translation>
</message>
<message>
<location line="+2"/>
<location line="+3"/>
<source>Yesterday %1</source>
<translation>Yesterday %1</translation>
</message>
@ -1306,7 +1480,7 @@ Media size: %2
<context>
<name>dialogs::RoomSettings</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+113"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+135"/>
<source>Settings</source>
<translation>Settings</translation>
</message>
@ -1508,7 +1682,7 @@ Media size: %2
<context>
<name>message-description sent:</name>
<message>
<location filename="../../src/Utils.h" line="+100"/>
<location filename="../../src/Utils.h" line="+103"/>
<source>You sent an audio clip</source>
<translation>You sent an audio clip</translation>
</message>

@ -4,7 +4,7 @@
<context>
<name>Cache</name>
<message>
<location filename="../../src/Cache.cpp" line="+1341"/>
<location filename="../../src/Cache.cpp" line="+1342"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
@ -12,23 +12,23 @@
<context>
<name>ChatPage</name>
<message>
<location filename="../../src/ChatPage.cpp" line="+226"/>
<location filename="../../src/ChatPage.cpp" line="+227"/>
<source>Failed to invite user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<location line="+892"/>
<location line="+923"/>
<source>Invited user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-463"/>
<location line="-471"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<location line="+436"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
@ -68,7 +68,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="-817"/>
<location line="-825"/>
<source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation>
</message>
@ -98,7 +98,7 @@
<translation>Tallennettujen tietojen palauttaminen epäonnistui. Ole hyvä ja kirjaudu sisään uudelleen.</translation>
</message>
<message>
<location line="+148"/>
<location line="+156"/>
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
<translation>Salausavainten lähetys epäonnistui. Palvelimen vastaus: %1 %2. Ole hyvä ja yritä uudelleen myöhemmin.</translation>
</message>
@ -151,6 +151,12 @@
<source>Low priority rooms</source>
<translation>Alhaisen prioriteetin huoneet</translation>
</message>
<message>
<location line="+2"/>
<source>Server Notices</source>
<comment>Tag translation for m.server_notice</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+2"/>
@ -166,7 +172,7 @@
<context>
<name>EditModal</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+60"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+72"/>
<source>Apply</source>
<translation>Tallenna</translation>
</message>
@ -186,6 +192,55 @@
<translation>Aihe</translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+117"/>
<location line="+139"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-42"/>
<source>People</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Nature</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Food</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Activity</source>
<translation type="unfinished">Aktiviteetti</translation>
</message>
<message>
<location line="+2"/>
<source>Travel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Objects</source>
<translation type="unfinished">Esineet</translation>
</message>
<message>
<location line="+2"/>
<source>Symbols</source>
<translation type="unfinished">Symbolit</translation>
</message>
<message>
<location line="+2"/>
<source>Flags</source>
<translation type="unfinished">Liput</translation>
</message>
</context>
<context>
<name>EncryptionIndicator</name>
<message>
@ -202,7 +257,7 @@
<context>
<name>InviteeItem</name>
<message>
<location filename="../../src/InviteeItem.cpp" line="+17"/>
<location filename="../../src/InviteeItem.cpp" line="+18"/>
<source>Remove</source>
<translation>Poista</translation>
</message>
@ -210,7 +265,7 @@
<context>
<name>LoginPage</name>
<message>
<location filename="../../src/LoginPage.cpp" line="+89"/>
<location filename="../../src/LoginPage.cpp" line="+90"/>
<source>Matrix ID</source>
<translation>Matrix-tunnus</translation>
</message>
@ -239,7 +294,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
</message>
<message>
<location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -250,7 +305,7 @@ Example: https://server.my:8787</source>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<location line="+191"/>
<source>LOGIN</source>
<translation>KIRJAUDU</translation>
</message>
@ -365,7 +420,7 @@ Example: https://server.my:8787</source>
<context>
<name>RegisterPage</name>
<message>
<location filename="../../src/RegisterPage.cpp" line="+87"/>
<location filename="../../src/RegisterPage.cpp" line="+88"/>
<source>Username</source>
<translation>Käyttäjänimi</translation>
</message>
@ -433,7 +488,7 @@ Example: https://server.my:8787</source>
<context>
<name>RoomInfo</name>
<message>
<location filename="../../src/Cache.cpp" line="+939"/>
<location filename="../../src/Cache.cpp" line="+940"/>
<source>no version stored</source>
<translation>ei tallennettua versiota</translation>
</message>
@ -451,7 +506,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<location line="+18"/>
<source>Favourite</source>
<comment>Standard matrix tag for favourites</comment>
<translation type="unfinished"></translation>
@ -469,7 +524,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+12"/>
<source>Adds or removes the specified tag.</source>
<comment>WhatsThis hint for tag menu actions</comment>
<translation type="unfinished"></translation>
@ -481,14 +536,15 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+4"/>
<source>New Tag</source>
<comment>Tag name prompt title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<location line="+1"/>
<source>Tag:</source>
<comment>Tag name prompt</comment>
<translation type="unfinished"></translation>
</message>
<message>
@ -505,7 +561,7 @@ Example: https://server.my:8787</source>
<context>
<name>SideBarActions</name>
<message>
<location filename="../../src/SideBarActions.cpp" line="+38"/>
<location filename="../../src/SideBarActions.cpp" line="+40"/>
<source>User settings</source>
<translation>Käyttäjäasetukset</translation>
</message>
@ -556,7 +612,7 @@ Example: https://server.my:8787</source>
<context>
<name>TextInputWidget</name>
<message>
<location filename="../../src/TextInputWidget.cpp" line="+459"/>
<location filename="../../src/TextInputWidget.cpp" line="+460"/>
<source>Send a file</source>
<translation>Lähetä tiedosto</translation>
</message>
@ -577,7 +633,7 @@ Example: https://server.my:8787</source>
<translation>Emoji</translation>
</message>
<message>
<location line="+84"/>
<location line="+86"/>
<source>Select a file</source>
<translation>Valitse tiedosto</translation>
</message>
@ -595,7 +651,7 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineModel</name>
<message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<location filename="../../src/timeline/TimelineModel.cpp" line="+891"/>
<source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished">-- Virhe purkaessa salausta (tietokannan kanssa kommunikointi epäonnistui) --</translation>
@ -618,7 +674,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished">Viestin poisto epäonnistui: %1</translation>
</message>
<message>
<location line="+455"/>
<location line="+488"/>
<source>Save image</source>
<translation type="unfinished">Tallenna kuva</translation>
</message>
@ -638,7 +694,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-610"/>
<location line="-643"/>
<source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation type="unfinished">-- Salattu viesti (salauksen purkuavaimia ei löydetty) --</translation>
@ -650,7 +706,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished">-- Salattu viesti (tuntematon viestityyppi) --</translation>
</message>
<message numerus="yes">
<location line="+660"/>
<location line="+693"/>
<source>%1 and %2 are typing.</source>
<comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
<translation>
@ -723,6 +779,11 @@ Example: https://server.my:8787</source>
<source>%1 changed their avatar.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>%1 changed some profile info.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>%1 joined.</source>
@ -764,12 +825,12 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-1238"/>
<location line="-1281"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1240"/>
<location line="+1283"/>
<source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation>
</message>
@ -793,7 +854,12 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineRow</name>
<message>
<location filename="../qml/TimelineRow.qml" line="+92"/>
<location filename="../qml/TimelineRow.qml" line="+91"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -807,6 +873,11 @@ Example: https://server.my:8787</source>
<name>TimelineView</name>
<message>
<location filename="../qml/TimelineView.qml" line="+54"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -846,7 +917,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+257"/>
<location line="+259"/>
<source>Close</source>
<translation type="unfinished">Sulje</translation>
</message>
@ -900,7 +971,7 @@ Example: https://server.my:8787</source>
<context>
<name>UserInfoWidget</name>
<message>
<location filename="../../src/UserInfoWidget.cpp" line="+88"/>
<location filename="../../src/UserInfoWidget.cpp" line="+91"/>
<source>Logout</source>
<translation>Kirjaudu ulos</translation>
</message>
@ -908,70 +979,173 @@ Example: https://server.my:8787</source>
<context>
<name>UserSettingsPage</name>
<message>
<location filename="../../src/UserSettingsPage.cpp" line="+339"/>
<location filename="../../src/UserSettingsPage.cpp" line="+520"/>
<source>Minimize to tray</source>
<translation>Pienennä ilmoitusalueelle</translation>
</message>
<message>
<location line="+1"/>
<location line="+3"/>
<source>Start in tray</source>
<translation>Aloita ilmoitusalueella</translation>
</message>
<message>
<location line="+3"/>
<location line="+7"/>
<source>Group&apos;s sidebar</source>
<translation>Ryhmäsivupalkki</translation>
</message>
<message>
<location line="-1"/>
<location line="-3"/>
<source>Circular Avatars</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt messages in sidebar</source>
<location line="-5"/>
<source>Keep the application running in the background after closing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Start the application in the background without showing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Change the appearance of user avatars in chats.
OFF - square, ON - Circle.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Show a column containing groups and tags next to the room list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Decrypt messages in sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt the messages shown in the sidebar.
Only affects messages in encrypted chats.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show buttons in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show buttons to quickly reply, react or access additional options next to each message.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Limit width of timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Typing notifications</source>
<translation>Kirjoitusilmoitukset</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show who is typing in a room.
This will also enable or disable sending typing notifications to others.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Sort rooms by unreads</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Display rooms with new messages first.
If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Read receipts</source>
<translation>Lukukuittaukset</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show if your message was read.
Status is displayed next to timestamps.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Send messages as Markdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Allow using markdown in messages.
When disabled, all messages are sent as a plain text.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Desktop notifications</source>
<translation>Työpöytäilmoitukset</translation>
</message>
<message>
<location line="+2"/>
<source>Notify about received message when the client is not currently focused.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Alert on notification</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show an alert when a message is received.
This usually causes the application icon in the task bar to animate in some fashion.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Highlight message on hover</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the background color of messages when you hover over them.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Large Emoji in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Make font size larger if messages with only a few emojis are displayed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Scale factor</source>
<translation>Mittakerroin</translation>
</message>
<message>
<location line="+2"/>
<source>Change the scale factor of the whole user interface.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Font size</source>
@ -998,7 +1172,7 @@ Example: https://server.my:8787</source>
<translation>Laitteen sormenjälki</translation>
</message>
<message>
<location line="-60"/>
<location line="-113"/>
<source>Session Keys</source>
<translation>Istunnon avaimet</translation>
</message>
@ -1018,22 +1192,22 @@ Example: https://server.my:8787</source>
<translation>SALAUS</translation>
</message>
<message>
<location line="-64"/>
<location line="-71"/>
<source>GENERAL</source>
<translation>YLEISET ASETUKSET</translation>
</message>
<message>
<location line="+26"/>
<location line="+29"/>
<source>INTERFACE</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+109"/>
<location line="+166"/>
<source>Emoji Font Family</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+163"/>
<location line="+179"/>
<source>Open Sessions File</source>
<translation>Avaa Istuntoavaintiedosto</translation>
</message>
@ -1105,7 +1279,7 @@ Example: https://server.my:8787</source>
<context>
<name>descriptiveTime</name>
<message>
<location filename="../../src/Utils.cpp" line="+141"/>
<location filename="../../src/Utils.cpp" line="+147"/>
<source>Yesterday</source>
<translation>Eilen</translation>
</message>
@ -1179,7 +1353,7 @@ Example: https://server.my:8787</source>
<context>
<name>dialogs::InviteUsers</name>
<message>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+41"/>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+42"/>
<source>Cancel</source>
<translation>Peruuta</translation>
</message>
@ -1276,7 +1450,7 @@ Median koko: %2
<context>
<name>dialogs::ReadReceipts</name>
<message>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+120"/>
<source>Read receipts</source>
<translation>Lukukuittaukset</translation>
</message>
@ -1289,12 +1463,12 @@ Median koko: %2
<context>
<name>dialogs::ReceiptItem</name>
<message>
<location line="-44"/>
<location line="-46"/>
<source>Today %1</source>
<translation>Tänään %1</translation>
</message>
<message>
<location line="+2"/>
<location line="+3"/>
<source>Yesterday %1</source>
<translation>Eilen %1</translation>
</message>
@ -1302,7 +1476,7 @@ Median koko: %2
<context>
<name>dialogs::RoomSettings</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+113"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+135"/>
<source>Settings</source>
<translation>Asetukset</translation>
</message>
@ -1504,7 +1678,7 @@ Median koko: %2
<context>
<name>message-description sent:</name>
<message>
<location filename="../../src/Utils.h" line="+100"/>
<location filename="../../src/Utils.h" line="+103"/>
<source>You sent an audio clip</source>
<translation type="unfinished"></translation>
</message>

@ -4,7 +4,7 @@
<context>
<name>Cache</name>
<message>
<location filename="../../src/Cache.cpp" line="+1341"/>
<location filename="../../src/Cache.cpp" line="+1342"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
@ -12,23 +12,23 @@
<context>
<name>ChatPage</name>
<message>
<location filename="../../src/ChatPage.cpp" line="+226"/>
<location filename="../../src/ChatPage.cpp" line="+227"/>
<source>Failed to invite user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<location line="+892"/>
<location line="+923"/>
<source>Invited user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-463"/>
<location line="-471"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<location line="+436"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
@ -68,7 +68,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="-817"/>
<location line="-825"/>
<source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation>
</message>
@ -98,7 +98,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="+148"/>
<location line="+156"/>
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
<translation type="unfinished"></translation>
</message>
@ -151,6 +151,12 @@
<source>Low priority rooms</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Server Notices</source>
<comment>Tag translation for m.server_notice</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+2"/>
@ -166,7 +172,7 @@
<context>
<name>EditModal</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+60"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+72"/>
<source>Apply</source>
<translation type="unfinished"></translation>
</message>
@ -186,6 +192,55 @@
<translation>Sujet</translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+117"/>
<location line="+139"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-42"/>
<source>People</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Nature</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Food</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Activity</source>
<translation type="unfinished">Activités</translation>
</message>
<message>
<location line="+2"/>
<source>Travel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Objects</source>
<translation type="unfinished">Objets</translation>
</message>
<message>
<location line="+2"/>
<source>Symbols</source>
<translation type="unfinished">Symboles</translation>
</message>
<message>
<location line="+2"/>
<source>Flags</source>
<translation type="unfinished">Drapeaux</translation>
</message>
</context>
<context>
<name>EncryptionIndicator</name>
<message>
@ -202,7 +257,7 @@
<context>
<name>InviteeItem</name>
<message>
<location filename="../../src/InviteeItem.cpp" line="+17"/>
<location filename="../../src/InviteeItem.cpp" line="+18"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
@ -210,7 +265,7 @@
<context>
<name>LoginPage</name>
<message>
<location filename="../../src/LoginPage.cpp" line="+89"/>
<location filename="../../src/LoginPage.cpp" line="+90"/>
<source>Matrix ID</source>
<translation>Identifiant Matrix</translation>
</message>
@ -239,7 +294,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
</message>
<message>
<location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -250,7 +305,7 @@ Example: https://server.my:8787</source>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<location line="+191"/>
<source>LOGIN</source>
<translation>CONNEXION</translation>
</message>
@ -365,7 +420,7 @@ Example: https://server.my:8787</source>
<context>
<name>RegisterPage</name>
<message>
<location filename="../../src/RegisterPage.cpp" line="+87"/>
<location filename="../../src/RegisterPage.cpp" line="+88"/>
<source>Username</source>
<translation>Nom d&apos;utilisateur</translation>
</message>
@ -433,7 +488,7 @@ Example: https://server.my:8787</source>
<context>
<name>RoomInfo</name>
<message>
<location filename="../../src/Cache.cpp" line="+939"/>
<location filename="../../src/Cache.cpp" line="+940"/>
<source>no version stored</source>
<translation type="unfinished"></translation>
</message>
@ -451,7 +506,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<location line="+18"/>
<source>Favourite</source>
<comment>Standard matrix tag for favourites</comment>
<translation type="unfinished"></translation>
@ -469,7 +524,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+12"/>
<source>Adds or removes the specified tag.</source>
<comment>WhatsThis hint for tag menu actions</comment>
<translation type="unfinished"></translation>
@ -481,14 +536,15 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+4"/>
<source>New Tag</source>
<comment>Tag name prompt title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<location line="+1"/>
<source>Tag:</source>
<comment>Tag name prompt</comment>
<translation type="unfinished"></translation>
</message>
<message>
@ -505,7 +561,7 @@ Example: https://server.my:8787</source>
<context>
<name>SideBarActions</name>
<message>
<location filename="../../src/SideBarActions.cpp" line="+38"/>
<location filename="../../src/SideBarActions.cpp" line="+40"/>
<source>User settings</source>
<translation type="unfinished"></translation>
</message>
@ -556,7 +612,7 @@ Example: https://server.my:8787</source>
<context>
<name>TextInputWidget</name>
<message>
<location filename="../../src/TextInputWidget.cpp" line="+459"/>
<location filename="../../src/TextInputWidget.cpp" line="+460"/>
<source>Send a file</source>
<translation type="unfinished"></translation>
</message>
@ -577,7 +633,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+84"/>
<location line="+86"/>
<source>Select a file</source>
<translation>Sélectionnez un fichier</translation>
</message>
@ -595,7 +651,7 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineModel</name>
<message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<location filename="../../src/timeline/TimelineModel.cpp" line="+891"/>
<source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished"></translation>
@ -618,7 +674,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+455"/>
<location line="+488"/>
<source>Save image</source>
<translation type="unfinished">Enregistrer l&apos;image</translation>
</message>
@ -638,7 +694,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-610"/>
<location line="-643"/>
<source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation type="unfinished"></translation>
@ -650,7 +706,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+660"/>
<location line="+693"/>
<source>%1 and %2 are typing.</source>
<comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
<translation type="unfinished">
@ -723,6 +779,11 @@ Example: https://server.my:8787</source>
<source>%1 changed their avatar.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>%1 changed some profile info.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>%1 joined.</source>
@ -764,12 +825,12 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-1238"/>
<location line="-1281"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1240"/>
<location line="+1283"/>
<source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation>
</message>
@ -793,7 +854,12 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineRow</name>
<message>
<location filename="../qml/TimelineRow.qml" line="+92"/>
<location filename="../qml/TimelineRow.qml" line="+91"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -807,6 +873,11 @@ Example: https://server.my:8787</source>
<name>TimelineView</name>
<message>
<location filename="../qml/TimelineView.qml" line="+54"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -846,7 +917,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+257"/>
<location line="+259"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
@ -900,7 +971,7 @@ Example: https://server.my:8787</source>
<context>
<name>UserInfoWidget</name>
<message>
<location filename="../../src/UserInfoWidget.cpp" line="+88"/>
<location filename="../../src/UserInfoWidget.cpp" line="+91"/>
<source>Logout</source>
<translation type="unfinished"></translation>
</message>
@ -908,70 +979,173 @@ Example: https://server.my:8787</source>
<context>
<name>UserSettingsPage</name>
<message>
<location filename="../../src/UserSettingsPage.cpp" line="+339"/>
<location filename="../../src/UserSettingsPage.cpp" line="+520"/>
<source>Minimize to tray</source>
<translation>Réduire à la barre des tâches</translation>
</message>
<message>
<location line="+1"/>
<location line="+3"/>
<source>Start in tray</source>
<translation>Démarrer dans la barre des tâches</translation>
</message>
<message>
<location line="+3"/>
<location line="+7"/>
<source>Group&apos;s sidebar</source>
<translation>Barre latérale des groupes</translation>
</message>
<message>
<location line="-1"/>
<location line="-3"/>
<source>Circular Avatars</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt messages in sidebar</source>
<location line="-5"/>
<source>Keep the application running in the background after closing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Start the application in the background without showing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Change the appearance of user avatars in chats.
OFF - square, ON - Circle.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Show a column containing groups and tags next to the room list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Decrypt messages in sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt the messages shown in the sidebar.
Only affects messages in encrypted chats.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show buttons in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show buttons to quickly reply, react or access additional options next to each message.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Limit width of timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Typing notifications</source>
<translation>Notifications d&apos;écriture</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show who is typing in a room.
This will also enable or disable sending typing notifications to others.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Sort rooms by unreads</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Display rooms with new messages first.
If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Read receipts</source>
<translation>Accusés de lecture</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show if your message was read.
Status is displayed next to timestamps.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Send messages as Markdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Allow using markdown in messages.
When disabled, all messages are sent as a plain text.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Desktop notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Notify about received message when the client is not currently focused.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Alert on notification</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show an alert when a message is received.
This usually causes the application icon in the task bar to animate in some fashion.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Highlight message on hover</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the background color of messages when you hover over them.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Large Emoji in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Make font size larger if messages with only a few emojis are displayed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Scale factor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the scale factor of the whole user interface.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Font size</source>
@ -998,7 +1172,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-60"/>
<location line="-113"/>
<source>Session Keys</source>
<translation type="unfinished"></translation>
</message>
@ -1018,22 +1192,22 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-64"/>
<location line="-71"/>
<source>GENERAL</source>
<translation>GÉNÉRAL</translation>
</message>
<message>
<location line="+26"/>
<location line="+29"/>
<source>INTERFACE</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+109"/>
<location line="+166"/>
<source>Emoji Font Family</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+163"/>
<location line="+179"/>
<source>Open Sessions File</source>
<translation type="unfinished"></translation>
</message>
@ -1105,7 +1279,7 @@ Example: https://server.my:8787</source>
<context>
<name>descriptiveTime</name>
<message>
<location filename="../../src/Utils.cpp" line="+141"/>
<location filename="../../src/Utils.cpp" line="+147"/>
<source>Yesterday</source>
<translation type="unfinished"></translation>
</message>
@ -1179,7 +1353,7 @@ Example: https://server.my:8787</source>
<context>
<name>dialogs::InviteUsers</name>
<message>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+41"/>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+42"/>
<source>Cancel</source>
<translation type="unfinished">Annuler</translation>
</message>
@ -1276,7 +1450,7 @@ Taille du média : %2
<context>
<name>dialogs::ReadReceipts</name>
<message>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+120"/>
<source>Read receipts</source>
<translation>Accusés de lecture</translation>
</message>
@ -1289,12 +1463,12 @@ Taille du média : %2
<context>
<name>dialogs::ReceiptItem</name>
<message>
<location line="-44"/>
<location line="-46"/>
<source>Today %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+3"/>
<source>Yesterday %1</source>
<translation type="unfinished"></translation>
</message>
@ -1302,7 +1476,7 @@ Taille du média : %2
<context>
<name>dialogs::RoomSettings</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+113"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+135"/>
<source>Settings</source>
<translation type="unfinished">Paramètres</translation>
</message>
@ -1502,7 +1676,7 @@ Taille du média : %2
<context>
<name>message-description sent:</name>
<message>
<location filename="../../src/Utils.h" line="+100"/>
<location filename="../../src/Utils.h" line="+103"/>
<source>You sent an audio clip</source>
<translation type="unfinished"></translation>
</message>

@ -4,7 +4,7 @@
<context>
<name>Cache</name>
<message>
<location filename="../../src/Cache.cpp" line="+1341"/>
<location filename="../../src/Cache.cpp" line="+1342"/>
<source>You joined this room.</source>
<translation>Sei entrato in questa stanza.</translation>
</message>
@ -12,23 +12,23 @@
<context>
<name>ChatPage</name>
<message>
<location filename="../../src/ChatPage.cpp" line="+226"/>
<location filename="../../src/ChatPage.cpp" line="+227"/>
<source>Failed to invite user: %1</source>
<translation>Impossibile invitare l&apos;utente: %1</translation>
</message>
<message>
<location line="+4"/>
<location line="+892"/>
<location line="+923"/>
<source>Invited user: %1</source>
<translation>Invitato utente: %1</translation>
</message>
<message>
<location line="-463"/>
<location line="-471"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation>Migrazione della cache alla versione corrente fallita. Questo può avere diverse cause. Per favore apri una issue e nel frattempo prova ad usare una versione più vecchia. In alternativa puoi provare a cancellare la cache manualmente.</translation>
</message>
<message>
<location line="+428"/>
<location line="+436"/>
<source>Room %1 created.</source>
<translation>Stanza %1 creata.</translation>
</message>
@ -68,7 +68,7 @@
<translation>Rimosso il ban dall&apos;utente: %1</translation>
</message>
<message>
<location line="-817"/>
<location line="-825"/>
<source>Failed to upload media. Please try again.</source>
<translation>Impossibile inviare il file multimediale. Per favore riprova.</translation>
</message>
@ -98,7 +98,7 @@
<translation>Impossibile ripristinare i dati salvati. Per favore accedi nuovamente.</translation>
</message>
<message>
<location line="+148"/>
<location line="+156"/>
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
<translation>Impossibile configurare le chiavi crittografiche. Risposta del server: %1 %2. Per favore riprova in seguito.</translation>
</message>
@ -151,6 +151,12 @@
<source>Low priority rooms</source>
<translation>Stanze a bassa priorità</translation>
</message>
<message>
<location line="+2"/>
<source>Server Notices</source>
<comment>Tag translation for m.server_notice</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+2"/>
@ -166,7 +172,7 @@
<context>
<name>EditModal</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+60"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+72"/>
<source>Apply</source>
<translation>Applica</translation>
</message>
@ -186,6 +192,55 @@
<translation>Argomento</translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+117"/>
<location line="+139"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-42"/>
<source>People</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Nature</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Food</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Activity</source>
<translation type="unfinished">Attività</translation>
</message>
<message>
<location line="+2"/>
<source>Travel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Objects</source>
<translation type="unfinished">Oggetti</translation>
</message>
<message>
<location line="+2"/>
<source>Symbols</source>
<translation type="unfinished">Simboli</translation>
</message>
<message>
<location line="+2"/>
<source>Flags</source>
<translation type="unfinished">Bandiere</translation>
</message>
</context>
<context>
<name>EncryptionIndicator</name>
<message>
@ -202,7 +257,7 @@
<context>
<name>InviteeItem</name>
<message>
<location filename="../../src/InviteeItem.cpp" line="+17"/>
<location filename="../../src/InviteeItem.cpp" line="+18"/>
<source>Remove</source>
<translation>Rimuovi</translation>
</message>
@ -210,7 +265,7 @@
<context>
<name>LoginPage</name>
<message>
<location filename="../../src/LoginPage.cpp" line="+89"/>
<location filename="../../src/LoginPage.cpp" line="+90"/>
<source>Matrix ID</source>
<translation>ID Matrix</translation>
</message>
@ -242,8 +297,8 @@ Se Nheko non conclude la ricerca del tuo homeserver, ti mostrerà un campo in cu
</message>
<message>
<location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation>Un nome per questo dispositivo, che sarà mostrato agli altri mentre si verificano i tuoi dispositivi. Se non ne fornisci uno, verrà usata una stringa casuale per ragioni di privacy. </translation>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
@ -254,7 +309,7 @@ Esempio: https://server.mio:8787</translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<location line="+191"/>
<source>LOGIN</source>
<translation>ACCEDI</translation>
</message>
@ -369,7 +424,7 @@ Esempio: https://server.mio:8787</translation>
<context>
<name>RegisterPage</name>
<message>
<location filename="../../src/RegisterPage.cpp" line="+87"/>
<location filename="../../src/RegisterPage.cpp" line="+88"/>
<source>Username</source>
<translation>Nome utente</translation>
</message>
@ -437,7 +492,7 @@ Esempio: https://server.mio:8787</translation>
<context>
<name>RoomInfo</name>
<message>
<location filename="../../src/Cache.cpp" line="+939"/>
<location filename="../../src/Cache.cpp" line="+940"/>
<source>no version stored</source>
<translation>nessuna versione memorizzata</translation>
</message>
@ -445,12 +500,59 @@ Esempio: https://server.mio:8787</translation>
<context>
<name>RoomInfoListItem</name>
<message>
<location filename="../../src/RoomInfoListItem.cpp" line="+98"/>
<location filename="../../src/RoomInfoListItem.cpp" line="+102"/>
<source>Leave room</source>
<translation>Lascia la stanza</translation>
</message>
<message>
<location line="+160"/>
<location line="+7"/>
<source>Tag room as:</source>
<translation type="unfinished">stanza come:</translation>
</message>
<message>
<location line="+18"/>
<source>Favourite</source>
<comment>Standard matrix tag for favourites</comment>
<translation type="unfinished">Tag matrix standard per i preferiti</translation>
</message>
<message>
<location line="+3"/>
<source>Low Priority</source>
<comment>Standard matrix tag for low priority rooms</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Server Notice</source>
<comment>Standard matrix tag for server notices</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Adds or removes the specified tag.</source>
<comment>WhatsThis hint for tag menu actions</comment>
<translation type="unfinished">Aggiungi o rimuovi il tag specificato.</translation>
</message>
<message>
<location line="+38"/>
<source>New tag...</source>
<comment>Add a new tag to the room</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>New Tag</source>
<comment>Tag name prompt title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Tag:</source>
<comment>Tag name prompt</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+173"/>
<source>Accept</source>
<translation>Accetta</translation>
</message>
@ -463,7 +565,7 @@ Esempio: https://server.mio:8787</translation>
<context>
<name>SideBarActions</name>
<message>
<location filename="../../src/SideBarActions.cpp" line="+38"/>
<location filename="../../src/SideBarActions.cpp" line="+40"/>
<source>User settings</source>
<translation>Impostazioni utente</translation>
</message>
@ -514,7 +616,7 @@ Esempio: https://server.mio:8787</translation>
<context>
<name>TextInputWidget</name>
<message>
<location filename="../../src/TextInputWidget.cpp" line="+459"/>
<location filename="../../src/TextInputWidget.cpp" line="+460"/>
<source>Send a file</source>
<translation>Invia un file</translation>
</message>
@ -535,7 +637,7 @@ Esempio: https://server.mio:8787</translation>
<translation>Emoji</translation>
</message>
<message>
<location line="+84"/>
<location line="+86"/>
<source>Select a file</source>
<translation>Seleziona un file</translation>
</message>
@ -553,7 +655,7 @@ Esempio: https://server.mio:8787</translation>
<context>
<name>TimelineModel</name>
<message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<location filename="../../src/timeline/TimelineModel.cpp" line="+891"/>
<source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation>-- Errore di Decriptazione (impossibile comunicare con il DB) --</translation>
@ -576,7 +678,7 @@ Esempio: https://server.mio:8787</translation>
<translation>Oscuramento del messaggio fallito: %1</translation>
</message>
<message>
<location line="+455"/>
<location line="+488"/>
<source>Save image</source>
<translation>Salva immagine</translation>
</message>
@ -596,7 +698,7 @@ Esempio: https://server.mio:8787</translation>
<translation>Salva file</translation>
</message>
<message>
<location line="-610"/>
<location line="-643"/>
<source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation>-- Evento Criptato (Chiavi per la decriptazione non trovate) --</translation>
@ -608,7 +710,7 @@ Esempio: https://server.mio:8787</translation>
<translation>-- Evento Criptato (Tipo di evento ignoto) --</translation>
</message>
<message numerus="yes">
<location line="+660"/>
<location line="+693"/>
<source>%1 and %2 are typing.</source>
<comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
<translation>
@ -681,6 +783,11 @@ Esempio: https://server.mio:8787</translation>
<source>%1 changed their avatar.</source>
<translation>%1 ha cambiato il suo avatar.</translation>
</message>
<message>
<location line="+2"/>
<source>%1 changed some profile info.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>%1 joined.</source>
@ -722,12 +829,12 @@ Esempio: https://server.mio:8787</translation>
<translation>%1 ha oscurato la sua bussata.</translation>
</message>
<message>
<location line="-1238"/>
<location line="-1281"/>
<source>You joined this room.</source>
<translation>Sei entrato in questa stanza.</translation>
</message>
<message>
<location line="+1240"/>
<location line="+1283"/>
<source>Rejected the knock from %1.</source>
<translation>Rifiutata la bussata di %1.</translation>
</message>
@ -751,7 +858,12 @@ Esempio: https://server.mio:8787</translation>
<context>
<name>TimelineRow</name>
<message>
<location filename="../qml/TimelineRow.qml" line="+88"/>
<location filename="../qml/TimelineRow.qml" line="+91"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Reply</source>
<translation>Rispondi</translation>
</message>
@ -764,7 +876,12 @@ Esempio: https://server.mio:8787</translation>
<context>
<name>TimelineView</name>
<message>
<location filename="../qml/TimelineView.qml" line="+53"/>
<location filename="../qml/TimelineView.qml" line="+54"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Reply</source>
<translation>Risposta</translation>
</message>
@ -804,7 +921,7 @@ Esempio: https://server.mio:8787</translation>
<translation>Nessuna stanza aperta</translation>
</message>
<message>
<location line="+256"/>
<location line="+259"/>
<source>Close</source>
<translation>Chiudi</translation>
</message>
@ -858,7 +975,7 @@ Esempio: https://server.mio:8787</translation>
<context>
<name>UserInfoWidget</name>
<message>
<location filename="../../src/UserInfoWidget.cpp" line="+88"/>
<location filename="../../src/UserInfoWidget.cpp" line="+91"/>
<source>Logout</source>
<translation>Disconnettiti</translation>
</message>
@ -866,65 +983,173 @@ Esempio: https://server.mio:8787</translation>
<context>
<name>UserSettingsPage</name>
<message>
<location filename="../../src/UserSettingsPage.cpp" line="+335"/>
<location filename="../../src/UserSettingsPage.cpp" line="+520"/>
<source>Minimize to tray</source>
<translation>Minimizza nella tray</translation>
</message>
<message>
<location line="+1"/>
<location line="+3"/>
<source>Start in tray</source>
<translation>Avvia nella tray</translation>
</message>
<message>
<location line="+3"/>
<location line="+7"/>
<source>Group&apos;s sidebar</source>
<translation>Barra laterale dei gruppi</translation>
</message>
<message>
<location line="-1"/>
<location line="-3"/>
<source>Circular Avatars</source>
<translation>Avatar Circolari</translation>
</message>
<message>
<location line="+2"/>
<location line="-5"/>
<source>Keep the application running in the background after closing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Start the application in the background without showing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Change the appearance of user avatars in chats.
OFF - square, ON - Circle.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Show a column containing groups and tags next to the room list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Decrypt messages in sidebar</source>
<translation>Decripta messaggi nella barra laterale</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Decrypt the messages shown in the sidebar.
Only affects messages in encrypted chats.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show buttons in timeline</source>
<translation>Mostra pulsanti nella timeline</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show buttons to quickly reply, react or access additional options next to each message.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Limit width of timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Typing notifications</source>
<translation>Notifiche di scrittura</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show who is typing in a room.
This will also enable or disable sending typing notifications to others.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Sort rooms by unreads</source>
<translation>Ordina stanze per non letti</translation>
</message>
<message>
<location line="+2"/>
<source>Display rooms with new messages first.
If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Read receipts</source>
<translation>Ricevute di lettura</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show if your message was read.
Status is displayed next to timestamps.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Send messages as Markdown</source>
<translation>Invia messaggi come Markdown</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Allow using markdown in messages.
When disabled, all messages are sent as a plain text.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Desktop notifications</source>
<translation>Notifiche desktop</translation>
</message>
<message>
<location line="+2"/>
<source>Notify about received message when the client is not currently focused.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Alert on notification</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show an alert when a message is received.
This usually causes the application icon in the task bar to animate in some fashion.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Highlight message on hover</source>
<translation type="unfinished">Evidenzia il messaggio al passaggio del mouse</translation>
</message>
<message>
<location line="+2"/>
<source>Change the background color of messages when you hover over them.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Large Emoji in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Make font size larger if messages with only a few emojis are displayed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Scale factor</source>
<translation>Fattore di scala</translation>
</message>
<message>
<location line="+2"/>
<source>Change the scale factor of the whole user interface.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Font size</source>
@ -951,7 +1176,7 @@ Esempio: https://server.mio:8787</translation>
<translation>Impronta digitale del dispositivo</translation>
</message>
<message>
<location line="-59"/>
<location line="-113"/>
<source>Session Keys</source>
<translation>Chiavi di Sessione</translation>
</message>
@ -971,22 +1196,22 @@ Esempio: https://server.mio:8787</translation>
<translation>CRITTOGRAFIA</translation>
</message>
<message>
<location line="-63"/>
<location line="-71"/>
<source>GENERAL</source>
<translation>GENERALE</translation>
</message>
<message>
<location line="+25"/>
<location line="+29"/>
<source>INTERFACE</source>
<translation>INTERFACCIA</translation>
</message>
<message>
<location line="+108"/>
<location line="+166"/>
<source>Emoji Font Family</source>
<translation>Famiglia dei caratteri delle Emoji</translation>
</message>
<message>
<location line="+158"/>
<location line="+179"/>
<source>Open Sessions File</source>
<translation>Apri File delle Sessioni</translation>
</message>
@ -1058,7 +1283,7 @@ Esempio: https://server.mio:8787</translation>
<context>
<name>descriptiveTime</name>
<message>
<location filename="../../src/Utils.cpp" line="+141"/>
<location filename="../../src/Utils.cpp" line="+147"/>
<source>Yesterday</source>
<translation>Ieri</translation>
</message>
@ -1132,7 +1357,7 @@ Esempio: https://server.mio:8787</translation>
<context>
<name>dialogs::InviteUsers</name>
<message>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+41"/>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+42"/>
<source>Cancel</source>
<translation>Annulla</translation>
</message>
@ -1229,7 +1454,7 @@ Peso media: %2
<context>
<name>dialogs::ReadReceipts</name>
<message>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+120"/>
<source>Read receipts</source>
<translation>Ricevute di lettura</translation>
</message>
@ -1242,12 +1467,12 @@ Peso media: %2
<context>
<name>dialogs::ReceiptItem</name>
<message>
<location line="-44"/>
<location line="-46"/>
<source>Today %1</source>
<translation>Oggi %1</translation>
</message>
<message>
<location line="+2"/>
<location line="+3"/>
<source>Yesterday %1</source>
<translation>Ieri %1</translation>
</message>
@ -1255,7 +1480,7 @@ Peso media: %2
<context>
<name>dialogs::RoomSettings</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+113"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+135"/>
<source>Settings</source>
<translation>Impostazioni</translation>
</message>
@ -1457,7 +1682,7 @@ Peso media: %2
<context>
<name>message-description sent:</name>
<message>
<location filename="../../src/Utils.h" line="+100"/>
<location filename="../../src/Utils.h" line="+103"/>
<source>You sent an audio clip</source>
<translation>Hai inviato una clip audio</translation>
</message>
@ -1558,29 +1783,4 @@ Peso media: %2
<translation>Tipo di Messaggio sconosciuto</translation>
</message>
</context>
<context>
<name></name>
<message>
<location line="+7"/>
<source>Tag room as:</source>
<translation>stanza come:</translation>
</message>
<message>
<location line="+7"/>
<source>Favourite</source>
<comment>Standard matrix tag for favourites</comment>
<translation>Tag matrix standard per i preferiti</translation>
</message>
<message>
<location line="+13"/>
<source>Adds or removes the specified tag.</source>
<comment>WhatsThis hint for tag menu actions</comment>
<translation>Aggiungi o rimuovi il tag specificato.</translation>
</message>
<message>
<location line="+1"/>
<source>Highlight message on hover</source>
<translation>Evidenzia il messaggio al passaggio del mouse</translation>
</message>
</context>
</TS>

@ -4,7 +4,7 @@
<context>
<name>Cache</name>
<message>
<location filename="../../src/Cache.cpp" line="+1341"/>
<location filename="../../src/Cache.cpp" line="+1342"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
@ -12,23 +12,23 @@
<context>
<name>ChatPage</name>
<message>
<location filename="../../src/ChatPage.cpp" line="+226"/>
<location filename="../../src/ChatPage.cpp" line="+227"/>
<source>Failed to invite user: %1</source>
<translation>: %1</translation>
</message>
<message>
<location line="+4"/>
<location line="+892"/>
<location line="+923"/>
<source>Invited user: %1</source>
<translation>: %1</translation>
</message>
<message>
<location line="-463"/>
<location line="-471"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<location line="+436"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
@ -68,7 +68,7 @@
<translation>: %1</translation>
</message>
<message>
<location line="-817"/>
<location line="-825"/>
<source>Failed to upload media. Please try again.</source>
<translation></translation>
</message>
@ -98,7 +98,7 @@
<translation></translation>
</message>
<message>
<location line="+148"/>
<location line="+156"/>
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
<translation>: %1 %2. </translation>
</message>
@ -151,6 +151,12 @@
<source>Low priority rooms</source>
<translation></translation>
</message>
<message>
<location line="+2"/>
<source>Server Notices</source>
<comment>Tag translation for m.server_notice</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+2"/>
@ -166,7 +172,7 @@
<context>
<name>EditModal</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+60"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+72"/>
<source>Apply</source>
<translation></translation>
</message>
@ -186,6 +192,55 @@
<translation></translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+117"/>
<location line="+139"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-42"/>
<source>People</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Nature</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Food</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Activity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Travel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Objects</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Symbols</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Flags</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EncryptionIndicator</name>
<message>
@ -202,7 +257,7 @@
<context>
<name>InviteeItem</name>
<message>
<location filename="../../src/InviteeItem.cpp" line="+17"/>
<location filename="../../src/InviteeItem.cpp" line="+18"/>
<source>Remove</source>
<translation></translation>
</message>
@ -210,7 +265,7 @@
<context>
<name>LoginPage</name>
<message>
<location filename="../../src/LoginPage.cpp" line="+89"/>
<location filename="../../src/LoginPage.cpp" line="+90"/>
<source>Matrix ID</source>
<translation>Matrix ID</translation>
</message>
@ -239,7 +294,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
</message>
<message>
<location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -250,7 +305,7 @@ Example: https://server.my:8787</source>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<location line="+191"/>
<source>LOGIN</source>
<translation></translation>
</message>
@ -365,7 +420,7 @@ Example: https://server.my:8787</source>
<context>
<name>RegisterPage</name>
<message>
<location filename="../../src/RegisterPage.cpp" line="+87"/>
<location filename="../../src/RegisterPage.cpp" line="+88"/>
<source>Username</source>
<translation></translation>
</message>
@ -433,7 +488,7 @@ Example: https://server.my:8787</source>
<context>
<name>RoomInfo</name>
<message>
<location filename="../../src/Cache.cpp" line="+939"/>
<location filename="../../src/Cache.cpp" line="+940"/>
<source>no version stored</source>
<translation></translation>
</message>
@ -451,7 +506,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<location line="+18"/>
<source>Favourite</source>
<comment>Standard matrix tag for favourites</comment>
<translation type="unfinished"></translation>
@ -469,7 +524,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+12"/>
<source>Adds or removes the specified tag.</source>
<comment>WhatsThis hint for tag menu actions</comment>
<translation type="unfinished"></translation>
@ -481,14 +536,15 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+4"/>
<source>New Tag</source>
<comment>Tag name prompt title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<location line="+1"/>
<source>Tag:</source>
<comment>Tag name prompt</comment>
<translation type="unfinished"></translation>
</message>
<message>
@ -505,7 +561,7 @@ Example: https://server.my:8787</source>
<context>
<name>SideBarActions</name>
<message>
<location filename="../../src/SideBarActions.cpp" line="+38"/>
<location filename="../../src/SideBarActions.cpp" line="+40"/>
<source>User settings</source>
<translation></translation>
</message>
@ -556,7 +612,7 @@ Example: https://server.my:8787</source>
<context>
<name>TextInputWidget</name>
<message>
<location filename="../../src/TextInputWidget.cpp" line="+459"/>
<location filename="../../src/TextInputWidget.cpp" line="+460"/>
<source>Send a file</source>
<translation></translation>
</message>
@ -577,7 +633,7 @@ Example: https://server.my:8787</source>
<translation></translation>
</message>
<message>
<location line="+84"/>
<location line="+86"/>
<source>Select a file</source>
<translation></translation>
</message>
@ -595,7 +651,7 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineModel</name>
<message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<location filename="../../src/timeline/TimelineModel.cpp" line="+891"/>
<source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation>-- () --</translation>
@ -618,7 +674,7 @@ Example: https://server.my:8787</source>
<translation>: %1</translation>
</message>
<message>
<location line="+455"/>
<location line="+488"/>
<source>Save image</source>
<translation></translation>
</message>
@ -638,7 +694,7 @@ Example: https://server.my:8787</source>
<translation></translation>
</message>
<message>
<location line="-610"/>
<location line="-643"/>
<source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation type="unfinished">-- () --</translation>
@ -650,7 +706,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished">-- () --</translation>
</message>
<message numerus="yes">
<location line="+660"/>
<location line="+693"/>
<source>%1 and %2 are typing.</source>
<comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
<translation>
@ -722,6 +778,11 @@ Example: https://server.my:8787</source>
<source>%1 changed their avatar.</source>
<translation>%1</translation>
</message>
<message>
<location line="+2"/>
<source>%1 changed some profile info.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>%1 joined.</source>
@ -763,12 +824,12 @@ Example: https://server.my:8787</source>
<translation>%1</translation>
</message>
<message>
<location line="-1238"/>
<location line="-1281"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1240"/>
<location line="+1283"/>
<source>Rejected the knock from %1.</source>
<translation>%1</translation>
</message>
@ -792,7 +853,12 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineRow</name>
<message>
<location filename="../qml/TimelineRow.qml" line="+92"/>
<location filename="../qml/TimelineRow.qml" line="+91"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Reply</source>
<translation></translation>
</message>
@ -806,6 +872,11 @@ Example: https://server.my:8787</source>
<name>TimelineView</name>
<message>
<location filename="../qml/TimelineView.qml" line="+54"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -845,7 +916,7 @@ Example: https://server.my:8787</source>
<translation></translation>
</message>
<message>
<location line="+257"/>
<location line="+259"/>
<source>Close</source>
<translation></translation>
</message>
@ -899,7 +970,7 @@ Example: https://server.my:8787</source>
<context>
<name>UserInfoWidget</name>
<message>
<location filename="../../src/UserInfoWidget.cpp" line="+88"/>
<location filename="../../src/UserInfoWidget.cpp" line="+91"/>
<source>Logout</source>
<translation></translation>
</message>
@ -907,70 +978,173 @@ Example: https://server.my:8787</source>
<context>
<name>UserSettingsPage</name>
<message>
<location filename="../../src/UserSettingsPage.cpp" line="+339"/>
<location filename="../../src/UserSettingsPage.cpp" line="+520"/>
<source>Minimize to tray</source>
<translation></translation>
</message>
<message>
<location line="+1"/>
<location line="+3"/>
<source>Start in tray</source>
<translation></translation>
</message>
<message>
<location line="+3"/>
<location line="+7"/>
<source>Group&apos;s sidebar</source>
<translation></translation>
</message>
<message>
<location line="-1"/>
<location line="-3"/>
<source>Circular Avatars</source>
<translation></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt messages in sidebar</source>
<location line="-5"/>
<source>Keep the application running in the background after closing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Start the application in the background without showing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Change the appearance of user avatars in chats.
OFF - square, ON - Circle.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Show a column containing groups and tags next to the room list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Decrypt messages in sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt the messages shown in the sidebar.
Only affects messages in encrypted chats.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show buttons in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show buttons to quickly reply, react or access additional options next to each message.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Limit width of timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Typing notifications</source>
<translation></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show who is typing in a room.
This will also enable or disable sending typing notifications to others.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Sort rooms by unreads</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Display rooms with new messages first.
If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Read receipts</source>
<translation></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show if your message was read.
Status is displayed next to timestamps.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Send messages as Markdown</source>
<translation>Markdownとして送信</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Allow using markdown in messages.
When disabled, all messages are sent as a plain text.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Desktop notifications</source>
<translation></translation>
</message>
<message>
<location line="+2"/>
<source>Notify about received message when the client is not currently focused.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Alert on notification</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show an alert when a message is received.
This usually causes the application icon in the task bar to animate in some fashion.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Highlight message on hover</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the background color of messages when you hover over them.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Large Emoji in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Make font size larger if messages with only a few emojis are displayed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Scale factor</source>
<translation></translation>
</message>
<message>
<location line="+2"/>
<source>Change the scale factor of the whole user interface.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Font size</source>
@ -997,7 +1171,7 @@ Example: https://server.my:8787</source>
<translation></translation>
</message>
<message>
<location line="-60"/>
<location line="-113"/>
<source>Session Keys</source>
<translation></translation>
</message>
@ -1017,22 +1191,22 @@ Example: https://server.my:8787</source>
<translation></translation>
</message>
<message>
<location line="-64"/>
<location line="-71"/>
<source>GENERAL</source>
<translation></translation>
</message>
<message>
<location line="+26"/>
<location line="+29"/>
<source>INTERFACE</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+109"/>
<location line="+166"/>
<source>Emoji Font Family</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+163"/>
<location line="+179"/>
<source>Open Sessions File</source>
<translation></translation>
</message>
@ -1104,7 +1278,7 @@ Example: https://server.my:8787</source>
<context>
<name>descriptiveTime</name>
<message>
<location filename="../../src/Utils.cpp" line="+141"/>
<location filename="../../src/Utils.cpp" line="+147"/>
<source>Yesterday</source>
<translation></translation>
</message>
@ -1178,7 +1352,7 @@ Example: https://server.my:8787</source>
<context>
<name>dialogs::InviteUsers</name>
<message>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+41"/>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+42"/>
<source>Cancel</source>
<translation></translation>
</message>
@ -1275,7 +1449,7 @@ Media size: %2
<context>
<name>dialogs::ReadReceipts</name>
<message>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+120"/>
<source>Read receipts</source>
<translation></translation>
</message>
@ -1288,12 +1462,12 @@ Media size: %2
<context>
<name>dialogs::ReceiptItem</name>
<message>
<location line="-44"/>
<location line="-46"/>
<source>Today %1</source>
<translation> %1</translation>
</message>
<message>
<location line="+2"/>
<location line="+3"/>
<source>Yesterday %1</source>
<translation> %1</translation>
</message>
@ -1301,7 +1475,7 @@ Media size: %2
<context>
<name>dialogs::RoomSettings</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+113"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+135"/>
<source>Settings</source>
<translation></translation>
</message>
@ -1502,7 +1676,7 @@ Media size: %2
<context>
<name>message-description sent:</name>
<message>
<location filename="../../src/Utils.h" line="+100"/>
<location filename="../../src/Utils.h" line="+103"/>
<source>You sent an audio clip</source>
<translation></translation>
</message>

@ -4,7 +4,7 @@
<context>
<name>Cache</name>
<message>
<location filename="../../src/Cache.cpp" line="+1341"/>
<location filename="../../src/Cache.cpp" line="+1342"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
@ -12,23 +12,23 @@
<context>
<name>ChatPage</name>
<message>
<location filename="../../src/ChatPage.cpp" line="+226"/>
<location filename="../../src/ChatPage.cpp" line="+227"/>
<source>Failed to invite user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<location line="+892"/>
<location line="+923"/>
<source>Invited user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-463"/>
<location line="-471"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<location line="+436"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
@ -68,7 +68,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="-817"/>
<location line="-825"/>
<source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation>
</message>
@ -98,7 +98,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="+148"/>
<location line="+156"/>
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
<translation type="unfinished"></translation>
</message>
@ -151,6 +151,12 @@
<source>Low priority rooms</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Server Notices</source>
<comment>Tag translation for m.server_notice</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+2"/>
@ -166,7 +172,7 @@
<context>
<name>EditModal</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+60"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+72"/>
<source>Apply</source>
<translation type="unfinished"></translation>
</message>
@ -186,6 +192,55 @@
<translation>Onderwerp</translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+117"/>
<location line="+139"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-42"/>
<source>People</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Nature</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Food</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Activity</source>
<translation type="unfinished">Activiteit</translation>
</message>
<message>
<location line="+2"/>
<source>Travel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Objects</source>
<translation type="unfinished">Objecten</translation>
</message>
<message>
<location line="+2"/>
<source>Symbols</source>
<translation type="unfinished">Symbolen</translation>
</message>
<message>
<location line="+2"/>
<source>Flags</source>
<translation type="unfinished">Vlaggen</translation>
</message>
</context>
<context>
<name>EncryptionIndicator</name>
<message>
@ -202,7 +257,7 @@
<context>
<name>InviteeItem</name>
<message>
<location filename="../../src/InviteeItem.cpp" line="+17"/>
<location filename="../../src/InviteeItem.cpp" line="+18"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
@ -210,7 +265,7 @@
<context>
<name>LoginPage</name>
<message>
<location filename="../../src/LoginPage.cpp" line="+89"/>
<location filename="../../src/LoginPage.cpp" line="+90"/>
<source>Matrix ID</source>
<translation>Matrix-id</translation>
</message>
@ -239,7 +294,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
</message>
<message>
<location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -250,7 +305,7 @@ Example: https://server.my:8787</source>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<location line="+191"/>
<source>LOGIN</source>
<translation>INLOGGEN</translation>
</message>
@ -365,7 +420,7 @@ Example: https://server.my:8787</source>
<context>
<name>RegisterPage</name>
<message>
<location filename="../../src/RegisterPage.cpp" line="+87"/>
<location filename="../../src/RegisterPage.cpp" line="+88"/>
<source>Username</source>
<translation>Gebruikersnaam</translation>
</message>
@ -433,7 +488,7 @@ Example: https://server.my:8787</source>
<context>
<name>RoomInfo</name>
<message>
<location filename="../../src/Cache.cpp" line="+939"/>
<location filename="../../src/Cache.cpp" line="+940"/>
<source>no version stored</source>
<translation type="unfinished"></translation>
</message>
@ -451,7 +506,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<location line="+18"/>
<source>Favourite</source>
<comment>Standard matrix tag for favourites</comment>
<translation type="unfinished"></translation>
@ -469,7 +524,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+12"/>
<source>Adds or removes the specified tag.</source>
<comment>WhatsThis hint for tag menu actions</comment>
<translation type="unfinished"></translation>
@ -481,14 +536,15 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+4"/>
<source>New Tag</source>
<comment>Tag name prompt title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<location line="+1"/>
<source>Tag:</source>
<comment>Tag name prompt</comment>
<translation type="unfinished"></translation>
</message>
<message>
@ -505,7 +561,7 @@ Example: https://server.my:8787</source>
<context>
<name>SideBarActions</name>
<message>
<location filename="../../src/SideBarActions.cpp" line="+38"/>
<location filename="../../src/SideBarActions.cpp" line="+40"/>
<source>User settings</source>
<translation type="unfinished"></translation>
</message>
@ -556,7 +612,7 @@ Example: https://server.my:8787</source>
<context>
<name>TextInputWidget</name>
<message>
<location filename="../../src/TextInputWidget.cpp" line="+459"/>
<location filename="../../src/TextInputWidget.cpp" line="+460"/>
<source>Send a file</source>
<translation type="unfinished"></translation>
</message>
@ -577,7 +633,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+84"/>
<location line="+86"/>
<source>Select a file</source>
<translation>Kies een bestand</translation>
</message>
@ -595,7 +651,7 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineModel</name>
<message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<location filename="../../src/timeline/TimelineModel.cpp" line="+891"/>
<source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished"></translation>
@ -618,7 +674,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+455"/>
<location line="+488"/>
<source>Save image</source>
<translation type="unfinished">Afbeelding opslaan</translation>
</message>
@ -638,7 +694,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-610"/>
<location line="-643"/>
<source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation type="unfinished"></translation>
@ -650,7 +706,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+660"/>
<location line="+693"/>
<source>%1 and %2 are typing.</source>
<comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
<translation type="unfinished">
@ -723,6 +779,11 @@ Example: https://server.my:8787</source>
<source>%1 changed their avatar.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>%1 changed some profile info.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>%1 joined.</source>
@ -764,12 +825,12 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-1238"/>
<location line="-1281"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1240"/>
<location line="+1283"/>
<source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation>
</message>
@ -793,7 +854,12 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineRow</name>
<message>
<location filename="../qml/TimelineRow.qml" line="+92"/>
<location filename="../qml/TimelineRow.qml" line="+91"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -807,6 +873,11 @@ Example: https://server.my:8787</source>
<name>TimelineView</name>
<message>
<location filename="../qml/TimelineView.qml" line="+54"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -846,7 +917,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+257"/>
<location line="+259"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
@ -900,7 +971,7 @@ Example: https://server.my:8787</source>
<context>
<name>UserInfoWidget</name>
<message>
<location filename="../../src/UserInfoWidget.cpp" line="+88"/>
<location filename="../../src/UserInfoWidget.cpp" line="+91"/>
<source>Logout</source>
<translation type="unfinished"></translation>
</message>
@ -908,70 +979,173 @@ Example: https://server.my:8787</source>
<context>
<name>UserSettingsPage</name>
<message>
<location filename="../../src/UserSettingsPage.cpp" line="+339"/>
<location filename="../../src/UserSettingsPage.cpp" line="+520"/>
<source>Minimize to tray</source>
<translation>Minimaliseren naar systeemvak</translation>
</message>
<message>
<location line="+1"/>
<location line="+3"/>
<source>Start in tray</source>
<translation>Geminimaliseerd opstarten</translation>
</message>
<message>
<location line="+3"/>
<location line="+7"/>
<source>Group&apos;s sidebar</source>
<translation>Zijbalk van groep</translation>
</message>
<message>
<location line="-1"/>
<location line="-3"/>
<source>Circular Avatars</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt messages in sidebar</source>
<location line="-5"/>
<source>Keep the application running in the background after closing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Start the application in the background without showing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Change the appearance of user avatars in chats.
OFF - square, ON - Circle.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Show a column containing groups and tags next to the room list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Decrypt messages in sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt the messages shown in the sidebar.
Only affects messages in encrypted chats.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show buttons in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show buttons to quickly reply, react or access additional options next to each message.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Limit width of timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Typing notifications</source>
<translation>Meldingen bij typen van berichten</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show who is typing in a room.
This will also enable or disable sending typing notifications to others.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Sort rooms by unreads</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Display rooms with new messages first.
If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Read receipts</source>
<translation>Leesbevestigingen</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show if your message was read.
Status is displayed next to timestamps.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Send messages as Markdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Allow using markdown in messages.
When disabled, all messages are sent as a plain text.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Desktop notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Notify about received message when the client is not currently focused.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Alert on notification</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show an alert when a message is received.
This usually causes the application icon in the task bar to animate in some fashion.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Highlight message on hover</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the background color of messages when you hover over them.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Large Emoji in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Make font size larger if messages with only a few emojis are displayed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Scale factor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the scale factor of the whole user interface.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Font size</source>
@ -998,7 +1172,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-60"/>
<location line="-113"/>
<source>Session Keys</source>
<translation type="unfinished"></translation>
</message>
@ -1018,22 +1192,22 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-64"/>
<location line="-71"/>
<source>GENERAL</source>
<translation>ALGEMEEN</translation>
</message>
<message>
<location line="+26"/>
<location line="+29"/>
<source>INTERFACE</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+109"/>
<location line="+166"/>
<source>Emoji Font Family</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+163"/>
<location line="+179"/>
<source>Open Sessions File</source>
<translation type="unfinished"></translation>
</message>
@ -1105,7 +1279,7 @@ Example: https://server.my:8787</source>
<context>
<name>descriptiveTime</name>
<message>
<location filename="../../src/Utils.cpp" line="+141"/>
<location filename="../../src/Utils.cpp" line="+147"/>
<source>Yesterday</source>
<translation type="unfinished"></translation>
</message>
@ -1179,7 +1353,7 @@ Example: https://server.my:8787</source>
<context>
<name>dialogs::InviteUsers</name>
<message>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+41"/>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+42"/>
<source>Cancel</source>
<translation type="unfinished">Annuleren</translation>
</message>
@ -1276,7 +1450,7 @@ Mediagrootte: %2
<context>
<name>dialogs::ReadReceipts</name>
<message>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+120"/>
<source>Read receipts</source>
<translation>Leesbevestigingen</translation>
</message>
@ -1289,12 +1463,12 @@ Mediagrootte: %2
<context>
<name>dialogs::ReceiptItem</name>
<message>
<location line="-44"/>
<location line="-46"/>
<source>Today %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+3"/>
<source>Yesterday %1</source>
<translation type="unfinished"></translation>
</message>
@ -1302,7 +1476,7 @@ Mediagrootte: %2
<context>
<name>dialogs::RoomSettings</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+113"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+135"/>
<source>Settings</source>
<translation type="unfinished">Instellingen</translation>
</message>
@ -1502,7 +1676,7 @@ Mediagrootte: %2
<context>
<name>message-description sent:</name>
<message>
<location filename="../../src/Utils.h" line="+100"/>
<location filename="../../src/Utils.h" line="+103"/>
<source>You sent an audio clip</source>
<translation type="unfinished"></translation>
</message>

@ -4,7 +4,7 @@
<context>
<name>Cache</name>
<message>
<location filename="../../src/Cache.cpp" line="+1341"/>
<location filename="../../src/Cache.cpp" line="+1342"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
@ -12,23 +12,23 @@
<context>
<name>ChatPage</name>
<message>
<location filename="../../src/ChatPage.cpp" line="+226"/>
<location filename="../../src/ChatPage.cpp" line="+227"/>
<source>Failed to invite user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<location line="+892"/>
<location line="+923"/>
<source>Invited user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-463"/>
<location line="-471"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<location line="+436"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
@ -68,7 +68,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="-817"/>
<location line="-825"/>
<source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation>
</message>
@ -98,7 +98,7 @@
<translation>Nie udało się przywrócić zapisanych danych. Spróbuj zalogować się ponownie.</translation>
</message>
<message>
<location line="+148"/>
<location line="+156"/>
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
<translation type="unfinished"></translation>
</message>
@ -151,6 +151,12 @@
<source>Low priority rooms</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Server Notices</source>
<comment>Tag translation for m.server_notice</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+2"/>
@ -166,7 +172,7 @@
<context>
<name>EditModal</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+60"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+72"/>
<source>Apply</source>
<translation type="unfinished"></translation>
</message>
@ -186,6 +192,55 @@
<translation>Temat</translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+117"/>
<location line="+139"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-42"/>
<source>People</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Nature</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Food</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Activity</source>
<translation type="unfinished">Aktywność</translation>
</message>
<message>
<location line="+2"/>
<source>Travel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Objects</source>
<translation type="unfinished">Przedmioty</translation>
</message>
<message>
<location line="+2"/>
<source>Symbols</source>
<translation type="unfinished">Symbole</translation>
</message>
<message>
<location line="+2"/>
<source>Flags</source>
<translation type="unfinished">Flagi</translation>
</message>
</context>
<context>
<name>EncryptionIndicator</name>
<message>
@ -202,7 +257,7 @@
<context>
<name>InviteeItem</name>
<message>
<location filename="../../src/InviteeItem.cpp" line="+17"/>
<location filename="../../src/InviteeItem.cpp" line="+18"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
@ -210,7 +265,7 @@
<context>
<name>LoginPage</name>
<message>
<location filename="../../src/LoginPage.cpp" line="+89"/>
<location filename="../../src/LoginPage.cpp" line="+90"/>
<source>Matrix ID</source>
<translation>ID Matrixa</translation>
</message>
@ -239,7 +294,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
</message>
<message>
<location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -250,7 +305,7 @@ Example: https://server.my:8787</source>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<location line="+191"/>
<source>LOGIN</source>
<translation>ZALOGUJ</translation>
</message>
@ -365,7 +420,7 @@ Example: https://server.my:8787</source>
<context>
<name>RegisterPage</name>
<message>
<location filename="../../src/RegisterPage.cpp" line="+87"/>
<location filename="../../src/RegisterPage.cpp" line="+88"/>
<source>Username</source>
<translation>Nazwa użytkownika</translation>
</message>
@ -433,7 +488,7 @@ Example: https://server.my:8787</source>
<context>
<name>RoomInfo</name>
<message>
<location filename="../../src/Cache.cpp" line="+939"/>
<location filename="../../src/Cache.cpp" line="+940"/>
<source>no version stored</source>
<translation type="unfinished"></translation>
</message>
@ -451,7 +506,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<location line="+18"/>
<source>Favourite</source>
<comment>Standard matrix tag for favourites</comment>
<translation type="unfinished"></translation>
@ -469,7 +524,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+12"/>
<source>Adds or removes the specified tag.</source>
<comment>WhatsThis hint for tag menu actions</comment>
<translation type="unfinished"></translation>
@ -481,14 +536,15 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+4"/>
<source>New Tag</source>
<comment>Tag name prompt title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<location line="+1"/>
<source>Tag:</source>
<comment>Tag name prompt</comment>
<translation type="unfinished"></translation>
</message>
<message>
@ -505,7 +561,7 @@ Example: https://server.my:8787</source>
<context>
<name>SideBarActions</name>
<message>
<location filename="../../src/SideBarActions.cpp" line="+38"/>
<location filename="../../src/SideBarActions.cpp" line="+40"/>
<source>User settings</source>
<translation>Ustawienia użytkownika</translation>
</message>
@ -556,7 +612,7 @@ Example: https://server.my:8787</source>
<context>
<name>TextInputWidget</name>
<message>
<location filename="../../src/TextInputWidget.cpp" line="+459"/>
<location filename="../../src/TextInputWidget.cpp" line="+460"/>
<source>Send a file</source>
<translation>Wyślij plik</translation>
</message>
@ -577,7 +633,7 @@ Example: https://server.my:8787</source>
<translation>Emoji</translation>
</message>
<message>
<location line="+84"/>
<location line="+86"/>
<source>Select a file</source>
<translation>Wybierz plik</translation>
</message>
@ -595,7 +651,7 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineModel</name>
<message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<location filename="../../src/timeline/TimelineModel.cpp" line="+891"/>
<source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished"></translation>
@ -618,7 +674,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished">Redagowanie wiadomości nie powiodło się: %1</translation>
</message>
<message>
<location line="+455"/>
<location line="+488"/>
<source>Save image</source>
<translation type="unfinished">Zapisz obraz</translation>
</message>
@ -638,7 +694,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-610"/>
<location line="-643"/>
<source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation type="unfinished"></translation>
@ -650,7 +706,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+660"/>
<location line="+693"/>
<source>%1 and %2 are typing.</source>
<comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
<translation type="unfinished">
@ -724,6 +780,11 @@ Example: https://server.my:8787</source>
<source>%1 changed their avatar.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>%1 changed some profile info.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>%1 joined.</source>
@ -765,12 +826,12 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-1238"/>
<location line="-1281"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1240"/>
<location line="+1283"/>
<source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation>
</message>
@ -794,7 +855,12 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineRow</name>
<message>
<location filename="../qml/TimelineRow.qml" line="+92"/>
<location filename="../qml/TimelineRow.qml" line="+91"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -808,6 +874,11 @@ Example: https://server.my:8787</source>
<name>TimelineView</name>
<message>
<location filename="../qml/TimelineView.qml" line="+54"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -847,7 +918,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+257"/>
<location line="+259"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
@ -901,7 +972,7 @@ Example: https://server.my:8787</source>
<context>
<name>UserInfoWidget</name>
<message>
<location filename="../../src/UserInfoWidget.cpp" line="+88"/>
<location filename="../../src/UserInfoWidget.cpp" line="+91"/>
<source>Logout</source>
<translation>Wyloguj</translation>
</message>
@ -909,70 +980,173 @@ Example: https://server.my:8787</source>
<context>
<name>UserSettingsPage</name>
<message>
<location filename="../../src/UserSettingsPage.cpp" line="+339"/>
<location filename="../../src/UserSettingsPage.cpp" line="+520"/>
<source>Minimize to tray</source>
<translation>Zminimalizuj do paska zadań</translation>
</message>
<message>
<location line="+1"/>
<location line="+3"/>
<source>Start in tray</source>
<translation>Rozpocznij na pasku zadań</translation>
</message>
<message>
<location line="+3"/>
<location line="+7"/>
<source>Group&apos;s sidebar</source>
<translation>Pasek boczny grupy</translation>
</message>
<message>
<location line="-1"/>
<location line="-3"/>
<source>Circular Avatars</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt messages in sidebar</source>
<location line="-5"/>
<source>Keep the application running in the background after closing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Start the application in the background without showing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Change the appearance of user avatars in chats.
OFF - square, ON - Circle.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Show a column containing groups and tags next to the room list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Decrypt messages in sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt the messages shown in the sidebar.
Only affects messages in encrypted chats.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show buttons in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show buttons to quickly reply, react or access additional options next to each message.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Limit width of timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Typing notifications</source>
<translation>Powiadomienia o pisaniu</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show who is typing in a room.
This will also enable or disable sending typing notifications to others.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Sort rooms by unreads</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Display rooms with new messages first.
If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Read receipts</source>
<translation>Potwierdzenia przeczytania</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show if your message was read.
Status is displayed next to timestamps.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Send messages as Markdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Allow using markdown in messages.
When disabled, all messages are sent as a plain text.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Desktop notifications</source>
<translation>Powiadomienia na pulpicie</translation>
</message>
<message>
<location line="+2"/>
<source>Notify about received message when the client is not currently focused.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Alert on notification</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show an alert when a message is received.
This usually causes the application icon in the task bar to animate in some fashion.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Highlight message on hover</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the background color of messages when you hover over them.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Large Emoji in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Make font size larger if messages with only a few emojis are displayed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Scale factor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the scale factor of the whole user interface.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Font size</source>
@ -999,7 +1173,7 @@ Example: https://server.my:8787</source>
<translation>Odcisk palca urządzenia</translation>
</message>
<message>
<location line="-60"/>
<location line="-113"/>
<source>Session Keys</source>
<translation type="unfinished"></translation>
</message>
@ -1019,22 +1193,22 @@ Example: https://server.my:8787</source>
<translation>SZYFROWANIE</translation>
</message>
<message>
<location line="-64"/>
<location line="-71"/>
<source>GENERAL</source>
<translation>OGÓLNE</translation>
</message>
<message>
<location line="+26"/>
<location line="+29"/>
<source>INTERFACE</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+109"/>
<location line="+166"/>
<source>Emoji Font Family</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+163"/>
<location line="+179"/>
<source>Open Sessions File</source>
<translation type="unfinished"></translation>
</message>
@ -1106,7 +1280,7 @@ Example: https://server.my:8787</source>
<context>
<name>descriptiveTime</name>
<message>
<location filename="../../src/Utils.cpp" line="+141"/>
<location filename="../../src/Utils.cpp" line="+147"/>
<source>Yesterday</source>
<translation type="unfinished"></translation>
</message>
@ -1180,7 +1354,7 @@ Example: https://server.my:8787</source>
<context>
<name>dialogs::InviteUsers</name>
<message>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+41"/>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+42"/>
<source>Cancel</source>
<translation type="unfinished">Anuluj</translation>
</message>
@ -1277,7 +1451,7 @@ Rozmiar multimediów: %2
<context>
<name>dialogs::ReadReceipts</name>
<message>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+120"/>
<source>Read receipts</source>
<translation>Potwierdzenia przeczytania</translation>
</message>
@ -1290,12 +1464,12 @@ Rozmiar multimediów: %2
<context>
<name>dialogs::ReceiptItem</name>
<message>
<location line="-44"/>
<location line="-46"/>
<source>Today %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+3"/>
<source>Yesterday %1</source>
<translation type="unfinished"></translation>
</message>
@ -1303,7 +1477,7 @@ Rozmiar multimediów: %2
<context>
<name>dialogs::RoomSettings</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+113"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+135"/>
<source>Settings</source>
<translation>Ustawienia</translation>
</message>
@ -1506,7 +1680,7 @@ Rozmiar multimediów: %2
<context>
<name>message-description sent:</name>
<message>
<location filename="../../src/Utils.h" line="+100"/>
<location filename="../../src/Utils.h" line="+103"/>
<source>You sent an audio clip</source>
<translation type="unfinished"></translation>
</message>

@ -4,7 +4,7 @@
<context>
<name>Cache</name>
<message>
<location filename="../../src/Cache.cpp" line="+1341"/>
<location filename="../../src/Cache.cpp" line="+1342"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
@ -12,23 +12,23 @@
<context>
<name>ChatPage</name>
<message>
<location filename="../../src/ChatPage.cpp" line="+226"/>
<location filename="../../src/ChatPage.cpp" line="+227"/>
<source>Failed to invite user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<location line="+892"/>
<location line="+923"/>
<source>Invited user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-463"/>
<location line="-471"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<location line="+436"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
@ -68,7 +68,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="-817"/>
<location line="-825"/>
<source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation>
</message>
@ -98,7 +98,7 @@
<translation>Не удалось восстановить сохраненные данные. Пожалуйста, войдите снова.</translation>
</message>
<message>
<location line="+148"/>
<location line="+156"/>
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
<translation>Не удалось настроить ключи шифрования. Ответ сервера:%1 %2. Пожалуйста, попробуйте позже.</translation>
</message>
@ -151,6 +151,12 @@
<source>Low priority rooms</source>
<translation>Комнаты с низким приоритетом</translation>
</message>
<message>
<location line="+2"/>
<source>Server Notices</source>
<comment>Tag translation for m.server_notice</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+2"/>
@ -166,7 +172,7 @@
<context>
<name>EditModal</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+60"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+72"/>
<source>Apply</source>
<translation>Применить</translation>
</message>
@ -186,6 +192,55 @@
<translation>Тема</translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+117"/>
<location line="+139"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-42"/>
<source>People</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Nature</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Food</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Activity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Travel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Objects</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Symbols</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Flags</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EncryptionIndicator</name>
<message>
@ -202,7 +257,7 @@
<context>
<name>InviteeItem</name>
<message>
<location filename="../../src/InviteeItem.cpp" line="+17"/>
<location filename="../../src/InviteeItem.cpp" line="+18"/>
<source>Remove</source>
<translation>Удалить</translation>
</message>
@ -210,7 +265,7 @@
<context>
<name>LoginPage</name>
<message>
<location filename="../../src/LoginPage.cpp" line="+89"/>
<location filename="../../src/LoginPage.cpp" line="+90"/>
<source>Matrix ID</source>
<translation>Идентификатор Matrix</translation>
</message>
@ -239,7 +294,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
</message>
<message>
<location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -250,7 +305,7 @@ Example: https://server.my:8787</source>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<location line="+191"/>
<source>LOGIN</source>
<translation>ВОЙТИ</translation>
</message>
@ -365,7 +420,7 @@ Example: https://server.my:8787</source>
<context>
<name>RegisterPage</name>
<message>
<location filename="../../src/RegisterPage.cpp" line="+87"/>
<location filename="../../src/RegisterPage.cpp" line="+88"/>
<source>Username</source>
<translation>Имя пользователя</translation>
</message>
@ -433,7 +488,7 @@ Example: https://server.my:8787</source>
<context>
<name>RoomInfo</name>
<message>
<location filename="../../src/Cache.cpp" line="+939"/>
<location filename="../../src/Cache.cpp" line="+940"/>
<source>no version stored</source>
<translation type="unfinished"></translation>
</message>
@ -451,7 +506,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<location line="+18"/>
<source>Favourite</source>
<comment>Standard matrix tag for favourites</comment>
<translation type="unfinished"></translation>
@ -469,7 +524,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+12"/>
<source>Adds or removes the specified tag.</source>
<comment>WhatsThis hint for tag menu actions</comment>
<translation type="unfinished"></translation>
@ -481,14 +536,15 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+4"/>
<source>New Tag</source>
<comment>Tag name prompt title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<location line="+1"/>
<source>Tag:</source>
<comment>Tag name prompt</comment>
<translation type="unfinished"></translation>
</message>
<message>
@ -505,7 +561,7 @@ Example: https://server.my:8787</source>
<context>
<name>SideBarActions</name>
<message>
<location filename="../../src/SideBarActions.cpp" line="+38"/>
<location filename="../../src/SideBarActions.cpp" line="+40"/>
<source>User settings</source>
<translation>Пользовательские настройки</translation>
</message>
@ -556,7 +612,7 @@ Example: https://server.my:8787</source>
<context>
<name>TextInputWidget</name>
<message>
<location filename="../../src/TextInputWidget.cpp" line="+459"/>
<location filename="../../src/TextInputWidget.cpp" line="+460"/>
<source>Send a file</source>
<translation>Отправить файл</translation>
</message>
@ -577,7 +633,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+84"/>
<location line="+86"/>
<source>Select a file</source>
<translation>Выберите файл</translation>
</message>
@ -595,7 +651,7 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineModel</name>
<message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<location filename="../../src/timeline/TimelineModel.cpp" line="+891"/>
<source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished"></translation>
@ -618,7 +674,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished">Ошибка редактирования сообщения: %1</translation>
</message>
<message>
<location line="+455"/>
<location line="+488"/>
<source>Save image</source>
<translation type="unfinished">Сохранить изображение</translation>
</message>
@ -638,7 +694,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-610"/>
<location line="-643"/>
<source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation type="unfinished"></translation>
@ -650,7 +706,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+660"/>
<location line="+693"/>
<source>%1 and %2 are typing.</source>
<comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
<translation type="unfinished">
@ -724,6 +780,11 @@ Example: https://server.my:8787</source>
<source>%1 changed their avatar.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>%1 changed some profile info.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>%1 joined.</source>
@ -765,12 +826,12 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-1238"/>
<location line="-1281"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1240"/>
<location line="+1283"/>
<source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation>
</message>
@ -794,7 +855,12 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineRow</name>
<message>
<location filename="../qml/TimelineRow.qml" line="+92"/>
<location filename="../qml/TimelineRow.qml" line="+91"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -808,6 +874,11 @@ Example: https://server.my:8787</source>
<name>TimelineView</name>
<message>
<location filename="../qml/TimelineView.qml" line="+54"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -847,7 +918,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+257"/>
<location line="+259"/>
<source>Close</source>
<translation type="unfinished">Закрыть</translation>
</message>
@ -901,7 +972,7 @@ Example: https://server.my:8787</source>
<context>
<name>UserInfoWidget</name>
<message>
<location filename="../../src/UserInfoWidget.cpp" line="+88"/>
<location filename="../../src/UserInfoWidget.cpp" line="+91"/>
<source>Logout</source>
<translation>Выйти</translation>
</message>
@ -909,70 +980,173 @@ Example: https://server.my:8787</source>
<context>
<name>UserSettingsPage</name>
<message>
<location filename="../../src/UserSettingsPage.cpp" line="+339"/>
<location filename="../../src/UserSettingsPage.cpp" line="+520"/>
<source>Minimize to tray</source>
<translation>Сворачивать в системную панель</translation>
</message>
<message>
<location line="+1"/>
<location line="+3"/>
<source>Start in tray</source>
<translation>Запускать в системной панели</translation>
</message>
<message>
<location line="+3"/>
<location line="+7"/>
<source>Group&apos;s sidebar</source>
<translation>Боковая панель групп</translation>
</message>
<message>
<location line="-1"/>
<location line="-3"/>
<source>Circular Avatars</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt messages in sidebar</source>
<location line="-5"/>
<source>Keep the application running in the background after closing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Start the application in the background without showing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Change the appearance of user avatars in chats.
OFF - square, ON - Circle.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Show a column containing groups and tags next to the room list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Decrypt messages in sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt the messages shown in the sidebar.
Only affects messages in encrypted chats.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show buttons in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show buttons to quickly reply, react or access additional options next to each message.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Limit width of timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Typing notifications</source>
<translation>Сообщать о наборе сообщения</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show who is typing in a room.
This will also enable or disable sending typing notifications to others.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Sort rooms by unreads</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Display rooms with new messages first.
If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Read receipts</source>
<translation>Подтверждать прочтение</translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show if your message was read.
Status is displayed next to timestamps.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Send messages as Markdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Allow using markdown in messages.
When disabled, all messages are sent as a plain text.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Desktop notifications</source>
<translation>Уведомления на рабочем столе</translation>
</message>
<message>
<location line="+2"/>
<source>Notify about received message when the client is not currently focused.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Alert on notification</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show an alert when a message is received.
This usually causes the application icon in the task bar to animate in some fashion.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Highlight message on hover</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the background color of messages when you hover over them.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Large Emoji in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Make font size larger if messages with only a few emojis are displayed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Scale factor</source>
<translation>Масштаб</translation>
</message>
<message>
<location line="+2"/>
<source>Change the scale factor of the whole user interface.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Font size</source>
@ -999,7 +1173,7 @@ Example: https://server.my:8787</source>
<translation>Отпечаток устройства</translation>
</message>
<message>
<location line="-60"/>
<location line="-113"/>
<source>Session Keys</source>
<translation>Ключи сеанса</translation>
</message>
@ -1019,22 +1193,22 @@ Example: https://server.my:8787</source>
<translation>ШИФРОВАНИЕ</translation>
</message>
<message>
<location line="-64"/>
<location line="-71"/>
<source>GENERAL</source>
<translation>ГЛАВНОЕ</translation>
</message>
<message>
<location line="+26"/>
<location line="+29"/>
<source>INTERFACE</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+109"/>
<location line="+166"/>
<source>Emoji Font Family</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+163"/>
<location line="+179"/>
<source>Open Sessions File</source>
<translation>Открыть файл сеансов</translation>
</message>
@ -1107,7 +1281,7 @@ Example: https://server.my:8787</source>
<context>
<name>descriptiveTime</name>
<message>
<location filename="../../src/Utils.cpp" line="+141"/>
<location filename="../../src/Utils.cpp" line="+147"/>
<source>Yesterday</source>
<translation type="unfinished"></translation>
</message>
@ -1181,7 +1355,7 @@ Example: https://server.my:8787</source>
<context>
<name>dialogs::InviteUsers</name>
<message>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+41"/>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+42"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
@ -1278,7 +1452,7 @@ Media size: %2
<context>
<name>dialogs::ReadReceipts</name>
<message>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+120"/>
<source>Read receipts</source>
<translation>Подтверждать прочтение</translation>
</message>
@ -1291,12 +1465,12 @@ Media size: %2
<context>
<name>dialogs::ReceiptItem</name>
<message>
<location line="-44"/>
<location line="-46"/>
<source>Today %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+3"/>
<source>Yesterday %1</source>
<translation type="unfinished"></translation>
</message>
@ -1304,7 +1478,7 @@ Media size: %2
<context>
<name>dialogs::RoomSettings</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+113"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+135"/>
<source>Settings</source>
<translation>Настройки</translation>
</message>
@ -1505,7 +1679,7 @@ Media size: %2
<context>
<name>message-description sent:</name>
<message>
<location filename="../../src/Utils.h" line="+100"/>
<location filename="../../src/Utils.h" line="+103"/>
<source>You sent an audio clip</source>
<translation type="unfinished"></translation>
</message>

@ -4,7 +4,7 @@
<context>
<name>Cache</name>
<message>
<location filename="../../src/Cache.cpp" line="+1341"/>
<location filename="../../src/Cache.cpp" line="+1342"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
@ -12,23 +12,23 @@
<context>
<name>ChatPage</name>
<message>
<location filename="../../src/ChatPage.cpp" line="+226"/>
<location filename="../../src/ChatPage.cpp" line="+227"/>
<source>Failed to invite user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<location line="+892"/>
<location line="+923"/>
<source>Invited user: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-463"/>
<location line="-471"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<location line="+436"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
@ -68,7 +68,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location line="-817"/>
<location line="-825"/>
<source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation>
</message>
@ -98,7 +98,7 @@
<translation></translation>
</message>
<message>
<location line="+148"/>
<location line="+156"/>
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
<translation type="unfinished"></translation>
</message>
@ -151,6 +151,12 @@
<source>Low priority rooms</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Server Notices</source>
<comment>Tag translation for m.server_notice</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+2"/>
@ -166,7 +172,7 @@
<context>
<name>EditModal</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+60"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+72"/>
<source>Apply</source>
<translation type="unfinished"></translation>
</message>
@ -186,6 +192,55 @@
<translation></translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+117"/>
<location line="+139"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-42"/>
<source>People</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Nature</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Food</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Activity</source>
<translation type="unfinished">Activity</translation>
</message>
<message>
<location line="+2"/>
<source>Travel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Objects</source>
<translation type="unfinished">Objects</translation>
</message>
<message>
<location line="+2"/>
<source>Symbols</source>
<translation type="unfinished">Symbols</translation>
</message>
<message>
<location line="+2"/>
<source>Flags</source>
<translation type="unfinished">Flags</translation>
</message>
</context>
<context>
<name>EncryptionIndicator</name>
<message>
@ -202,7 +257,7 @@
<context>
<name>InviteeItem</name>
<message>
<location filename="../../src/InviteeItem.cpp" line="+17"/>
<location filename="../../src/InviteeItem.cpp" line="+18"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
@ -210,7 +265,7 @@
<context>
<name>LoginPage</name>
<message>
<location filename="../../src/LoginPage.cpp" line="+89"/>
<location filename="../../src/LoginPage.cpp" line="+90"/>
<source>Matrix ID</source>
<translation></translation>
</message>
@ -239,7 +294,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
</message>
<message>
<location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -250,7 +305,7 @@ Example: https://server.my:8787</source>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<location line="+191"/>
<source>LOGIN</source>
<translation></translation>
</message>
@ -365,7 +420,7 @@ Example: https://server.my:8787</source>
<context>
<name>RegisterPage</name>
<message>
<location filename="../../src/RegisterPage.cpp" line="+87"/>
<location filename="../../src/RegisterPage.cpp" line="+88"/>
<source>Username</source>
<translation></translation>
</message>
@ -433,7 +488,7 @@ Example: https://server.my:8787</source>
<context>
<name>RoomInfo</name>
<message>
<location filename="../../src/Cache.cpp" line="+939"/>
<location filename="../../src/Cache.cpp" line="+940"/>
<source>no version stored</source>
<translation type="unfinished"></translation>
</message>
@ -451,7 +506,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<location line="+18"/>
<source>Favourite</source>
<comment>Standard matrix tag for favourites</comment>
<translation type="unfinished"></translation>
@ -469,7 +524,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+13"/>
<location line="+12"/>
<source>Adds or removes the specified tag.</source>
<comment>WhatsThis hint for tag menu actions</comment>
<translation type="unfinished"></translation>
@ -481,14 +536,15 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<location line="+4"/>
<source>New Tag</source>
<comment>Tag name prompt title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+0"/>
<location line="+1"/>
<source>Tag:</source>
<comment>Tag name prompt</comment>
<translation type="unfinished"></translation>
</message>
<message>
@ -505,7 +561,7 @@ Example: https://server.my:8787</source>
<context>
<name>SideBarActions</name>
<message>
<location filename="../../src/SideBarActions.cpp" line="+38"/>
<location filename="../../src/SideBarActions.cpp" line="+40"/>
<source>User settings</source>
<translation></translation>
</message>
@ -556,7 +612,7 @@ Example: https://server.my:8787</source>
<context>
<name>TextInputWidget</name>
<message>
<location filename="../../src/TextInputWidget.cpp" line="+459"/>
<location filename="../../src/TextInputWidget.cpp" line="+460"/>
<source>Send a file</source>
<translation></translation>
</message>
@ -577,7 +633,7 @@ Example: https://server.my:8787</source>
<translation></translation>
</message>
<message>
<location line="+84"/>
<location line="+86"/>
<source>Select a file</source>
<translation></translation>
</message>
@ -595,7 +651,7 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineModel</name>
<message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<location filename="../../src/timeline/TimelineModel.cpp" line="+891"/>
<source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished"></translation>
@ -618,7 +674,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished">%1</translation>
</message>
<message>
<location line="+455"/>
<location line="+488"/>
<source>Save image</source>
<translation type="unfinished"></translation>
</message>
@ -638,7 +694,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-610"/>
<location line="-643"/>
<source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation type="unfinished"></translation>
@ -650,7 +706,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location line="+660"/>
<location line="+693"/>
<source>%1 and %2 are typing.</source>
<comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
<translation type="unfinished">
@ -722,6 +778,11 @@ Example: https://server.my:8787</source>
<source>%1 changed their avatar.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>%1 changed some profile info.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>%1 joined.</source>
@ -763,12 +824,12 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="-1238"/>
<location line="-1281"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1240"/>
<location line="+1283"/>
<source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation>
</message>
@ -792,7 +853,12 @@ Example: https://server.my:8787</source>
<context>
<name>TimelineRow</name>
<message>
<location filename="../qml/TimelineRow.qml" line="+92"/>
<location filename="../qml/TimelineRow.qml" line="+91"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -806,6 +872,11 @@ Example: https://server.my:8787</source>
<name>TimelineView</name>
<message>
<location filename="../qml/TimelineView.qml" line="+54"/>
<source>React</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Reply</source>
<translation type="unfinished"></translation>
</message>
@ -845,7 +916,7 @@ Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+257"/>
<location line="+259"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
@ -899,7 +970,7 @@ Example: https://server.my:8787</source>
<context>
<name>UserInfoWidget</name>
<message>
<location filename="../../src/UserInfoWidget.cpp" line="+88"/>
<location filename="../../src/UserInfoWidget.cpp" line="+91"/>
<source>Logout</source>
<translation></translation>
</message>
@ -907,70 +978,173 @@ Example: https://server.my:8787</source>
<context>
<name>UserSettingsPage</name>
<message>
<location filename="../../src/UserSettingsPage.cpp" line="+339"/>
<location filename="../../src/UserSettingsPage.cpp" line="+520"/>
<source>Minimize to tray</source>
<translation></translation>
</message>
<message>
<location line="+1"/>
<location line="+3"/>
<source>Start in tray</source>
<translation></translation>
</message>
<message>
<location line="+3"/>
<location line="+7"/>
<source>Group&apos;s sidebar</source>
<translation></translation>
</message>
<message>
<location line="-1"/>
<location line="-3"/>
<source>Circular Avatars</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt messages in sidebar</source>
<location line="-5"/>
<source>Keep the application running in the background after closing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Start the application in the background without showing the client window.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Change the appearance of user avatars in chats.
OFF - square, ON - Circle.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Show a column containing groups and tags next to the room list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Decrypt messages in sidebar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Decrypt the messages shown in the sidebar.
Only affects messages in encrypted chats.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show buttons in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show buttons to quickly reply, react or access additional options next to each message.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Limit width of timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Typing notifications</source>
<translation></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show who is typing in a room.
This will also enable or disable sending typing notifications to others.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+3"/>
<source>Sort rooms by unreads</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Display rooms with new messages first.
If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don&apos;t seem to consider them as important as the other rooms.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+7"/>
<source>Read receipts</source>
<translation></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Show if your message was read.
Status is displayed next to timestamps.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Send messages as Markdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<location line="+2"/>
<source>Allow using markdown in messages.
When disabled, all messages are sent as a plain text.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Desktop notifications</source>
<translation></translation>
</message>
<message>
<location line="+2"/>
<source>Notify about received message when the client is not currently focused.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Alert on notification</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Show an alert when a message is received.
This usually causes the application icon in the task bar to animate in some fashion.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Highlight message on hover</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the background color of messages when you hover over them.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1"/>
<source>Large Emoji in timeline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Make font size larger if messages with only a few emojis are displayed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+5"/>
<source>Scale factor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<source>Change the scale factor of the whole user interface.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Font size</source>
@ -997,7 +1171,7 @@ Example: https://server.my:8787</source>
<translation></translation>
</message>
<message>
<location line="-60"/>
<location line="-113"/>
<source>Session Keys</source>
<translation></translation>
</message>
@ -1017,22 +1191,22 @@ Example: https://server.my:8787</source>
<translation></translation>
</message>
<message>
<location line="-64"/>
<location line="-71"/>
<source>GENERAL</source>
<translation></translation>
</message>
<message>
<location line="+26"/>
<location line="+29"/>
<source>INTERFACE</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+109"/>
<location line="+166"/>
<source>Emoji Font Family</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+163"/>
<location line="+179"/>
<source>Open Sessions File</source>
<translation></translation>
</message>
@ -1104,7 +1278,7 @@ Example: https://server.my:8787</source>
<context>
<name>descriptiveTime</name>
<message>
<location filename="../../src/Utils.cpp" line="+141"/>
<location filename="../../src/Utils.cpp" line="+147"/>
<source>Yesterday</source>
<translation type="unfinished"></translation>
</message>
@ -1178,7 +1352,7 @@ Example: https://server.my:8787</source>
<context>
<name>dialogs::InviteUsers</name>
<message>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+41"/>
<location filename="../../src/dialogs/InviteUsers.cpp" line="+42"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
@ -1275,7 +1449,7 @@ Media size: %2
<context>
<name>dialogs::ReadReceipts</name>
<message>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+117"/>
<location filename="../../src/dialogs/ReadReceipts.cpp" line="+120"/>
<source>Read receipts</source>
<translation></translation>
</message>
@ -1288,12 +1462,12 @@ Media size: %2
<context>
<name>dialogs::ReceiptItem</name>
<message>
<location line="-44"/>
<location line="-46"/>
<source>Today %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+2"/>
<location line="+3"/>
<source>Yesterday %1</source>
<translation type="unfinished"></translation>
</message>
@ -1301,7 +1475,7 @@ Media size: %2
<context>
<name>dialogs::RoomSettings</name>
<message>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+113"/>
<location filename="../../src/dialogs/RoomSettings.cpp" line="+135"/>
<source>Settings</source>
<translation></translation>
</message>
@ -1510,7 +1684,7 @@ Media size: %2
<context>
<name>message-description sent:</name>
<message>
<location filename="../../src/Utils.h" line="+100"/>
<location filename="../../src/Utils.h" line="+103"/>
<source>You sent an audio clip</source>
<translation type="unfinished"></translation>
</message>

@ -3,7 +3,8 @@ import QtQuick.Controls 2.3
AbstractButton {
property string image: undefined
width: 16
height: 16
id: button
Image {

@ -1,7 +1,19 @@
import QtQuick 2.6
import QtQuick.Controls 2.2
// This class is for showing Reactions in the timeline row, not for
// adding new reactions via the emoji picker
Flow {
id: reactionFlow
// highlight colors for selfReactedEvent background
property real highlightHue: colors.highlight.hslHue
property real highlightSat: colors.highlight.hslSaturation
property real highlightLight: colors.highlight.hslLightness
property string eventId
property string roomId
anchors.left: parent.left
anchors.right: parent.right
spacing: 4
@ -11,9 +23,8 @@ Flow {
Repeater {
id: repeater
AbstractButton {
delegate: AbstractButton {
id: reaction
text: model.key
hoverEnabled: true
implicitWidth: contentItem.childrenRect.width + contentItem.leftPadding*2
implicitHeight: contentItem.childrenRect.height
@ -21,6 +32,11 @@ Flow {
ToolTip.visible: hovered
ToolTip.text: model.users
onClicked: {
console.debug("Picked " + model.key + "in response to " + reactionFlow.eventId + " in room " + reactionFlow.roomId + ". selfReactedEvent: " + model.selfReactedEvent)
timelineManager.reactToMessage(reactionFlow.roomId, reactionFlow.eventId, model.key, model.selfReactedEvent)
}
contentItem: Row {
anchors.centerIn: parent
@ -33,13 +49,13 @@ Flow {
font.family: settings.emojiFont
elide: Text.ElideRight
elideWidth: 150
text: reaction.text
text: model.key
}
Text {
anchors.baseline: reactionCounter.baseline
id: reactionText
text: textMetrics.elidedText + (textMetrics.elidedText == textMetrics.text ? "" : "…")
text: textMetrics.elidedText + (textMetrics.elidedText == model.key ? "" : "…")
font.family: settings.emojiFont
color: reaction.hovered ? colors.highlight : colors.text
maximumLineCount: 1
@ -49,7 +65,7 @@ Flow {
id: divider
height: Math.floor(reactionCounter.implicitHeight * 1.4)
width: 1
color: reaction.hovered ? colors.highlight : colors.text
color: (reaction.hovered || model.selfReactedEvent !== '') ? colors.highlight : colors.text
}
Text {
@ -63,10 +79,11 @@ Flow {
background: Rectangle {
anchors.centerIn: parent
implicitWidth: reaction.implicitWidth
height: reaction.implicitHeight
border.color: (reaction.hovered || model.selfReacted )? colors.highlight : colors.text
color: colors.base
implicitHeight: reaction.implicitHeight
border.color: (reaction.hovered || model.selfReactedEvent !== '') ? colors.highlight : colors.text
color: model.selfReactedEvent !== '' ? Qt.hsla(highlightHue, highlightSat, highlightLight, 0.20) : colors.base
border.width: 1
radius: reaction.height / 2.0
}

@ -71,7 +71,7 @@ MouseArea {
pixelDelta = wheel.pixelDelta.y
}
pixelDelta = Math.round(pixelDelta)
pixelDelta = Math.round(pixelDelta)
if (!pixelDelta) {
return flickableItem.contentY;

@ -6,6 +6,7 @@ import QtQuick.Window 2.2
import im.nheko 1.0
import "./delegates"
import "./emoji"
MouseArea {
anchors.left: parent.left
@ -58,7 +59,10 @@ MouseArea {
}
Reactions {
id: reactionRow
reactions: model.reactions
roomId: model.roomId
eventId: model.id
}
}
@ -76,7 +80,19 @@ MouseArea {
Layout.preferredHeight: 16
width: 16
}
EmojiButton {
visible: settings.buttonsInTimeline
Layout.alignment: Qt.AlignRight | Qt.AlignTop
Layout.preferredHeight: 16
width: 16
id: reactButton
hoverEnabled: true
ToolTip.visible: hovered
ToolTip.text: qsTr("React")
emojiPicker: emojiPopup
room_id: model.roomId
event_id: model.id
}
ImageButton {
visible: settings.buttonsInTimeline
Layout.alignment: Qt.AlignRight | Qt.AlignTop

@ -5,14 +5,19 @@ import QtGraphicalEffects 1.0
import QtQuick.Window 2.2
import im.nheko 1.0
import im.nheko.EmojiModel 1.0
import "./delegates"
import "./emoji"
Page {
property var colors: currentActivePalette
property var systemInactive: SystemPalette { colorGroup: SystemPalette.Disabled }
property var inactiveColors: currentInactivePalette ? currentInactivePalette : systemInactive
property int avatarSize: 40
property real highlightHue: colors.highlight.hslHue
property real highlightSat: colors.highlight.hslSaturation
property real highlightLight: colors.highlight.hslLightness
palette: colors
@ -20,6 +25,17 @@ Page {
id: fontMetrics
}
EmojiPicker {
id: emojiPopup
width: 7 * 52 + 20
height: 6 * 52
colors: palette
model: EmojiProxyModel {
category: EmojiCategory.People
sourceModel: EmojiModel {}
}
}
Menu {
id: messageContextMenu
modal: true
@ -34,7 +50,10 @@ Page {
property string eventId
property int eventType
property bool isEncrypted
MenuItem {
text: qsTr("React")
onClicked: chat.model.reactAction(messageContextMenu.eventId)
}
MenuItem {
text: qsTr("Reply")
onClicked: chat.model.replyAction(messageContextMenu.eventId)

@ -11,5 +11,4 @@ Label {
radius: parent.height / 2
color: colors.dark
}
}

@ -0,0 +1,18 @@
import QtQuick 2.10
import QtQuick.Controls 2.1
import im.nheko 1.0
import im.nheko.EmojiModel 1.0
import "../"
ImageButton {
property var colors: currentActivePalette
property var emojiPicker
property string room_id
property string event_id
image: ":/icons/icons/ui/smile.png"
id: emojiButton
onClicked: emojiPicker.visible ? emojiPicker.close() : emojiPicker.show(emojiButton, room_id, event_id)
}

@ -0,0 +1,290 @@
import QtQuick 2.9
import QtQuick.Controls 2.9
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.9
import im.nheko 1.0
import im.nheko.EmojiModel 1.0
import "../"
Popup {
function show(showAt, room_id, event_id) {
console.debug("Showing emojiPicker for " + event_id + "in room " + room_id)
parent = showAt
x = Math.round((showAt.width - width) / 2)
y = showAt.height
emojiPopup.room_id = room_id
emojiPopup.event_id = event_id
open()
}
property string room_id
property string event_id
property var colors
property alias model: gridView.model
property var textArea
property string emojiCategory: "people"
property real highlightHue: colors.highlight.hslHue
property real highlightSat: colors.highlight.hslSaturation
property real highlightLight: colors.highlight.hslLightness
id: emojiPopup
margins: 0
bottomPadding: 1
leftPadding: 1
rightPadding: 1
modal: true
focus: true
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside
ColumnLayout {
id: columnView
anchors.fill: parent
spacing: 0
Layout.bottomMargin: 0
Layout.leftMargin: 3
Layout.rightMargin: 3
Layout.topMargin: 2
// emoji grid
GridView {
id: gridView
Layout.preferredHeight: emojiPopup.height
Layout.fillWidth: true
Layout.fillHeight: true
Layout.leftMargin: 4
cellWidth: 52
cellHeight: 52
boundsBehavior: Flickable.StopAtBounds
clip: true
// Individual emoji
delegate: AbstractButton {
width: 48
height: 48
contentItem: Text {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
font.family: settings.emojiFont
font.pixelSize: 36
text: model.unicode
}
background: Rectangle {
anchors.fill: parent
color: hovered ? colors.highlight : 'transparent'
radius: 5
}
hoverEnabled: true
ToolTip.text: model.shortName
ToolTip.visible: hovered
// give the emoji a little oomf
DropShadow {
width: parent.width;
height: parent.height;
horizontalOffset: 3
verticalOffset: 3
radius: 8.0
samples: 17
color: "#80000000"
source: parent.contentItem
}
// TODO: maybe add favorites at some point?
onClicked: {
console.debug("Picked " + model.unicode + "in response to " + emojiPopup.event_id + " in room " + emojiPopup.room_id)
emojiPopup.close()
timelineManager.queueReactionMessage(emojiPopup.room_id, emojiPopup.event_id, model.unicode)
}
}
// Search field
header: TextField {
id: emojiSearch
anchors.left: parent.left
anchors.right: parent.right
anchors.rightMargin: emojiScroll.width + 4
placeholderText: qsTr("Search")
selectByMouse: true
rightPadding: clearSearch.width
Timer {
id: searchTimer
interval: 350 // tweak as needed?
onTriggered: {
emojiPopup.model.filter = emojiSearch.text
emojiPopup.model.category = EmojiCategory.Search
}
}
ToolButton {
id: clearSearch
anchors {
verticalCenter: parent.verticalCenter
right: parent.right
}
// clear the default hover effects.
background: Item {}
visible: emojiSearch.text !== ''
icon.source: "image://colorimage/:/icons/icons/ui/round-remove-button.png?" + (clearSearch.hovered ? colors.highlight : colors.buttonText)
focusPolicy: Qt.NoFocus
onClicked: emojiSearch.clear()
}
onTextChanged: searchTimer.restart()
onVisibleChanged: if (visible) forceActiveFocus()
}
ScrollBar.vertical: ScrollBar {
id: emojiScroll
}
}
// Separator
Rectangle {
Layout.fillWidth: true
Layout.preferredHeight: 1
color: emojiPopup.colors.dark
}
// Category picker row
RowLayout {
Layout.bottomMargin: 0
Layout.preferredHeight: 42
implicitHeight: 42
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
// Display the normal categories
Repeater {
model: ListModel {
// TODO: Would like to get 'simple' icons for the categories
ListElement { image: ":/icons/icons/emoji-categories/people.png"; category: EmojiCategory.People }
ListElement { image: ":/icons/icons/emoji-categories/nature.png"; category: EmojiCategory.Nature }
ListElement { image: ":/icons/icons/emoji-categories/foods.png"; category: EmojiCategory.Food }
ListElement { image: ":/icons/icons/emoji-categories/activity.png"; category: EmojiCategory.Activity }
ListElement { image: ":/icons/icons/emoji-categories/travel.png"; category: EmojiCategory.Travel }
ListElement { image: ":/icons/icons/emoji-categories/objects.png"; category: EmojiCategory.Objects }
ListElement { image: ":/icons/icons/emoji-categories/symbols.png"; category: EmojiCategory.Symbols }
ListElement { image: ":/icons/icons/emoji-categories/flags.png"; category: EmojiCategory.Flags }
}
delegate: AbstractButton {
Layout.preferredWidth: 36
Layout.preferredHeight: 36
contentItem: Image {
horizontalAlignment: Image.AlignHCenter
verticalAlignment: Image.AlignVCenter
fillMode: Image.Pad
sourceSize.width: 32
sourceSize.height: 32
source: "image://colorimage/" + model.image + "?" + (hovered ? colors.highlight : colors.buttonText)
}
MouseArea
{
id: mouseArea
anchors.fill: parent
onPressed: mouse.accepted = false
cursorShape: Qt.PointingHandCursor
}
background: Rectangle {
anchors.fill: parent
color: emojiPopup.model.category === model.category ? Qt.hsla(highlightHue, highlightSat, highlightLight, 0.20) : 'transparent'
radius: 5
border.color: emojiPopup.model.category === model.category ? colors.highlight : 'transparent'
}
hoverEnabled: true
ToolTip.text: {
switch (model.category) {
case EmojiCategory.People:
return qsTr('People');
case EmojiCategory.Nature:
return qsTr('Nature');
case EmojiCategory.Food:
return qsTr('Food');
case EmojiCategory.Activity:
return qsTr('Activity');
case EmojiCategory.Travel:
return qsTr('Travel');
case EmojiCategory.Objects:
return qsTr('Objects');
case EmojiCategory.Symbols:
return qsTr('Symbols');
case EmojiCategory.Flags:
return qsTr('Flags');
}
}
ToolTip.visible: hovered
onClicked: {
emojiPopup.model.category = model.category
}
}
}
// Separator
Rectangle {
Layout.fillHeight: true
Layout.preferredWidth: 1
implicitWidth: 1
height: parent.height
color: emojiPopup.colors.dark
}
// Search Button is special
AbstractButton {
id: searchBtn
hoverEnabled: true
Layout.alignment: Qt.AlignRight
Layout.bottomMargin: 0
ToolTip.text: qsTr("Search")
ToolTip.visible: hovered
onClicked: {
// clear any filters
emojiPopup.model.category = EmojiCategory.Search
gridView.positionViewAtBeginning()
emojiSearch.forceActiveFocus()
}
Layout.preferredWidth: 36
Layout.preferredHeight: 36
implicitWidth: 36
implicitHeight: 36
contentItem: Image {
anchors.right: parent.right
horizontalAlignment: Image.AlignHCenter
verticalAlignment: Image.AlignVCenter
sourceSize.width: 32
sourceSize.height: 32
fillMode: Image.Pad
smooth: true
source: "image://colorimage/:/icons/icons/ui/search.png?" + (parent.hovered ? colors.highlight : colors.buttonText)
}
MouseArea
{
id: mouseArea
anchors.fill: parent
onPressed: mouse.accepted = false
cursorShape: Qt.PointingHandCursor
}
}
}
}
}

@ -22,6 +22,8 @@
<file>icons/ui/checkmark@2x.png</file>
<file>icons/ui/cursor.png</file>
<file>icons/ui/cursor@2x.png</file>
<file>icons/ui/search.png</file>
<file>icons/ui/search@2x.png</file>
<file>icons/ui/settings.png</file>
<file>icons/ui/settings@2x.png</file>
<file>icons/ui/smile.png</file>
@ -122,6 +124,8 @@
<file>qml/Reactions.qml</file>
<file>qml/ScrollHelper.qml</file>
<file>qml/TimelineRow.qml</file>
<file>qml/emoji/EmojiButton.qml</file>
<file>qml/emoji/EmojiPicker.qml</file>
<file>qml/delegates/MessageDelegate.qml</file>
<file>qml/delegates/TextMessage.qml</file>
<file>qml/delegates/NoticeMessage.qml</file>

@ -14,8 +14,9 @@ class Emoji(object):
def generate_code(emojis, category):
tmpl = Template('''
const std::vector<Emoji> emoji::Provider::{{ category }} = {
// {{ category.capitalize() }}
{%- for e in emoji %}
Emoji{QString::fromUtf8("{{ e.code }}"), "{{ e.shortname }}"},
Emoji{QString::fromUtf8("{{ e.code }}"), "{{ e.shortname }}", emoji::EmojiCategory::{{ category.capitalize() }}},
{%- endfor %}
};
''')
@ -23,6 +24,19 @@ const std::vector<Emoji> emoji::Provider::{{ category }} = {
d = dict(category=category, emoji=emojis)
print(tmpl.render(d))
def generate_qml_list(**kwargs):
tmpl = Template('''
const QVector<Emoji> emoji::Provider::emoji = {
{%- for c in kwargs.items() %}
// {{ c[0].capitalize() }}
{%- for e in c[1] %}
Emoji{QString::fromUtf8("{{ e.code }}"), "{{ e.shortname }}", emoji::EmojiCategory::{{ c[0].capitalize() }}},
{%- endfor %}
{%- endfor %}
};
''')
d = dict(kwargs=kwargs)
print(tmpl.render(d))
if __name__ == '__main__':
if len(sys.argv) < 2:
@ -87,3 +101,4 @@ if __name__ == '__main__':
generate_code(objects, 'objects')
generate_code(symbols, 'symbols')
generate_code(flags, 'flags')
generate_qml_list(people=people, nature=nature, food=food, activity=activity, travel=travel, objects=objects, symbols=symbols, flags=flags)

@ -9,19 +9,35 @@ set -eu
INPUT=$1
OUTPUT=nheko
filename=$(basename -- "$1")
extension="${filename##*.}"
mkdir ${OUTPUT}.iconset
sips -z 16 16 "${INPUT}" --out ${OUTPUT}.iconset/icon_16x16.png
sips -z 32 32 "${INPUT}" --out ${OUTPUT}.iconset/icon_16x16@2x.png
sips -z 32 32 "${INPUT}" --out ${OUTPUT}.iconset/icon_32x32.png
sips -z 64 64 "${INPUT}" --out ${OUTPUT}.iconset/icon_32x32@2x.png
sips -z 128 128 "${INPUT}" --out ${OUTPUT}.iconset/icon_128x128.png
sips -z 256 256 "${INPUT}" --out ${OUTPUT}.iconset/icon_128x128@2x.png
sips -z 256 256 "${INPUT}" --out ${OUTPUT}.iconset/icon_256x256.png
sips -z 512 512 "${INPUT}" --out ${OUTPUT}.iconset/icon_256x256@2x.png
sips -z 512 512 "${INPUT}" --out ${OUTPUT}.iconset/icon_512x512.png
cp "${INPUT}" ${OUTPUT}.iconset/icon_512x512@2x.png
if [ extension = "svg" ]; then
rsvg-convert -h 16 "${INPUT}" > ${OUTPUT}.iconset/icon_16x16.png
rsvg-convert -h 32 "${INPUT}" > ${OUTPUT}.iconset/icon_16x16@2x.png
rsvg-convert -h 32 "${INPUT}" > ${OUTPUT}.iconset/icon_32x32.png
rsvg-convert -h 64 "${INPUT}" > ${OUTPUT}.iconset/icon_32x32@2x.png
rsvg-convert -h 128 "${INPUT}" > ${OUTPUT}.iconset/icon_128x128.png
rsvg-convert -h 256 "${INPUT}" > ${OUTPUT}.iconset/icon_128x128@2x.png
rsvg-convert -h 256 "${INPUT}" > ${OUTPUT}.iconset/icon_256x256.png
rsvg-convert -h 512 "${INPUT}" > ${OUTPUT}.iconset/icon_256x256@2x.png
rsvg-convert -h 512 "${INPUT}" > ${OUTPUT}.iconset/icon_512x512.png
rsvg-convert -h 1024 "${INPUT}" > ${OUTPUT}.iconset/icon_512x512@2x.png
else
sips -z 16 16 "${INPUT}" --out ${OUTPUT}.iconset/icon_16x16.png
sips -z 32 32 "${INPUT}" --out ${OUTPUT}.iconset/icon_16x16@2x.png
sips -z 32 32 "${INPUT}" --out ${OUTPUT}.iconset/icon_32x32.png
sips -z 64 64 "${INPUT}" --out ${OUTPUT}.iconset/icon_32x32@2x.png
sips -z 128 128 "${INPUT}" --out ${OUTPUT}.iconset/icon_128x128.png
sips -z 256 256 "${INPUT}" --out ${OUTPUT}.iconset/icon_128x128@2x.png
sips -z 256 256 "${INPUT}" --out ${OUTPUT}.iconset/icon_256x256.png
sips -z 512 512 "${INPUT}" --out ${OUTPUT}.iconset/icon_256x256@2x.png
sips -z 512 512 "${INPUT}" --out ${OUTPUT}.iconset/icon_512x512.png
cp "${INPUT}" ${OUTPUT}.iconset/icon_512x512@2x.png
fi
iconutil -c icns ${OUTPUT}.iconset

@ -0,0 +1,110 @@
#include "EmojiModel.h"
#include <Cache.h>
#include <MatrixClient.h>
using namespace emoji;
QHash<int, QByteArray>
EmojiModel::roleNames() const
{
static QHash<int, QByteArray> roles;
if (roles.isEmpty()) {
roles = QAbstractListModel::roleNames();
roles[static_cast<int>(EmojiModel::Roles::Unicode)] = QByteArrayLiteral("unicode");
roles[static_cast<int>(EmojiModel::Roles::ShortName)] =
QByteArrayLiteral("shortName");
roles[static_cast<int>(EmojiModel::Roles::Category)] =
QByteArrayLiteral("category");
roles[static_cast<int>(EmojiModel::Roles::Emoji)] = QByteArrayLiteral("emoji");
}
return roles;
}
int
EmojiModel::rowCount(const QModelIndex &parent) const
{
return parent == QModelIndex() ? Provider::emoji.count() : 0;
}
QVariant
EmojiModel::data(const QModelIndex &index, int role) const
{
if (hasIndex(index.row(), index.column(), index.parent())) {
switch (role) {
case Qt::DisplayRole:
case static_cast<int>(EmojiModel::Roles::Unicode):
return Provider::emoji[index.row()].unicode;
case Qt::ToolTipRole:
case static_cast<int>(EmojiModel::Roles::ShortName):
return Provider::emoji[index.row()].shortName;
case static_cast<int>(EmojiModel::Roles::Category):
return QVariant::fromValue(Provider::emoji[index.row()].category);
case static_cast<int>(EmojiModel::Roles::Emoji):
return QVariant::fromValue(Provider::emoji[index.row()]);
}
}
return {};
}
EmojiProxyModel::EmojiProxyModel(QObject *parent)
: QSortFilterProxyModel(parent)
{}
EmojiProxyModel::~EmojiProxyModel() {}
EmojiCategory
EmojiProxyModel::category() const
{
return category_;
}
void
EmojiProxyModel::setCategory(EmojiCategory cat)
{
if (category_ == cat) {
return;
}
category_ = cat;
emit categoryChanged();
invalidateFilter();
}
QString
EmojiProxyModel::filter() const
{
return filterRegExp().pattern();
}
void
EmojiProxyModel::setFilter(const QString &filter)
{
if (filterRegExp().pattern() == filter) {
return;
}
setFilterWildcard(filter);
emit filterChanged();
}
bool
EmojiProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
{
const QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
const Emoji emoji = index.data(static_cast<int>(EmojiModel::Roles::Emoji)).value<Emoji>();
// TODO: Add favorites / recently used
if (category_ != EmojiCategory::Search) {
return emoji.category == category_;
}
return filterRegExp().isEmpty() ? true : filterRegExp().indexIn(emoji.shortName) != -1;
}

@ -0,0 +1,64 @@
#pragma once
#include <QAbstractListModel>
#include <QSet>
#include <QSortFilterProxyModel>
#include <QVector>
#include "Provider.h"
namespace emoji {
/*
* Provides access to the emojis in Provider.h to QML
*/
class EmojiModel : public QAbstractListModel
{
Q_OBJECT
public:
enum Roles
{
Unicode = Qt::UserRole, // unicode of emoji
Category, // category of emoji
ShortName, // shortext of the emoji
Emoji, // Contains everything from the Emoji
};
using QAbstractListModel::QAbstractListModel;
QHash<int, QByteArray> roleNames() const override;
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
};
class EmojiProxyModel : public QSortFilterProxyModel
{
Q_OBJECT
Q_PROPERTY(
emoji::EmojiCategory category READ category WRITE setCategory NOTIFY categoryChanged)
Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged)
public:
explicit EmojiProxyModel(QObject *parent = nullptr);
~EmojiProxyModel() override;
EmojiCategory category() const;
void setCategory(EmojiCategory cat);
QString filter() const;
void setFilter(const QString &filter);
signals:
void categoryChanged();
void filterChanged();
protected:
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
private:
EmojiCategory category_ = EmojiCategory::Search;
emoji::Provider emoji_provider_;
};
}

File diff suppressed because it is too large Load Diff

@ -17,22 +17,48 @@
#pragma once
#include <QObject>
#include <QSet>
#include <QString>
#include <QVector>
#include <vector>
namespace emoji {
Q_NAMESPACE
enum class EmojiCategory
{
People,
Nature,
Food,
Activity,
Travel,
Objects,
Symbols,
Flags,
Search
};
Q_ENUM_NS(EmojiCategory)
struct Emoji
{
// Unicode code.
Q_GADGET
Q_PROPERTY(const QString &unicode MEMBER unicode)
Q_PROPERTY(const QString &shortName MEMBER shortName)
Q_PROPERTY(emoji::EmojiCategory category MEMBER category)
public:
QString unicode;
// Keyboard shortcut e.g :emoji:
QString shortname;
QString shortName;
EmojiCategory category;
};
class Provider
{
public:
// all emoji for QML purposes
static const QVector<Emoji> emoji;
static const std::vector<Emoji> people;
static const std::vector<Emoji> nature;
static const std::vector<Emoji> food;
@ -42,4 +68,6 @@ public:
static const std::vector<Emoji> symbols;
static const std::vector<Emoji> flags;
};
} // namespace emoji
Q_DECLARE_METATYPE(emoji::Emoji)

File diff suppressed because it is too large Load Diff

@ -10,7 +10,7 @@ ReactionsModel::roleNames() const
{Key, "key"},
{Count, "counter"},
{Users, "users"},
{SelfReacted, "selfReacted"},
{SelfReactedEvent, "selfReactedEvent"},
};
}
@ -45,11 +45,11 @@ ReactionsModel::data(const QModelIndex &index, int role) const
}
return users;
}
case SelfReacted:
case SelfReactedEvent:
for (const auto &reaction : reactions[i].reactions)
if (reaction.second.sender == http::client()->user_id().to_string())
return true;
return false;
return QString::fromStdString(reaction.second.event_id);
return QStringLiteral("");
default:
return {};
}

@ -18,7 +18,7 @@ public:
Key,
Count,
Users,
SelfReacted,
SelfReactedEvent,
};
QHash<int, QByteArray> roleNames() const override;

@ -154,13 +154,25 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj
connect(this, &TimelineModel::messageSent, this, [this](QString txn_id, QString event_id) {
pending.removeOne(txn_id);
auto ev = events.value(txn_id);
if (auto reaction =
std::get_if<mtx::events::RoomEvent<mtx::events::msg::Reaction>>(&ev)) {
QString reactedTo =
QString::fromStdString(reaction->content.relates_to.event_id);
auto &rModel = reactions[reactedTo];
rModel.removeReaction(*reaction);
auto rCopy = *reaction;
rCopy.event_id = event_id.toStdString();
rModel.addReaction(room_id_.toStdString(), rCopy);
}
int idx = idToIndex(txn_id);
if (idx < 0) {
// transaction already received via sync
return;
}
eventOrder[idx] = event_id;
auto ev = events.value(txn_id);
ev = std::visit(
[event_id](const auto &e) -> mtx::events::collections::TimelineEvents {
auto eventCopy = e;
@ -379,7 +391,7 @@ TimelineModel::data(const QString &id, int role) const
else
return {};
case RoomId:
return QVariant(QString::fromStdString(room_id(event)));
return QVariant(room_id_);
case RoomName:
return QVariant(QString::fromStdString(room_name(event)));
case RoomTopic:
@ -683,6 +695,14 @@ TimelineModel::internalAddEvents(
QString reactedTo =
QString::fromStdString(reaction->content.relates_to.event_id);
events.insert(id, e);
// remove local echo
if (!txid.isEmpty()) {
auto rCopy = *reaction;
rCopy.event_id = txid.toStdString();
reactions[reactedTo].removeReaction(rCopy);
}
reactions[reactedTo].addReaction(room_id_.toStdString(), *reaction);
int idx = idToIndex(reactedTo);
if (idx >= 0)
@ -1355,10 +1375,11 @@ struct SendMessageVisitor
, model_(model)
{}
// Do-nothing operator for all unhandled events
template<typename T>
void operator()(const mtx::events::Event<T> &)
{}
// Operator for m.room.message events that contain a msgtype in their content
template<typename T,
std::enable_if_t<std::is_same<decltype(T::msgtype), std::string>::value, int> = 0>
void operator()(const mtx::events::RoomEvent<T> &msg)
@ -1395,6 +1416,36 @@ struct SendMessageVisitor
}
}
// Special operator for reactions, which are a type of m.room.message, but need to be
// handled distinctly for their differences from normal room messages. Specifically,
// reactions need to have the relation outside of ciphertext, or synapse / the homeserver
// cannot handle it correctly. See the MSC for more details:
// https://github.com/matrix-org/matrix-doc/blob/matthew/msc1849/proposals/1849-aggregations.md#end-to-end-encryption
void operator()(const mtx::events::RoomEvent<mtx::events::msg::Reaction> &msg)
{
QString txn_id_qstr = txn_id_qstr_;
TimelineModel *model = model_;
http::client()
->send_room_message<mtx::events::msg::Reaction, mtx::events::EventType::Reaction>(
model->room_id_.toStdString(),
txn_id_qstr.toStdString(),
msg.content,
[txn_id_qstr, model](const mtx::responses::EventId &res,
mtx::http::RequestErr err) {
if (err) {
const int status_code = static_cast<int>(err->status_code);
nhlog::net()->warn("[{}] failed to send message: {} {}",
txn_id_qstr.toStdString(),
err->matrix_error.error,
status_code);
emit model->messageFailed(txn_id_qstr);
}
emit model->messageSent(
txn_id_qstr, QString::fromStdString(res.event_id.to_string()));
});
}
QString txn_id_qstr_;
TimelineModel *model_;
};
@ -1426,10 +1477,12 @@ TimelineModel::addPendingMessage(mtx::events::collections::TimelineEvents event)
internalAddEvents({event});
QString txn_id_qstr = QString::fromStdString(mtx::accessors::event_id(event));
beginInsertRows(QModelIndex(), 0, 0);
pending.push_back(txn_id_qstr);
this->eventOrder.insert(this->eventOrder.begin(), txn_id_qstr);
endInsertRows();
if (!std::get_if<mtx::events::RoomEvent<mtx::events::msg::Reaction>>(&event)) {
beginInsertRows(QModelIndex(), 0, 0);
this->eventOrder.insert(this->eventOrder.begin(), txn_id_qstr);
endInsertRows();
}
updateLastMessage();
emit nextPendingMessage();

@ -217,7 +217,6 @@ public slots:
}
std::vector<QString> typingUsers() const { return typingUsers_; }
bool paginationInProgress() const { return m_paginationInProgress; }
QString reply() const { return reply_; }
void setReply(QString newReply)
{

@ -13,6 +13,8 @@
#include "MxcImageProvider.h"
#include "UserSettingsPage.h"
#include "dialogs/ImageOverlay.h"
#include "emoji/EmojiModel.h"
#include "emoji/Provider.h"
Q_DECLARE_METATYPE(mtx::events::collections::TimelineEvents)
@ -72,6 +74,18 @@ TimelineViewManager::TimelineViewManager(QSharedPointer<UserSettings> userSettin
qmlRegisterType<DelegateChoice>("im.nheko", 1, 0, "DelegateChoice");
qmlRegisterType<DelegateChooser>("im.nheko", 1, 0, "DelegateChooser");
qRegisterMetaType<mtx::events::collections::TimelineEvents>();
qmlRegisterType<emoji::EmojiModel>("im.nheko.EmojiModel", 1, 0, "EmojiModel");
qmlRegisterType<emoji::EmojiProxyModel>("im.nheko.EmojiModel", 1, 0, "EmojiProxyModel");
qmlRegisterUncreatableType<QAbstractItemModel>(
"im.nheko.EmojiModel", 1, 0, "QAbstractItemModel", "Used by proxy models");
qmlRegisterUncreatableType<emoji::Emoji>(
"im.nheko.EmojiModel", 1, 0, "Emoji", "Used by emoji models");
qmlRegisterUncreatableMetaObject(emoji::staticMetaObject,
"im.nheko.EmojiModel",
1,
0,
"EmojiCategory",
"Error: Only enums");
#ifdef USE_QUICK_VIEW
view = new QQuickView();
@ -283,6 +297,36 @@ TimelineViewManager::queueEmoteMessage(const QString &msg)
timeline_->sendMessage(emote);
}
void
TimelineViewManager::reactToMessage(const QString &roomId,
const QString &reactedEvent,
const QString &reactionKey,
const QString &selfReactedEvent)
{
// If selfReactedEvent is empty, that means we haven't previously reacted
if (selfReactedEvent.isEmpty()) {
queueReactionMessage(roomId, reactedEvent, reactionKey);
// Otherwise, we have previously reacted and the reaction should be redacted
} else {
auto model = models.value(roomId);
model->redactEvent(selfReactedEvent);
}
}
void
TimelineViewManager::queueReactionMessage(const QString &roomId,
const QString &reactedEvent,
const QString &reactionKey)
{
mtx::events::msg::Reaction reaction;
reaction.relates_to.rel_type = mtx::common::RelationType::Annotation;
reaction.relates_to.event_id = reactedEvent.toStdString();
reaction.relates_to.key = reactionKey.toStdString();
auto model = models.value(roomId);
model->sendMessage(reaction);
}
void
TimelineViewManager::queueImageMessage(const QString &roomid,
const QString &filename,

@ -1,5 +1,6 @@
#pragma once
#include <QHash>
#include <QQuickView>
#include <QQuickWidget>
#include <QSharedPointer>
@ -12,6 +13,8 @@
#include "Logging.h"
#include "TimelineModel.h"
#include "Utils.h"
#include "emoji/EmojiModel.h"
#include "emoji/Provider.h"
class MxcImageProvider;
class BlurhashProvider;
@ -55,7 +58,13 @@ public slots:
void setHistoryView(const QString &room_id);
void updateColorPalette();
void queueReactionMessage(const QString &roomId,
const QString &reactedEvent,
const QString &reaction);
void reactToMessage(const QString &roomId,
const QString &reactedEvent,
const QString &reactionKey,
const QString &selfReactedEvent);
void queueTextMessage(const QString &msg);
void queueEmoteMessage(const QString &msg);
void queueImageMessage(const QString &roomid,
@ -100,7 +109,8 @@ private:
QHash<QString, QSharedPointer<TimelineModel>> models;
TimelineModel *timeline_ = nullptr;
bool isInitialSync_ = true;
bool isInitialSync_ = true;
QSharedPointer<UserSettings> settings;
QHash<QString, QColor> userColors;

Loading…
Cancel
Save