From 716992b7611f36cb57d830cfb646d36e5ed1d911 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sun, 11 Oct 2020 00:09:47 +0200 Subject: Update translations --- resources/langs/nheko_cs.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_de.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_el.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_en.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_eo.ts | 368 ++++++++++++++++++++++++++++------ resources/langs/nheko_et.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_fi.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_fr.ts | 444 ++++++++++++++++++++++++++++++++--------- resources/langs/nheko_it.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_ja.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_nl.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_pl.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_pt_PT.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_ro.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_ru.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_si.ts | 364 +++++++++++++++++++++++++++------ resources/langs/nheko_zh_CN.ts | 364 +++++++++++++++++++++++++++------ 17 files changed, 5244 insertions(+), 1028 deletions(-) (limited to 'resources') diff --git a/resources/langs/nheko_cs.ts b/resources/langs/nheko_cs.ts index 38443412..9a79837a 100644 --- a/resources/langs/nheko_cs.ts +++ b/resources/langs/nheko_cs.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + + + Cache - + You joined this room. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 @@ -209,6 +255,29 @@ + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search - + People @@ -281,10 +350,33 @@ + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + + + InviteeItem @@ -443,18 +571,18 @@ Example: https://server.my:8787 MessageDelegate - - + + redacted - + Encryption enabled - + room name changed to: %1 @@ -464,7 +592,7 @@ Example: https://server.my:8787 - + topic changed to: %1 @@ -474,41 +602,84 @@ Example: https://server.my:8787 - + %1 created and configured room: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + Negotiating call... - + %1 answered the call. - + %1 ended the call. + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + + + + + Deny + + + + + Start verification + + + + + Accept + + + Placeholder @@ -596,7 +767,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -697,26 +868,44 @@ Example: https://server.my:8787 StatusIndicator - + Failed - + Sent - + Received - + Read + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + + + TextInputWidget @@ -741,7 +930,7 @@ Example: https://server.my:8787 - + Select a file @@ -751,7 +940,7 @@ Example: https://server.my:8787 - + Place a call @@ -769,20 +958,20 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 - + - + Failed to encrypt event, sending aborted! - + Save image @@ -922,12 +1111,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -951,17 +1140,17 @@ Example: https://server.my:8787 TimelineRow - + React - + Reply - + Options @@ -969,63 +1158,63 @@ Example: https://server.my:8787 TimelineView - + React - + Reply - + Read receipts - + Mark as read - + View raw message - + View decrypted raw message - + Redact message - + Save as - + No room open - + Back to room list - + No room selected - + Room options @@ -1035,26 +1224,34 @@ Example: https://server.my:8787 - + Members - + Leave room - + Settings - + Close + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1111,10 +1308,33 @@ Example: https://server.my:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray @@ -1134,12 +1354,12 @@ Example: https://server.my:8787 - + CALLS - + Keep the application running in the background after closing the client window. @@ -1342,7 +1562,7 @@ This usually causes the application icon in the task bar to animate in some fash - + GENERAL @@ -1352,7 +1572,7 @@ This usually causes the application icon in the task bar to animate in some fash - + Emoji Font Family @@ -1403,6 +1623,34 @@ This usually causes the application icon in the task bar to animate in some fash + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + + + WelcomePage diff --git a/resources/langs/nheko_de.ts b/resources/langs/nheko_de.ts index 0958017f..5dd76df1 100644 --- a/resources/langs/nheko_de.ts +++ b/resources/langs/nheko_de.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + Abbrechen + + Cache - + You joined this room. Du bist dem Raum beigetreten. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 Nutzer konnte nicht eingeladen werden: %1 @@ -209,6 +255,29 @@ (community) + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search Suche - + People Leute @@ -281,10 +350,33 @@ Flaggen + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted Verschlüsselt @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Verschlüsseltes Event (keine Schlüssel zur Entschlüsselung gefunden) -- + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. -- Entschlüsselungsfehler (Fehler bei Suche nach megolm Schlüsseln in Datenbank) -- - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. -- Entschlüsselungsfehler (%1) -- - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. -- Verschlüsseltes Event (Unbekannter Eventtyp) -- @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + Schließen + + InviteeItem @@ -447,18 +575,18 @@ Beispiel: https://mein.server:8787 MessageDelegate - - + + redacted gelöscht - + Encryption enabled Verschlüsselung aktiviert - + room name changed to: %1 Raumname wurde gändert auf: %1 @@ -468,7 +596,7 @@ Beispiel: https://mein.server:8787 Raumname wurde entfernt - + topic changed to: %1 Raumthema wurde geändert auf: %1 @@ -478,41 +606,84 @@ Beispiel: https://mein.server:8787 Raumthema wurde entfernt. - + %1 created and configured room: %2 %1 hat den Raum erstellt: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + %1 answered the call. %1 hat den Anruf angenommen. - + %1 ended the call. %1 hat den Anruf beendet. - + Negotiating call... + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + Abbrechen + + + + Deny + + + + + Start verification + + + + + Accept + Akzeptieren + + Placeholder @@ -600,7 +771,7 @@ Beispiel: https://mein.server:8787 RoomInfo - + no version stored keine Version gespeichert @@ -701,26 +872,44 @@ Beispiel: https://mein.server:8787 StatusIndicator - + Failed Fehlgeschlagen - + Sent Gesendet - + Received Empfangen - + Read Gelesen + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + Schließen + + TextInputWidget @@ -745,7 +934,7 @@ Beispiel: https://mein.server:8787 Emoji - + Select a file Datei auswählen @@ -755,7 +944,7 @@ Beispiel: https://mein.server:8787 Alle Dateien (*) - + Place a call @@ -773,20 +962,20 @@ Beispiel: https://mein.server:8787 TimelineModel - + Message redaction failed: %1 Nachricht zurückziehen fehlgeschlagen: %1 - + - + Failed to encrypt event, sending aborted! - + Save image Bild speichern @@ -925,12 +1114,12 @@ Beispiel: https://mein.server:8787 %1 hat das Anklopfen zurückgezogen. - + You joined this room. Du bist dem Raum beigetreten. - + Rejected the knock from %1. Hat das Anklopfen von %1 abgewiesen. @@ -954,17 +1143,17 @@ Beispiel: https://mein.server:8787 TimelineRow - + React - + Reply Antworten - + Options Optionen @@ -972,63 +1161,63 @@ Beispiel: https://mein.server:8787 TimelineView - + React - + Reply Antworten - + Read receipts Lesebestätigungen - + Mark as read Als gelesen markieren - + View raw message Zeige rohen Nachrichteninhalt - + View decrypted raw message Zeige rohen, entschlüsselten Nachrichteninhalt - + Redact message Nachricht löschen - + Save as Speichern unter... - + No room open Kein Raum geöffnet - + Back to room list - + No room selected - + Room options Raumoptionen @@ -1038,26 +1227,34 @@ Beispiel: https://mein.server:8787 Benutzer einladen - + Members Teilnehmer - + Leave room Raum verlassen - + Settings Einstellungen - + Close Schließen + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1114,10 +1311,33 @@ Beispiel: https://mein.server:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray Ins Benachrichtigungsfeld minimieren @@ -1137,12 +1357,12 @@ Beispiel: https://mein.server:8787 Runde Profilbilder - + CALLS - + Keep the application running in the background after closing the client window. @@ -1345,7 +1565,7 @@ This usually causes the application icon in the task bar to animate in some fash VERSCHLÜSSELUNG - + GENERAL ALLGEMEINES @@ -1355,7 +1575,7 @@ This usually causes the application icon in the task bar to animate in some fash OBERFLÄCHE - + Emoji Font Family Emojischriftart @@ -1406,6 +1626,34 @@ This usually causes the application icon in the task bar to animate in some fash Datei zum Speichern der zu exportierenden Sitzungsschlüssel + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + Abbrechen + + WelcomePage diff --git a/resources/langs/nheko_el.ts b/resources/langs/nheko_el.ts index d0a46653..02cc7878 100644 --- a/resources/langs/nheko_el.ts +++ b/resources/langs/nheko_el.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + Άκυρο + + Cache - + You joined this room. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 @@ -209,6 +255,29 @@ + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search - + People @@ -281,10 +350,33 @@ Σημαίες + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + + + InviteeItem @@ -443,18 +571,18 @@ Example: https://server.my:8787 MessageDelegate - - + + redacted - + Encryption enabled - + room name changed to: %1 @@ -464,7 +592,7 @@ Example: https://server.my:8787 - + topic changed to: %1 @@ -474,41 +602,84 @@ Example: https://server.my:8787 - + %1 created and configured room: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + %1 answered the call. - + %1 ended the call. - + Negotiating call... + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + Άκυρο + + + + Deny + + + + + Start verification + + + + + Accept + Αποδοχή + + Placeholder @@ -596,7 +767,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -697,26 +868,44 @@ Example: https://server.my:8787 StatusIndicator - + Failed - + Sent - + Received - + Read + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + + + TextInputWidget @@ -741,7 +930,7 @@ Example: https://server.my:8787 - + Select a file Διάλεξε ένα αρχείο @@ -751,7 +940,7 @@ Example: https://server.my:8787 Όλα τα αρχεία (*) - + Place a call @@ -769,20 +958,20 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 - + - + Failed to encrypt event, sending aborted! - + Save image Αποθήκευση Εικόνας @@ -921,12 +1110,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -950,17 +1139,17 @@ Example: https://server.my:8787 TimelineRow - + React - + Reply - + Options @@ -968,63 +1157,63 @@ Example: https://server.my:8787 TimelineView - + React - + Reply - + Read receipts - + Mark as read - + View raw message - + View decrypted raw message - + Redact message - + Save as - + No room open - + Back to room list - + No room selected - + Room options @@ -1034,26 +1223,34 @@ Example: https://server.my:8787 Προσκάλεσε χρήστες - + Members Μέλη - + Leave room Βγές - + Settings Ρυθμίσεις - + Close + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1110,10 +1307,33 @@ Example: https://server.my:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray Ελαχιστοποίηση @@ -1133,12 +1353,12 @@ Example: https://server.my:8787 - + CALLS - + Keep the application running in the background after closing the client window. @@ -1341,7 +1561,7 @@ This usually causes the application icon in the task bar to animate in some fash - + GENERAL ΓΕΝΙΚΑ @@ -1351,7 +1571,7 @@ This usually causes the application icon in the task bar to animate in some fash - + Emoji Font Family @@ -1402,6 +1622,34 @@ This usually causes the application icon in the task bar to animate in some fash + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + Άκυρο + + WelcomePage diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts index bfbbd987..cd2a42a5 100644 --- a/resources/langs/nheko_en.ts +++ b/resources/langs/nheko_en.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + Cancel + + Cache - + You joined this room. You joined this room. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 Failed to invite user: %1 @@ -209,6 +255,29 @@ (community) + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search Search - + People People @@ -281,10 +350,33 @@ Flags + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted Encrypted @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Encrypted Event (No keys found for decryption) -- + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. -- Decryption Error (failed to retrieve megolm keys from db) -- - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. -- Decryption Error (%1) -- - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. -- Encrypted Event (Unknown event type) -- @@ -331,6 +425,40 @@ -- Message by unverified device! -- + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + Close + + InviteeItem @@ -447,18 +575,18 @@ Example: https://server.my:8787 MessageDelegate - - + + redacted redacted - + Encryption enabled Encryption enabled - + room name changed to: %1 room name changed to: %1 @@ -468,7 +596,7 @@ Example: https://server.my:8787 removed room name - + topic changed to: %1 topic changed to: %1 @@ -478,41 +606,84 @@ Example: https://server.my:8787 removed topic - + %1 created and configured room: %2 %1 created and configured room: %2 - + %1 placed a voice call. %1 placed a voice call. - + %1 placed a video call. %1 placed a video call. - + %1 placed a call. %1 placed a call. - + Negotiating call... Negotiating call… - + %1 answered the call. %1 answered the call. - + %1 ended the call. %1 ended the call. + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + Cancel + + + + Deny + + + + + Start verification + + + + + Accept + Accept + + Placeholder @@ -600,7 +771,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored no version stored @@ -701,26 +872,44 @@ Example: https://server.my:8787 StatusIndicator - + Failed Failed - + Sent Sent - + Received Received - + Read Read + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + Close + + TextInputWidget @@ -745,7 +934,7 @@ Example: https://server.my:8787 Emoji - + Select a file Select a file @@ -755,7 +944,7 @@ Example: https://server.my:8787 All Files (*) - + Place a call Place a call @@ -773,20 +962,20 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 Message redaction failed: %1 - + - + Failed to encrypt event, sending aborted! Failed to encrypt event, sending aborted! - + Save image Save image @@ -925,12 +1114,12 @@ Example: https://server.my:8787 %1 redacted their knock. - + You joined this room. You joined this room. - + Rejected the knock from %1. Rejected the knock from %1. @@ -954,17 +1143,17 @@ Example: https://server.my:8787 TimelineRow - + React React - + Reply Reply - + Options Options @@ -972,63 +1161,63 @@ Example: https://server.my:8787 TimelineView - + React React - + Reply Reply - + Read receipts Read receipts - + Mark as read Mark as read - + View raw message View raw message - + View decrypted raw message View decrypted raw message - + Redact message Redact message - + Save as Save as - + No room open No room open - + Back to room list Back to room list - + No room selected No room selected - + Room options Room options @@ -1038,26 +1227,34 @@ Example: https://server.my:8787 Invite users - + Members Members - + Leave room Leave room - + Settings Settings - + Close Close + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1114,10 +1311,33 @@ Example: https://server.my:8787 Offline + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray Minimize to tray @@ -1137,12 +1357,12 @@ Example: https://server.my:8787 Circular Avatars - + CALLS CALLS - + Keep the application running in the background after closing the client window. Keep the application running in the background after closing the client window. @@ -1353,7 +1573,7 @@ This usually causes the application icon in the task bar to animate in some fash ENCRYPTION - + GENERAL GENERAL @@ -1363,7 +1583,7 @@ This usually causes the application icon in the task bar to animate in some fash INTERFACE - + Emoji Font Family Emoji Font Family @@ -1414,6 +1634,34 @@ This usually causes the application icon in the task bar to animate in some fash File to save the exported session keys + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + Cancel + + WelcomePage diff --git a/resources/langs/nheko_eo.ts b/resources/langs/nheko_eo.ts index fafddab8..0aef02e8 100644 --- a/resources/langs/nheko_eo.ts +++ b/resources/langs/nheko_eo.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + + + Cache - + You joined this room. Vi aliĝis ĉi tiun ĉambron. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 @@ -210,6 +256,29 @@ + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -236,13 +305,13 @@ EmojiPicker - - + + Search Trovu - + People Homoj @@ -282,10 +351,33 @@ Flagoj + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted @@ -298,25 +390,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. @@ -332,6 +426,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + + + InviteeItem @@ -448,18 +576,18 @@ Ekzemplo: https://servisto.mia:8787 MessageDelegate - - + + redacted - + Encryption enabled - + room name changed to: %1 Nomo da ĉambro ŝanĝiĝis al: %1 @@ -469,7 +597,7 @@ Ekzemplo: https://servisto.mia:8787 - + topic changed to: %1 @@ -479,41 +607,84 @@ Ekzemplo: https://servisto.mia:8787 - + %1 created and configured room: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + %1 answered the call. - + %1 ended the call. - + Negotiating call... + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + + + + + Deny + + + + + Start verification + + + + + Accept + + + Placeholder @@ -570,7 +741,7 @@ Ekzemplo: https://servisto.mia:8787 REGISTER - + REGISTRU @@ -601,7 +772,7 @@ Ekzemplo: https://servisto.mia:8787 RoomInfo - + no version stored @@ -704,27 +875,45 @@ Ekzemplo: https://servisto.mia:8787 StatusIndicator - + Failed Estas malsukcesa - + Sent Estas sendita - + Received Estas ricevita - + Read Could this simply be "lega"? Estas lega + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + + + TextInputWidget @@ -749,7 +938,7 @@ Ekzemplo: https://servisto.mia:8787 - + Select a file @@ -759,7 +948,7 @@ Ekzemplo: https://servisto.mia:8787 Ĉiuj dosieroj (*) - + Place a call @@ -777,20 +966,20 @@ Ekzemplo: https://servisto.mia:8787 TimelineModel - + Message redaction failed: %1 - + - + Failed to encrypt event, sending aborted! - + Save image @@ -931,12 +1120,12 @@ Ekzemplo: https://servisto.mia:8787 - + You joined this room. Vi aliĝis ĉi tiun ĉambron. - + Rejected the knock from %1. @@ -960,17 +1149,17 @@ Ekzemplo: https://servisto.mia:8787 TimelineRow - + React Reagu - + Reply Respondu - + Options Ebloj @@ -978,63 +1167,63 @@ Ekzemplo: https://servisto.mia:8787 TimelineView - + React Reagu - + Reply Respondu - + Read receipts - + Mark as read - + View raw message - + View decrypted raw message - + Redact message - + Save as - + No room open - + Back to room list - + No room selected - + Room options @@ -1044,26 +1233,34 @@ Ekzemplo: https://servisto.mia:8787 - + Members Membroj - + Leave room Forlasu la ĉambron - + Settings - + Agordoj - + Close + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1120,10 +1317,33 @@ Ekzemplo: https://servisto.mia:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray @@ -1143,12 +1363,12 @@ Ekzemplo: https://servisto.mia:8787 - + CALLS - + Keep the application running in the background after closing the client window. @@ -1351,7 +1571,7 @@ This usually causes the application icon in the task bar to animate in some fash - + GENERAL @@ -1361,7 +1581,7 @@ This usually causes the application icon in the task bar to animate in some fash - + Emoji Font Family @@ -1412,6 +1632,34 @@ This usually causes the application icon in the task bar to animate in some fash + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + + + WelcomePage diff --git a/resources/langs/nheko_et.ts b/resources/langs/nheko_et.ts index f3a51bb9..b13e16b6 100644 --- a/resources/langs/nheko_et.ts +++ b/resources/langs/nheko_et.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + + + Cache - + You joined this room. Sa liitusid selle jututoaga. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 Kutse saatmine kasutajale ei õnnestunud: %1 @@ -209,6 +255,29 @@ (kogukond) + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search Otsi - + People Inimesed @@ -281,10 +350,33 @@ Lipud + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted Krüptitud @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Krüptitud sündmus (Dekrüptimisvõtmeid ei leidunud) -- + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. -- Dekrüptimise viga (megolm'i võtmete laadimine andmebaasist ei õnnestunud) -- - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. -- Dekrüptimise viga (%1) -- - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. -- Krüptitud sündmus (Tundmatu sündmuse tüüp) -- @@ -331,6 +425,40 @@ -- Sõnum verifitseerimata seadmest! -- + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + Sulge + + InviteeItem @@ -447,18 +575,18 @@ Näiteks: https://server.minu:8787 MessageDelegate - - + + redacted muudetud - + Encryption enabled Krüptimine on kasutusel - + room name changed to: %1 jututoa uus nimi on: %1 @@ -468,7 +596,7 @@ Näiteks: https://server.minu:8787 eemaldas jututoa nime - + topic changed to: %1 jututoa uus teema on: %1 @@ -478,41 +606,84 @@ Näiteks: https://server.minu:8787 teema on eemaldatud - + %1 created and configured room: %2 %1 lõi ja seadistas jututoa: %2 - + %1 placed a voice call. %1 helistas. - + %1 placed a video call. %1 alustas videokõnet. - + %1 placed a call. %1 helistas. - + Negotiating call... Ühendan kõnet… - + %1 answered the call. %1 vastas kõnele. - + %1 ended the call. %1 lõpetas kõne. + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + + + + + Deny + + + + + Start verification + + + + + Accept + Nõustu + + Placeholder @@ -600,7 +771,7 @@ Näiteks: https://server.minu:8787 RoomInfo - + no version stored salvestatud versiooni ei leidu @@ -701,26 +872,44 @@ Näiteks: https://server.minu:8787 StatusIndicator - + Failed Ebaõnnestus - + Sent Saadetud - + Received Vastuvõetud - + Read Loetud + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + Sulge + + TextInputWidget @@ -745,7 +934,7 @@ Näiteks: https://server.minu:8787 Emoji - + Select a file Vali fail @@ -755,7 +944,7 @@ Näiteks: https://server.minu:8787 Kõik failid (*) - + Place a call Helista @@ -773,20 +962,20 @@ Näiteks: https://server.minu:8787 TimelineModel - + Message redaction failed: %1 Sõnumi ümbersõnastamine ebaõnnestus: %1 - + - + Failed to encrypt event, sending aborted! Sündmuse krüptimine ei õnnestunud, katkestame saatmise! - + Save image Salvesta pilt @@ -925,12 +1114,12 @@ Näiteks: https://server.minu:8787 %1 muutis oma koputust jututoa uksele. - + You joined this room. Sa liitusid jututoaga. - + Rejected the knock from %1. Lükkas tagasi %1 koputuse jututoa uksele. @@ -954,17 +1143,17 @@ Näiteks: https://server.minu:8787 TimelineRow - + React Reageeri - + Reply Vasta - + Options Valikud @@ -972,63 +1161,63 @@ Näiteks: https://server.minu:8787 TimelineView - + React Reageeri - + Reply Vasta - + Read receipts Lugemisteatised - + Mark as read Märgi loetuks - + View raw message Näita sõnumi lähtekoodi - + View decrypted raw message Näita sõnumi dekrüptitud lähtekoodi - + Redact message Muuda sõnumit - + Save as Salvesta kui - + No room open Ühtegi jututuba pole avatud - + Back to room list Tagasi jututubade loendisse - + No room selected Jututuba on valimata - + Room options Jututoa valikud @@ -1038,26 +1227,34 @@ Näiteks: https://server.minu:8787 Kutsu kasutajaid - + Members Liikmed - + Leave room Lahku jututoast - + Settings Seadistused - + Close Sulge + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1114,10 +1311,33 @@ Näiteks: https://server.minu:8787 Pole võrgus + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray Vähenda tegumiribale @@ -1137,12 +1357,12 @@ Näiteks: https://server.minu:8787 Ümmargused tunnuspildid - + CALLS KÕNED - + Keep the application running in the background after closing the client window. Peale akna sulgemist jäta rakendus taustal tööle. @@ -1353,7 +1573,7 @@ See tavaliselt tähendab, et rakenduse ikoon tegumiribal annab mingit sorti anim KRÜPTIMINE - + GENERAL ÜLDISED SEADISTUSED @@ -1363,7 +1583,7 @@ See tavaliselt tähendab, et rakenduse ikoon tegumiribal annab mingit sorti anim LIIDES - + Emoji Font Family Fondiperekond emojide jaoks @@ -1414,6 +1634,34 @@ See tavaliselt tähendab, et rakenduse ikoon tegumiribal annab mingit sorti anim Fail, kuhu salvestad eksporditavad sessiooni krüptovõtmed + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + + + WelcomePage diff --git a/resources/langs/nheko_fi.ts b/resources/langs/nheko_fi.ts index 192c07b2..a8171557 100644 --- a/resources/langs/nheko_fi.ts +++ b/resources/langs/nheko_fi.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + Peruuta + + Cache - + You joined this room. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 @@ -209,6 +255,29 @@ (community) + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search - + People @@ -281,10 +350,33 @@ Liput + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Salattu viesti (salauksen purkuavaimia ei löydetty) -- + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. -- Virhe purkaessa salausta (megolm-avaimien hakeminen tietokannasta epäonnistui) -- - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. -- Virhe purkaessa salausta (%1) -- - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. -- Salattu viesti (tuntematon viestityyppi) -- @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + Sulje + + InviteeItem @@ -443,18 +571,18 @@ Example: https://server.my:8787 MessageDelegate - - + + redacted - + Encryption enabled - + room name changed to: %1 @@ -464,7 +592,7 @@ Example: https://server.my:8787 - + topic changed to: %1 @@ -474,41 +602,84 @@ Example: https://server.my:8787 - + %1 created and configured room: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + %1 answered the call. - + %1 ended the call. - + Negotiating call... + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + Peruuta + + + + Deny + + + + + Start verification + + + + + Accept + Hyväksy + + Placeholder @@ -596,7 +767,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored ei tallennettua versiota @@ -697,26 +868,44 @@ Example: https://server.my:8787 StatusIndicator - + Failed - + Sent - + Received - + Read + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + Sulje + + TextInputWidget @@ -741,7 +930,7 @@ Example: https://server.my:8787 Emoji - + Select a file Valitse tiedosto @@ -751,7 +940,7 @@ Example: https://server.my:8787 Kaikki tiedostot (*) - + Place a call @@ -769,20 +958,20 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 Viestin poisto epäonnistui: %1 - + - + Failed to encrypt event, sending aborted! - + Save image Tallenna kuva @@ -921,12 +1110,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -950,17 +1139,17 @@ Example: https://server.my:8787 TimelineRow - + React - + Reply - + Options @@ -968,63 +1157,63 @@ Example: https://server.my:8787 TimelineView - + React - + Reply - + Read receipts Lukukuittaukset - + Mark as read - + View raw message - + View decrypted raw message - + Redact message - + Save as - + No room open - + Back to room list - + No room selected - + Room options Huonevaihtoehdot @@ -1034,26 +1223,34 @@ Example: https://server.my:8787 Kutsu käyttäjiä - + Members Jäsenet - + Leave room Poistu huoneesta - + Settings Asetukset - + Close Sulje + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1110,10 +1307,33 @@ Example: https://server.my:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray Pienennä ilmoitusalueelle @@ -1133,12 +1353,12 @@ Example: https://server.my:8787 - + CALLS - + Keep the application running in the background after closing the client window. @@ -1341,7 +1561,7 @@ This usually causes the application icon in the task bar to animate in some fash SALAUS - + GENERAL YLEISET ASETUKSET @@ -1351,7 +1571,7 @@ This usually causes the application icon in the task bar to animate in some fash - + Emoji Font Family @@ -1402,6 +1622,34 @@ This usually causes the application icon in the task bar to animate in some fash Tiedosto, johon viedyt istuntoavaimet tallennetaan + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + Peruuta + + WelcomePage diff --git a/resources/langs/nheko_fr.ts b/resources/langs/nheko_fr.ts index 48047e32..2958f056 100644 --- a/resources/langs/nheko_fr.ts +++ b/resources/langs/nheko_fr.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + Annuler + + Cache - + You joined this room. Vous avez rejoint ce salon. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 Échec lors de l'invitation de %1 @@ -40,12 +86,12 @@ Do you really want to invite %1 (%2)? - Voulez-vous vraiment inviter %1 (%2) ? + Voulez-vous vraiment inviter %1 (%2) ? Failed to invite %1 to %2: %3 - Échec de l'invitation de %1 dans %2 : %3 + Échec de l'invitation de %1 dans %2 : %3 @@ -55,7 +101,7 @@ Do you really want to kick %1 (%2)? - Voulez-vous vraiment expulser %1 (%2) ? + Voulez-vous vraiment expulser %1 (%2) ? @@ -75,7 +121,7 @@ Do you really want to ban %1 (%2)? - Voulez-vous vraiment bannir %1 (%2) ? + Voulez-vous vraiment bannir %1 (%2) ? @@ -95,12 +141,12 @@ Do you really want to unban %1 (%2)? - Voulez-vous vraiment annuler le bannissement de %1 (%2) ? + Voulez-vous vraiment annuler le bannissement de %1 (%2) ? Failed to unban %1 in %2: %3 - Échec de l'annulation du bannissement de %1 dans %2 : %3 + Échec de l'annulation du bannissement de %1 dans %2 : %3 @@ -115,7 +161,7 @@ Cache migration failed! - Échec de la migration du cache ! + Échec de la migration du cache ! @@ -140,18 +186,18 @@ Failed to setup encryption keys. Server response: %1 %2. Please try again later. - Échec de la configuration des clés de chiffrement. Réponse du serveur : %1 %2. Veuillez réessayer plus tard. + Échec de la configuration des clés de chiffrement. Réponse du serveur : %1 %2. Veuillez réessayer plus tard. Please try to login again: %1 - Veuillez vous reconnecter : %1 + Veuillez vous reconnecter : %1 Failed to join room: %1 - Impossible de rejoindre le salon : %1 + Impossible de rejoindre le salon : %1 @@ -161,17 +207,17 @@ Failed to remove invite: %1 - Impossible de supprimer l'invitation : %1 + Impossible de supprimer l'invitation : %1 Room creation failed: %1 - Échec de la création du salon : %1 + Échec de la création du salon : %1 Failed to leave room: %1 - Impossible de quitter le salon : %1 + Impossible de quitter le salon : %1 @@ -209,6 +255,29 @@ (communauté) + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search Chercher - + People Personnes @@ -281,41 +350,66 @@ Drapeaux + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted Chiffré This message is not encrypted! - Ce message n'est pas chiffré ! + Ce message n'est pas chiffré ! EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Évènement chiffré (pas de clé trouvé pour le déchiffrement) -- + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. -- Échec du déchiffrement (échec de la récupération des clés megolm depuis la base de données) -- - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. -- Erreur de déchiffrement (%1) -- - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. -- Évènement chiffré (type d'évènement inconnu) -- @@ -323,12 +417,46 @@ -- Replay attack! This message index was reused! -- - -- Attaque par rejeu (replay attack) ! Cet index de message a été réutilisé ! -- + -- Attaque par rejeu (replay attack) ! Cet index de message a été réutilisé ! -- -- Message by unverified device! -- - -- Message d'un appareil non vérifié  -- + -- Message d'un appareil non vérifié  -- + + + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + Fermer @@ -357,9 +485,9 @@ You can also put your homeserver address there, if your server doesn't support .well-known lookup. Example: @user:server.my If Nheko fails to discover your homeserver, it will show you a field to enter the server manually. - Votre nom de connexion. Un mxid doit commencer par un « @ » suivi de l'identifiant. L'identifiant doit être suivi du nom de serveur, séparé de celui-ci par « : ». + Votre nom de connexion. Un mxid doit commencer par un « @ » suivi de l'identifiant. L'identifiant doit être suivi du nom de serveur, séparé de celui-ci par « : ». Vous pouvez également spécifier l'adresse de votre serveur ici, si votre serveur ne supporte pas l'identification .well-known. -Exemple : @utilisateur :monserveur.example.com +Exemple : @utilisateur :monserveur.example.com Si Nheko n'arrive pas à trouver votre serveur, il vous proposera de l'indiquer manuellement. @@ -382,7 +510,7 @@ Si Nheko n'arrive pas à trouver votre serveur, il vous proposera de l&apos The address that can be used to contact you homeservers client API. Example: https://server.my:8787 L'adresse qui peut être utilisée pour joindre l'API client de votre serveur. -Exemple : https ://monserveur.example.com :8787 +Exemple : https ://monserveur.example.com :8787 @@ -447,20 +575,20 @@ Exemple : https ://monserveur.example.com :8787 MessageDelegate - - + + redacted effacé - + Encryption enabled Chiffrement activé - + room name changed to: %1 - nom du salon changé en : %1 + nom du salon changé en : %1 @@ -468,9 +596,9 @@ Exemple : https ://monserveur.example.com :8787 nom du salon retiré - + topic changed to: %1 - sujet changé pour : %1 + sujet changé pour : %1 @@ -478,47 +606,90 @@ Exemple : https ://monserveur.example.com :8787 sujet retiré - + %1 created and configured room: %2 - %1 a créé et configuré le salon : %2 + %1 a créé et configuré le salon : %2 - + %1 placed a voice call. %1 a effectué un appel vocal. - + %1 placed a video call. %1 a effectué un appel vidéo. - + %1 placed a call. %1 a appelé. - + %1 answered the call. %1 a répondu à l'appel. - + %1 ended the call. 1% a terminé l'appel. - + Negotiating call... Négociation de l'appel… + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + Annuler + + + + Deny + + + + + Start verification + + + + + Accept + Accepter + + Placeholder unimplemented event: - Évènement non implémenté : + Évènement non implémenté : @@ -539,7 +710,7 @@ Exemple : https ://monserveur.example.com :8787 The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /. - Le nom d'utilisateur ne doit pas être vide, et ne peut contenir que les caractères a à z, 0 à 9, et « . _ = - / ». + Le nom d'utilisateur ne doit pas être vide, et ne peut contenir que les caractères a à z, 0 à 9, et « . _ = - / ». @@ -574,7 +745,7 @@ Exemple : https ://monserveur.example.com :8787 No supported registration flows! - Pas de méthode d'inscription supportée ! + Pas de méthode d'inscription supportée ! @@ -600,7 +771,7 @@ Exemple : https ://monserveur.example.com :8787 RoomInfo - + no version stored pas de version enregistrée @@ -615,7 +786,7 @@ Exemple : https ://monserveur.example.com :8787 Tag room as: - Étiqueter le salon comme : + Étiqueter le salon comme : @@ -657,7 +828,7 @@ Exemple : https ://monserveur.example.com :8787 Tag: Tag name prompt - Étiquette : + Étiquette : @@ -701,26 +872,44 @@ Exemple : https ://monserveur.example.com :8787 StatusIndicator - + Failed Échec - + Sent Envoyé - + Received Reçu - + Read Lu + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + Fermer + + TextInputWidget @@ -745,7 +934,7 @@ Exemple : https ://monserveur.example.com :8787 Emoji - + Select a file Sélectionnez un fichier @@ -755,7 +944,7 @@ Exemple : https ://monserveur.example.com :8787 Tous les types de fichiers (*) - + Place a call Appeler @@ -773,20 +962,20 @@ Exemple : https ://monserveur.example.com :8787 TimelineModel - + Message redaction failed: %1 - Échec de la suppression du message : %1 + Échec de la suppression du message : %1 - + - + Failed to encrypt event, sending aborted! - Échec du chiffrement de l'évènement, envoi abandonné ! + Échec du chiffrement de l'évènement, envoi abandonné ! - + Save image Enregistrer l'image @@ -925,12 +1114,12 @@ Exemple : https ://monserveur.example.com :8787 %1 ne frappe plus au salon. - + You joined this room. Vous avez rejoint ce salon. - + Rejected the knock from %1. %1 a été rejeté après avoir frappé au salon. @@ -938,12 +1127,12 @@ Exemple : https ://monserveur.example.com :8787 %1 left after having already left! This is a leave event after the user already left and shouldn't happen apart from state resets - %1 a quitté le salon après l'avoir déjà quitté ! + %1 a quitté le salon après l'avoir déjà quitté ! Reason: %1 - Raison : %1 + Raison : %1 @@ -954,17 +1143,17 @@ Exemple : https ://monserveur.example.com :8787 TimelineRow - + React Réagir - + Reply Répondre - + Options Options @@ -972,63 +1161,63 @@ Exemple : https ://monserveur.example.com :8787 TimelineView - + React Réagir - + Reply Réponse - + Read receipts Accusés de lecture - + Mark as read Marquer comme lu - + View raw message Voir le message brut - + View decrypted raw message Voir le message déchiffré brut - + Redact message Effacer le message - + Save as Enregistrer sous - + No room open Aucun salon ouvert - + Back to room list Revenir à la liste des salons - + No room selected Pas de salon sélectionné - + Room options Options du salon @@ -1038,26 +1227,34 @@ Exemple : https ://monserveur.example.com :8787 Inviter des utilisateurs - + Members Membres - + Leave room Quitter le salon - + Settings Paramètres - + Close Fermer + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1091,7 +1288,7 @@ Exemple : https ://monserveur.example.com :8787 Status: - Statut : + Statut : @@ -1114,10 +1311,33 @@ Exemple : https ://monserveur.example.com :8787 Hors ligne + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray Réduire à la barre des tâches @@ -1137,12 +1357,12 @@ Exemple : https ://monserveur.example.com :8787 Avatars circulaires - + CALLS APPELS - + Keep the application running in the background after closing the client window. Conserver l'application en arrière plan après la fermeture de la fenêtre du client. @@ -1354,7 +1574,7 @@ Cela met l'application en évidence dans la barre des tâches.CHIFFREMENT - + GENERAL GÉNÉRAL @@ -1364,7 +1584,7 @@ Cela met l'application en évidence dans la barre des tâches.INTERFACE - + Emoji Font Family Nom de Police Emoji @@ -1396,7 +1616,7 @@ Cela met l'application en évidence dans la barre des tâches. Enter the passphrase to decrypt the file: - Entrez la clé secrète pour déchiffrer le fichier  : + Entrez la clé secrète pour déchiffrer le fichier  : @@ -1407,7 +1627,7 @@ Cela met l'application en évidence dans la barre des tâches. Enter passphrase to encrypt your session keys: - Entrez une clé secrète pour chiffrer vos clés de session  : + Entrez une clé secrète pour chiffrer vos clés de session  : @@ -1415,6 +1635,34 @@ Cela met l'application en évidence dans la barre des tâches.Fichier où sauvegarder les clés de session exportées + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + Annuler + + WelcomePage @@ -1765,7 +2013,7 @@ attendant que la vérification des appareils soit opérationnelle. Failed to enable encryption: %1 - Échec de l'activation du chiffrement  : %1 + Échec de l'activation du chiffrement  : %1 @@ -1785,13 +2033,13 @@ attendant que la vérification des appareils soit opérationnelle. Error while reading file: %1 - Erreur lors de la lecture du fichier  : %1 + Erreur lors de la lecture du fichier  : %1 Failed to upload image: %s - Échec de l'envoi de l'image  : %s + Échec de l'envoi de l'image  : %s @@ -1824,7 +2072,7 @@ attendant que la vérification des appareils soit opérationnelle. Do you really want to invite %1 (%2) to a direct chat? - Voulez-vous vraiment inviter %1 (%2) dans un chat privé  ? + Voulez-vous vraiment inviter %1 (%2) dans un chat privé  ? @@ -1940,12 +2188,12 @@ attendant que la vérification des appareils soit opérationnelle. You: %1 - Vous  : %1 + Vous  : %1 %1: %2 - %1  : %2 + %1  : %2 diff --git a/resources/langs/nheko_it.ts b/resources/langs/nheko_it.ts index 4b9c32d4..1c71b43e 100644 --- a/resources/langs/nheko_it.ts +++ b/resources/langs/nheko_it.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + Annulla + + Cache - + You joined this room. Sei entrato in questa stanza. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 Impossibile invitare l'utente: %1 @@ -209,6 +255,29 @@ (comunità) + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search - + People @@ -281,10 +350,33 @@ Bandiere + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted Criptato @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- Evento Criptato (Chiavi per la decriptazione non trovate) -- + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. -- Errore di Decrittazione (impossibile recuperare le chiavi megolm dal DB) -- - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. -- Errore di Decrittazione (%1) -- - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. -- Evento Criptato (Tipo di evento ignoto) -- @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + Chiudi + + InviteeItem @@ -447,18 +575,18 @@ Esempio: https://server.mio:8787 MessageDelegate - - + + redacted oscurato - + Encryption enabled Crittografia abilitata - + room name changed to: %1 nome della stanza cambiato in: %1 @@ -468,7 +596,7 @@ Esempio: https://server.mio:8787 nome della stanza rimosso - + topic changed to: %1 argomento cambiato in: %1 @@ -478,41 +606,84 @@ Esempio: https://server.mio:8787 argomento rimosso - + %1 created and configured room: %2 %1 creato e configurata stanza: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + %1 answered the call. - + %1 ended the call. - + Negotiating call... + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + Annulla + + + + Deny + + + + + Start verification + + + + + Accept + Accetta + + Placeholder @@ -600,7 +771,7 @@ Esempio: https://server.mio:8787 RoomInfo - + no version stored nessuna versione memorizzata @@ -701,26 +872,44 @@ Esempio: https://server.mio:8787 StatusIndicator - + Failed Fallito - + Sent Inviato - + Received Ricevuto - + Read Letto + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + Chiudi + + TextInputWidget @@ -745,7 +934,7 @@ Esempio: https://server.mio:8787 Emoji - + Select a file Seleziona un file @@ -755,7 +944,7 @@ Esempio: https://server.mio:8787 Tutti i file (*) - + Place a call @@ -773,20 +962,20 @@ Esempio: https://server.mio:8787 TimelineModel - + Message redaction failed: %1 Oscuramento del messaggio fallito: %1 - + - + Failed to encrypt event, sending aborted! - + Save image Salva immagine @@ -925,12 +1114,12 @@ Esempio: https://server.mio:8787 %1 ha oscurato la sua bussata. - + You joined this room. Sei entrato in questa stanza. - + Rejected the knock from %1. Rifiutata la bussata di %1. @@ -954,17 +1143,17 @@ Esempio: https://server.mio:8787 TimelineRow - + React - + Reply Rispondi - + Options Opzioni @@ -972,63 +1161,63 @@ Esempio: https://server.mio:8787 TimelineView - + React - + Reply Risposta - + Read receipts Leggi le ricevute - + Mark as read Segna come letto - + View raw message Mostra il messaggio grezzo - + View decrypted raw message Mostra il messaggio grezzo decriptato - + Redact message Oscura messaggio - + Save as Salva come - + No room open Nessuna stanza aperta - + Back to room list - + No room selected - + Room options Opzioni della stanza @@ -1038,26 +1227,34 @@ Esempio: https://server.mio:8787 Invita utenti - + Members Membri - + Leave room Lascia la stanza - + Settings Impostazioni - + Close Chiudi + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1114,10 +1311,33 @@ Esempio: https://server.mio:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray Minimizza nella tray @@ -1137,12 +1357,12 @@ Esempio: https://server.mio:8787 Avatar Circolari - + CALLS - + Keep the application running in the background after closing the client window. @@ -1345,7 +1565,7 @@ This usually causes the application icon in the task bar to animate in some fash CRITTOGRAFIA - + GENERAL GENERALE @@ -1355,7 +1575,7 @@ This usually causes the application icon in the task bar to animate in some fash INTERFACCIA - + Emoji Font Family Famiglia dei caratteri delle Emoji @@ -1406,6 +1626,34 @@ This usually causes the application icon in the task bar to animate in some fash File ove salvare le chiavi di sessione esportate + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + Annulla + + WelcomePage diff --git a/resources/langs/nheko_ja.ts b/resources/langs/nheko_ja.ts index 79fdd9a4..4c53bab0 100644 --- a/resources/langs/nheko_ja.ts +++ b/resources/langs/nheko_ja.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + キャンセル + + Cache - + You joined this room. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 ユーザーを招待できませんでした: %1 @@ -209,6 +255,29 @@ (コミュニティー) + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search - + People @@ -281,10 +350,33 @@ + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted 暗号化されています @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. -- 暗号化イベント (復号鍵が見つかりません) -- + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. -- 復号エラー (データベースからmegolm鍵を取得できませんでした) -- - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. -- 復号エラー (%1) -- - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. -- 暗号化イベント (不明なイベント型です) -- @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + 閉じる + + InviteeItem @@ -443,18 +571,18 @@ Example: https://server.my:8787 MessageDelegate - - + + redacted 編集済み - + Encryption enabled 暗号化が有効です - + room name changed to: %1 部屋名が変更されました: %1 @@ -464,7 +592,7 @@ Example: https://server.my:8787 部屋名が削除されました - + topic changed to: %1 話題が変更されました: %1 @@ -474,41 +602,84 @@ Example: https://server.my:8787 話題が削除されました - + %1 created and configured room: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + %1 answered the call. - + %1 ended the call. - + Negotiating call... + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + キャンセル + + + + Deny + + + + + Start verification + + + + + Accept + 容認 + + Placeholder @@ -596,7 +767,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored バージョンが保存されていません @@ -697,26 +868,44 @@ Example: https://server.my:8787 StatusIndicator - + Failed 失敗 - + Sent 送信済み - + Received 受信済み - + Read 既読 + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + 閉じる + + TextInputWidget @@ -741,7 +930,7 @@ Example: https://server.my:8787 絵文字 - + Select a file ファイルを選択 @@ -751,7 +940,7 @@ Example: https://server.my:8787 全てのファイル (*) - + Place a call @@ -769,20 +958,20 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 メッセージを編集できませんでした: %1 - + - + Failed to encrypt event, sending aborted! - + Save image 画像を保存 @@ -920,12 +1109,12 @@ Example: https://server.my:8787 %1がノックを編集しました。 - + You joined this room. - + Rejected the knock from %1. %1からのノックを拒否しました。 @@ -949,17 +1138,17 @@ Example: https://server.my:8787 TimelineRow - + React - + Reply 返信 - + Options オプション @@ -967,63 +1156,63 @@ Example: https://server.my:8787 TimelineView - + React - + Reply 返信 - + Read receipts 開封確認 - + Mark as read 既読にする - + View raw message ソースを見る - + View decrypted raw message - + Redact message メッセージを編集 - + Save as 名前を付けて保存 - + No room open 部屋が開いていません - + Back to room list - + No room selected - + Room options 部屋のオプション @@ -1033,26 +1222,34 @@ Example: https://server.my:8787 ユーザーを招待 - + Members メンバー - + Leave room 部屋を出る - + Settings 設定 - + Close 閉じる + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1109,10 +1306,33 @@ Example: https://server.my:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray トレイへ最小化 @@ -1132,12 +1352,12 @@ Example: https://server.my:8787 円形アバター - + CALLS - + Keep the application running in the background after closing the client window. @@ -1340,7 +1560,7 @@ This usually causes the application icon in the task bar to animate in some fash 暗号化 - + GENERAL 全般 @@ -1350,7 +1570,7 @@ This usually causes the application icon in the task bar to animate in some fash - + Emoji Font Family @@ -1401,6 +1621,34 @@ This usually causes the application icon in the task bar to animate in some fash エクスポートされたセッション鍵を保存するファイル + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + キャンセル + + WelcomePage diff --git a/resources/langs/nheko_nl.ts b/resources/langs/nheko_nl.ts index e957c578..5cdbbe9e 100644 --- a/resources/langs/nheko_nl.ts +++ b/resources/langs/nheko_nl.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + Annuleren + + Cache - + You joined this room. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 @@ -209,6 +255,29 @@ + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search - + People @@ -281,10 +350,33 @@ Vlaggen + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + + + InviteeItem @@ -443,18 +571,18 @@ Example: https://server.my:8787 MessageDelegate - - + + redacted - + Encryption enabled - + room name changed to: %1 @@ -464,7 +592,7 @@ Example: https://server.my:8787 - + topic changed to: %1 @@ -474,41 +602,84 @@ Example: https://server.my:8787 - + %1 created and configured room: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + %1 answered the call. - + %1 ended the call. - + Negotiating call... + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + Annuleren + + + + Deny + + + + + Start verification + + + + + Accept + Accepteren + + Placeholder @@ -596,7 +767,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -697,26 +868,44 @@ Example: https://server.my:8787 StatusIndicator - + Failed - + Sent - + Received - + Read + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + + + TextInputWidget @@ -741,7 +930,7 @@ Example: https://server.my:8787 - + Select a file Kies een bestand @@ -751,7 +940,7 @@ Example: https://server.my:8787 Alle bestanden (*) - + Place a call @@ -769,20 +958,20 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 - + - + Failed to encrypt event, sending aborted! - + Save image Afbeelding opslaan @@ -921,12 +1110,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -950,17 +1139,17 @@ Example: https://server.my:8787 TimelineRow - + React - + Reply - + Options @@ -968,63 +1157,63 @@ Example: https://server.my:8787 TimelineView - + React - + Reply - + Read receipts Leesbevestigingen - + Mark as read - + View raw message - + View decrypted raw message - + Redact message - + Save as - + No room open - + Back to room list - + No room selected - + Room options @@ -1034,26 +1223,34 @@ Example: https://server.my:8787 Gebruikers uitnodigen - + Members Leden - + Leave room Kamer verlaten - + Settings Instellingen - + Close + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1110,10 +1307,33 @@ Example: https://server.my:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray Minimaliseren naar systeemvak @@ -1133,12 +1353,12 @@ Example: https://server.my:8787 - + CALLS - + Keep the application running in the background after closing the client window. @@ -1341,7 +1561,7 @@ This usually causes the application icon in the task bar to animate in some fash - + GENERAL ALGEMEEN @@ -1351,7 +1571,7 @@ This usually causes the application icon in the task bar to animate in some fash - + Emoji Font Family @@ -1402,6 +1622,34 @@ This usually causes the application icon in the task bar to animate in some fash + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + Annuleren + + WelcomePage diff --git a/resources/langs/nheko_pl.ts b/resources/langs/nheko_pl.ts index fd4657d7..4e3c1b0b 100644 --- a/resources/langs/nheko_pl.ts +++ b/resources/langs/nheko_pl.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + Anuluj + + Cache - + You joined this room. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 @@ -209,6 +255,29 @@ + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search - + People @@ -281,10 +350,33 @@ Flagi + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + + + InviteeItem @@ -443,18 +571,18 @@ Example: https://server.my:8787 MessageDelegate - - + + redacted - + Encryption enabled - + room name changed to: %1 @@ -464,7 +592,7 @@ Example: https://server.my:8787 - + topic changed to: %1 @@ -474,41 +602,84 @@ Example: https://server.my:8787 - + %1 created and configured room: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + %1 answered the call. - + %1 ended the call. - + Negotiating call... + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + Anuluj + + + + Deny + + + + + Start verification + + + + + Accept + Akceptuj + + Placeholder @@ -596,7 +767,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -697,26 +868,44 @@ Example: https://server.my:8787 StatusIndicator - + Failed - + Sent - + Received - + Read + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + + + TextInputWidget @@ -741,7 +930,7 @@ Example: https://server.my:8787 Emoji - + Select a file Wybierz plik @@ -751,7 +940,7 @@ Example: https://server.my:8787 Wszystkie pliki (*) - + Place a call @@ -769,20 +958,20 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 Redagowanie wiadomości nie powiodło się: %1 - + - + Failed to encrypt event, sending aborted! - + Save image Zapisz obraz @@ -922,12 +1111,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -951,17 +1140,17 @@ Example: https://server.my:8787 TimelineRow - + React - + Reply - + Options @@ -969,63 +1158,63 @@ Example: https://server.my:8787 TimelineView - + React - + Reply - + Read receipts Potwierdzenia przeczytania - + Mark as read - + View raw message - + View decrypted raw message - + Redact message - + Save as - + No room open - + Back to room list - + No room selected - + Room options Ustawienia pokoju @@ -1035,26 +1224,34 @@ Example: https://server.my:8787 Zaproś użytkowników - + Members Członkowie - + Leave room Opuść pokój - + Settings Ustawienia - + Close + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1111,10 +1308,33 @@ Example: https://server.my:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray Zminimalizuj do paska zadań @@ -1134,12 +1354,12 @@ Example: https://server.my:8787 - + CALLS - + Keep the application running in the background after closing the client window. @@ -1342,7 +1562,7 @@ This usually causes the application icon in the task bar to animate in some fash SZYFROWANIE - + GENERAL OGÓLNE @@ -1352,7 +1572,7 @@ This usually causes the application icon in the task bar to animate in some fash - + Emoji Font Family @@ -1403,6 +1623,34 @@ This usually causes the application icon in the task bar to animate in some fash + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + Anuluj + + WelcomePage diff --git a/resources/langs/nheko_pt_PT.ts b/resources/langs/nheko_pt_PT.ts index 66e07bb4..a4a337b1 100644 --- a/resources/langs/nheko_pt_PT.ts +++ b/resources/langs/nheko_pt_PT.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + + + Cache - + You joined this room. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 @@ -209,6 +255,29 @@ + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search - + People @@ -281,10 +350,33 @@ + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + + + InviteeItem @@ -443,18 +571,18 @@ Example: https://server.my:8787 MessageDelegate - - + + redacted - + Encryption enabled - + room name changed to: %1 @@ -464,7 +592,7 @@ Example: https://server.my:8787 - + topic changed to: %1 @@ -474,41 +602,84 @@ Example: https://server.my:8787 - + %1 created and configured room: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + Negotiating call... - + %1 answered the call. - + %1 ended the call. + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + + + + + Deny + + + + + Start verification + + + + + Accept + + + Placeholder @@ -596,7 +767,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -697,26 +868,44 @@ Example: https://server.my:8787 StatusIndicator - + Failed - + Sent - + Received - + Read + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + + + TextInputWidget @@ -741,7 +930,7 @@ Example: https://server.my:8787 - + Select a file @@ -751,7 +940,7 @@ Example: https://server.my:8787 - + Place a call @@ -769,20 +958,20 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 - + - + Failed to encrypt event, sending aborted! - + Save image @@ -921,12 +1110,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -950,17 +1139,17 @@ Example: https://server.my:8787 TimelineRow - + React - + Reply - + Options @@ -968,63 +1157,63 @@ Example: https://server.my:8787 TimelineView - + React - + Reply - + Read receipts - + Mark as read - + View raw message - + View decrypted raw message - + Redact message - + Save as - + No room open - + Back to room list - + No room selected - + Room options @@ -1034,26 +1223,34 @@ Example: https://server.my:8787 - + Members - + Leave room - + Settings - + Close + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1110,10 +1307,33 @@ Example: https://server.my:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray @@ -1133,12 +1353,12 @@ Example: https://server.my:8787 - + CALLS - + Keep the application running in the background after closing the client window. @@ -1341,7 +1561,7 @@ This usually causes the application icon in the task bar to animate in some fash - + GENERAL @@ -1351,7 +1571,7 @@ This usually causes the application icon in the task bar to animate in some fash - + Emoji Font Family @@ -1402,6 +1622,34 @@ This usually causes the application icon in the task bar to animate in some fash + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + + + WelcomePage diff --git a/resources/langs/nheko_ro.ts b/resources/langs/nheko_ro.ts index 9468bb28..30476860 100644 --- a/resources/langs/nheko_ro.ts +++ b/resources/langs/nheko_ro.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + + + Cache - + You joined this room. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 @@ -209,6 +255,29 @@ + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search - + People @@ -281,10 +350,33 @@ + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + + + InviteeItem @@ -443,18 +571,18 @@ Example: https://server.my:8787 MessageDelegate - - + + redacted - + Encryption enabled - + room name changed to: %1 @@ -464,7 +592,7 @@ Example: https://server.my:8787 - + topic changed to: %1 @@ -474,41 +602,84 @@ Example: https://server.my:8787 - + %1 created and configured room: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + %1 answered the call. - + %1 ended the call. - + Negotiating call... + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + + + + + Deny + + + + + Start verification + + + + + Accept + + + Placeholder @@ -596,7 +767,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -697,26 +868,44 @@ Example: https://server.my:8787 StatusIndicator - + Failed - + Sent - + Received - + Read + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + + + TextInputWidget @@ -741,7 +930,7 @@ Example: https://server.my:8787 - + Select a file @@ -751,7 +940,7 @@ Example: https://server.my:8787 - + Place a call @@ -769,20 +958,20 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 - + - + Failed to encrypt event, sending aborted! - + Save image @@ -922,12 +1111,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -951,17 +1140,17 @@ Example: https://server.my:8787 TimelineRow - + React - + Reply - + Options @@ -969,63 +1158,63 @@ Example: https://server.my:8787 TimelineView - + React - + Reply - + Read receipts - + Mark as read - + View raw message - + View decrypted raw message - + Redact message - + Save as - + No room open - + Back to room list - + No room selected - + Room options @@ -1035,26 +1224,34 @@ Example: https://server.my:8787 - + Members - + Leave room - + Settings - + Close + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1111,10 +1308,33 @@ Example: https://server.my:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray @@ -1134,12 +1354,12 @@ Example: https://server.my:8787 - + CALLS - + Keep the application running in the background after closing the client window. @@ -1342,7 +1562,7 @@ This usually causes the application icon in the task bar to animate in some fash - + GENERAL @@ -1352,7 +1572,7 @@ This usually causes the application icon in the task bar to animate in some fash - + Emoji Font Family @@ -1403,6 +1623,34 @@ This usually causes the application icon in the task bar to animate in some fash + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + + + WelcomePage diff --git a/resources/langs/nheko_ru.ts b/resources/langs/nheko_ru.ts index 95cef767..5625d591 100644 --- a/resources/langs/nheko_ru.ts +++ b/resources/langs/nheko_ru.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + + + Cache - + You joined this room. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 @@ -209,6 +255,29 @@ (сообщество) + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search - + People @@ -281,10 +350,33 @@ + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + Закрыть + + InviteeItem @@ -443,18 +571,18 @@ Example: https://server.my:8787 MessageDelegate - - + + redacted - + Encryption enabled - + room name changed to: %1 @@ -464,7 +592,7 @@ Example: https://server.my:8787 - + topic changed to: %1 @@ -474,41 +602,84 @@ Example: https://server.my:8787 - + %1 created and configured room: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + %1 answered the call. - + %1 ended the call. - + Negotiating call... + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + + + + + Deny + + + + + Start verification + + + + + Accept + Принять + + Placeholder @@ -596,7 +767,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -697,26 +868,44 @@ Example: https://server.my:8787 StatusIndicator - + Failed - + Sent - + Received - + Read + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + Закрыть + + TextInputWidget @@ -741,7 +930,7 @@ Example: https://server.my:8787 - + Select a file Выберите файл @@ -751,7 +940,7 @@ Example: https://server.my:8787 Все файлы (*) - + Place a call @@ -769,20 +958,20 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 Ошибка редактирования сообщения: %1 - + - + Failed to encrypt event, sending aborted! - + Save image Сохранить изображение @@ -922,12 +1111,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -951,17 +1140,17 @@ Example: https://server.my:8787 TimelineRow - + React - + Reply - + Options @@ -969,63 +1158,63 @@ Example: https://server.my:8787 TimelineView - + React - + Reply - + Read receipts Подтверждать прочтение - + Mark as read - + View raw message - + View decrypted raw message - + Redact message - + Save as - + No room open - + Back to room list - + No room selected - + Room options Настройки комнаты @@ -1035,26 +1224,34 @@ Example: https://server.my:8787 Пригласить пользователей - + Members Участники - + Leave room Покинуть комнату - + Settings Настройки - + Close Закрыть + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1111,10 +1308,33 @@ Example: https://server.my:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray Сворачивать в системную панель @@ -1134,12 +1354,12 @@ Example: https://server.my:8787 - + CALLS - + Keep the application running in the background after closing the client window. @@ -1342,7 +1562,7 @@ This usually causes the application icon in the task bar to animate in some fash ШИФРОВАНИЕ - + GENERAL ГЛАВНОЕ @@ -1352,7 +1572,7 @@ This usually causes the application icon in the task bar to animate in some fash - + Emoji Font Family @@ -1404,6 +1624,34 @@ This usually causes the application icon in the task bar to animate in some fash Файл для сохранения экспортированных ключей сеанса + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + + + WelcomePage diff --git a/resources/langs/nheko_si.ts b/resources/langs/nheko_si.ts index d490b4d1..b53bec5d 100644 --- a/resources/langs/nheko_si.ts +++ b/resources/langs/nheko_si.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + + + Cache - + You joined this room. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 @@ -209,6 +255,29 @@ + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search - + People @@ -281,10 +350,33 @@ + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + + + InviteeItem @@ -443,18 +571,18 @@ Example: https://server.my:8787 MessageDelegate - - + + redacted - + Encryption enabled - + room name changed to: %1 @@ -464,7 +592,7 @@ Example: https://server.my:8787 - + topic changed to: %1 @@ -474,41 +602,84 @@ Example: https://server.my:8787 - + %1 created and configured room: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + %1 answered the call. - + %1 ended the call. - + Negotiating call... + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + + + + + Deny + + + + + Start verification + + + + + Accept + + + Placeholder @@ -596,7 +767,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -697,26 +868,44 @@ Example: https://server.my:8787 StatusIndicator - + Failed - + Sent - + Received - + Read + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + + + TextInputWidget @@ -741,7 +930,7 @@ Example: https://server.my:8787 - + Select a file @@ -751,7 +940,7 @@ Example: https://server.my:8787 - + Place a call @@ -769,20 +958,20 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 - + - + Failed to encrypt event, sending aborted! - + Save image @@ -921,12 +1110,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -950,17 +1139,17 @@ Example: https://server.my:8787 TimelineRow - + React - + Reply - + Options @@ -968,63 +1157,63 @@ Example: https://server.my:8787 TimelineView - + React - + Reply - + Read receipts - + Mark as read - + View raw message - + View decrypted raw message - + Redact message - + Save as - + No room open - + Back to room list - + No room selected - + Room options @@ -1034,26 +1223,34 @@ Example: https://server.my:8787 - + Members - + Leave room - + Settings - + Close + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1110,10 +1307,33 @@ Example: https://server.my:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray @@ -1133,12 +1353,12 @@ Example: https://server.my:8787 - + CALLS - + Keep the application running in the background after closing the client window. @@ -1341,7 +1561,7 @@ This usually causes the application icon in the task bar to animate in some fash - + GENERAL @@ -1351,7 +1571,7 @@ This usually causes the application icon in the task bar to animate in some fash - + Emoji Font Family @@ -1402,6 +1622,34 @@ This usually causes the application icon in the task bar to animate in some fash + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + + + WelcomePage diff --git a/resources/langs/nheko_zh_CN.ts b/resources/langs/nheko_zh_CN.ts index e4927ff6..ae7a871a 100644 --- a/resources/langs/nheko_zh_CN.ts +++ b/resources/langs/nheko_zh_CN.ts @@ -1,10 +1,56 @@ + + ActiveCallBar + + + Initiating... + + + + + Calling... + + + + + Connecting... + + + + + Unmute Mic + + + + + Mute Mic + + + + + AwaitingVerificationConfirmation + + + Awaiting Confirmation + + + + + Waiting for other side to complete verification. + + + + + Cancel + 取消 + + Cache - + You joined this room. @@ -12,7 +58,7 @@ ChatPage - + Failed to invite user: %1 @@ -209,6 +255,29 @@ + + DigitVerification + + + Verification Code + + + + + Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EditModal @@ -235,13 +304,13 @@ EmojiPicker - - + + Search - + People @@ -281,10 +350,33 @@ Flags + + EmojiVerification + + + Verification Code + + + + + Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification! + + + + + They do not match! + + + + + They match! + + + EncryptionIndicator - + Encrypted @@ -297,25 +389,27 @@ EventStore - + -- Encrypted Event (No keys found for decryption) -- Placeholder, when the message was not decrypted yet or can't be decrypted. + -- Decryption Error (failed to retrieve megolm keys from db) -- Placeholder, when the message can't be decrypted, because the DB access failed. - + + -- Decryption Error (%1) -- Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1. - + -- Encrypted Event (Unknown event type) -- Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet. @@ -331,6 +425,40 @@ + + Failed + + + Verification failed + + + + + Other client does not support our verification protocol. + + + + + Key mismatch detected! + + + + + + Device verification timed out. + + + + + Other party canceled the verification. + + + + + Close + + + InviteeItem @@ -443,18 +571,18 @@ Example: https://server.my:8787 MessageDelegate - - + + redacted - + Encryption enabled - + room name changed to: %1 @@ -464,7 +592,7 @@ Example: https://server.my:8787 - + topic changed to: %1 @@ -474,41 +602,84 @@ Example: https://server.my:8787 - + %1 created and configured room: %2 - + %1 placed a voice call. - + %1 placed a video call. - + %1 placed a call. - + %1 answered the call. - + %1 ended the call. - + Negotiating call... + + NewVerificationRequest + + + Send Device Verification Request + + + + + Recieved Device Verification Request + + + + + To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device. + + + + + The device was requested to be verified + + + + + Cancel + 取消 + + + + Deny + + + + + Start verification + + + + + Accept + 接受 + + Placeholder @@ -596,7 +767,7 @@ Example: https://server.my:8787 RoomInfo - + no version stored @@ -697,26 +868,44 @@ Example: https://server.my:8787 StatusIndicator - + Failed - + Sent - + Received - + Read + + Success + + + Successful Verification + + + + + Verification successful! Both sides verified their devices! + + + + + Close + + + TextInputWidget @@ -741,7 +930,7 @@ Example: https://server.my:8787 - + Select a file 选择一个文件 @@ -751,7 +940,7 @@ Example: https://server.my:8787 所有文件(*) - + Place a call @@ -769,20 +958,20 @@ Example: https://server.my:8787 TimelineModel - + Message redaction failed: %1 删除消息失败:%1 - + - + Failed to encrypt event, sending aborted! - + Save image 保存图像 @@ -920,12 +1109,12 @@ Example: https://server.my:8787 - + You joined this room. - + Rejected the knock from %1. @@ -949,17 +1138,17 @@ Example: https://server.my:8787 TimelineRow - + React - + Reply - + Options @@ -967,63 +1156,63 @@ Example: https://server.my:8787 TimelineView - + React - + Reply - + Read receipts 阅读回执 - + Mark as read - + View raw message - + View decrypted raw message - + Redact message - + Save as - + No room open - + Back to room list - + No room selected - + Room options 聊天室选项 @@ -1033,26 +1222,34 @@ Example: https://server.my:8787 邀请用户 - + Members 成员 - + Leave room 离开聊天室 - + Settings 设置 - + Close + + TimelineViewManager + + + No share room with this user found. Create an encrypted room with this user and try again. + + + TrayIcon @@ -1109,10 +1306,33 @@ Example: https://server.my:8787 + + UserProfile + + + Verify + + + + + Ban the user + + + + + Start a private chat + + + + + Kick the user + + + UserSettingsPage - + Minimize to tray 最小化至托盘 @@ -1132,12 +1352,12 @@ Example: https://server.my:8787 - + CALLS - + Keep the application running in the background after closing the client window. @@ -1340,7 +1560,7 @@ This usually causes the application icon in the task bar to animate in some fash 加密 - + GENERAL 通用 @@ -1350,7 +1570,7 @@ This usually causes the application icon in the task bar to animate in some fash - + Emoji Font Family @@ -1401,6 +1621,34 @@ This usually causes the application icon in the task bar to animate in some fash 保存导出的会话密钥的文件 + + Waiting + + + Waiting for other party + + + + + Waiting for other side to accept the verification request. + + + + + Waiting for other side to continue the verification request. + + + + + Waiting for other side to complete the verification request. + + + + + Cancel + 取消 + + WelcomePage -- cgit 1.5.1 From d075a90024388913e81c6c40607482252057d71a Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Mon, 12 Oct 2020 22:05:55 +0200 Subject: Fix emoji filter losing focus --- resources/qml/emoji/EmojiPicker.qml | 1 + 1 file changed, 1 insertion(+) (limited to 'resources') diff --git a/resources/qml/emoji/EmojiPicker.qml b/resources/qml/emoji/EmojiPicker.qml index 3a5ee57a..0e277415 100644 --- a/resources/qml/emoji/EmojiPicker.qml +++ b/resources/qml/emoji/EmojiPicker.qml @@ -59,6 +59,7 @@ Popup { cellHeight: 52 boundsBehavior: Flickable.StopAtBounds clip: true + currentIndex: -1 // prevent sorting from stealing focus // Individual emoji delegate: AbstractButton { -- cgit 1.5.1 From a0c2a174eaf1446e8ed42a2e396c1bb9ce885b7e Mon Sep 17 00:00:00 2001 From: kamathmanu Date: Tue, 13 Oct 2020 16:24:42 -0400 Subject: Display filename on mouse hover --- resources/qml/delegates/ImageMessage.qml | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'resources') diff --git a/resources/qml/delegates/ImageMessage.qml b/resources/qml/delegates/ImageMessage.qml index e2c78fbe..8307bdd6 100644 --- a/resources/qml/delegates/ImageMessage.qml +++ b/resources/qml/delegates/ImageMessage.qml @@ -31,11 +31,40 @@ Item { fillMode: Image.PreserveAspectFit MouseArea { + id: mouseArea enabled: model.data.type == MtxEvent.ImageMessage && img.status == Image.Ready + hoverEnabled: true anchors.fill: parent onClicked: TimelineManager.openImageOverlay(model.data.url, model.data.id) } - } + Item { + id: overlay + + anchors.fill: parent + visible: mouseArea.containsMouse + + Rectangle { + id: container + width: parent.width + implicitHeight: imgcaption.implicitHeight + anchors.bottom: overlay.bottom + color: "black" + opacity: 0.75 + + Text { + id: imgcaption + anchors.fill: parent + elide: Text.ElideMiddle + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + // See this MSC: https://github.com/matrix-org/matrix-doc/pull/2530 + text: model.data.filename ? model.data.filename : model.data.body + font.pointSize: 11 + color: "white" + } + } + } + } } -- cgit 1.5.1 From 70b5e1e08eb80dd54b15789cf85632aa8a74cf81 Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 13 Oct 2020 23:19:42 -0400 Subject: Translated using Weblate (Estonian) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 90.2% (363 of 402 strings) Co-authored-by: Priit Jõerüüt Translate-URL: https://weblate.nheko.im/projects/nheko/nheko-master/et/ Translation: Nheko/nheko --- resources/langs/nheko_et.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'resources') diff --git a/resources/langs/nheko_et.ts b/resources/langs/nheko_et.ts index b13e16b6..4804f797 100644 --- a/resources/langs/nheko_et.ts +++ b/resources/langs/nheko_et.ts @@ -456,7 +456,7 @@ Close - Sulge + Sulge @@ -681,7 +681,7 @@ Näiteks: https://server.minu:8787 Accept - Nõustu + Nõustu @@ -907,7 +907,7 @@ Näiteks: https://server.minu:8787 Close - Sulge + Sulge @@ -1659,7 +1659,7 @@ See tavaliselt tähendab, et rakenduse ikoon tegumiribal annab mingit sorti anim Cancel - + Tühista -- cgit 1.5.1 From e3c665661393b7495d275bc23fb68a158c5df3fb Mon Sep 17 00:00:00 2001 From: kamathmanu Date: Wed, 14 Oct 2020 18:07:09 -0400 Subject: Avoid hardcoded font size --- resources/qml/delegates/ImageMessage.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'resources') diff --git a/resources/qml/delegates/ImageMessage.qml b/resources/qml/delegates/ImageMessage.qml index 8307bdd6..3f6d9951 100644 --- a/resources/qml/delegates/ImageMessage.qml +++ b/resources/qml/delegates/ImageMessage.qml @@ -61,10 +61,10 @@ Item { verticalAlignment: Text.AlignVCenter // See this MSC: https://github.com/matrix-org/matrix-doc/pull/2530 text: model.data.filename ? model.data.filename : model.data.body - font.pointSize: 11 color: "white" } } } + } } -- cgit 1.5.1 From e1c4f7d516b2096c5b133fb7610a8a83755503a0 Mon Sep 17 00:00:00 2001 From: kamathmanu Date: Thu, 15 Oct 2020 11:52:49 -0400 Subject: Make Text element a sibling of the Rectangle to avoid the text from depending on the rectangle's opacity property. Switch to Nheko theme colors --- resources/qml/delegates/ImageMessage.qml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'resources') diff --git a/resources/qml/delegates/ImageMessage.qml b/resources/qml/delegates/ImageMessage.qml index 3f6d9951..6ac5ee15 100644 --- a/resources/qml/delegates/ImageMessage.qml +++ b/resources/qml/delegates/ImageMessage.qml @@ -43,28 +43,28 @@ Item { anchors.fill: parent visible: mouseArea.containsMouse - + Rectangle { id: container + width: parent.width implicitHeight: imgcaption.implicitHeight anchors.bottom: overlay.bottom - color: "black" + color: colors.window opacity: 0.75 + } - Text { - id: imgcaption - - anchors.fill: parent - elide: Text.ElideMiddle - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - // See this MSC: https://github.com/matrix-org/matrix-doc/pull/2530 - text: model.data.filename ? model.data.filename : model.data.body - color: "white" - } + Text { + id: imgcaption + + anchors.fill: container + elide: Text.ElideMiddle + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + // See this MSC: https://github.com/matrix-org/matrix-doc/pull/2530 + text: model.data.filename ? model.data.filename : model.data.body + color: colors.text } } - } } -- cgit 1.5.1 From b3a7f0b88807a1d3e2a4d7acf121db0aedfc157f Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sun, 18 Oct 2020 22:30:42 +0200 Subject: Hide room name, if not loaded yet --- resources/qml/TimelineView.qml | 2 +- resources/qml/delegates/ImageMessage.qml | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) (limited to 'resources') diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml index ab0148e9..1f5f406a 100644 --- a/resources/qml/TimelineView.qml +++ b/resources/qml/TimelineView.qml @@ -159,6 +159,7 @@ Page { } ColumnLayout { + visible: TimelineManager.timeline != null anchors.fill: parent Rectangle { @@ -287,7 +288,6 @@ Page { property int delegateMaxWidth: (Settings.timelineMaxWidth > 100 && (parent.width - Settings.timelineMaxWidth) > scrollbar.width * 2) ? Settings.timelineMaxWidth : (parent.width - scrollbar.width * 2) - visible: TimelineManager.timeline != null cacheBuffer: 400 Layout.fillWidth: true Layout.fillHeight: true diff --git a/resources/qml/delegates/ImageMessage.qml b/resources/qml/delegates/ImageMessage.qml index 6ac5ee15..5c3dac95 100644 --- a/resources/qml/delegates/ImageMessage.qml +++ b/resources/qml/delegates/ImageMessage.qml @@ -32,6 +32,7 @@ Item { MouseArea { id: mouseArea + enabled: model.data.type == MtxEvent.ImageMessage && img.status == Image.Ready hoverEnabled: true anchors.fill: parent @@ -40,23 +41,23 @@ Item { Item { id: overlay - + anchors.fill: parent visible: mouseArea.containsMouse Rectangle { id: container - + width: parent.width implicitHeight: imgcaption.implicitHeight - anchors.bottom: overlay.bottom + anchors.bottom: overlay.bottom color: colors.window opacity: 0.75 } Text { id: imgcaption - + anchors.fill: container elide: Text.ElideMiddle horizontalAlignment: Text.AlignHCenter @@ -65,6 +66,9 @@ Item { text: model.data.filename ? model.data.filename : model.data.body color: colors.text } + } + } + } -- cgit 1.5.1 From e959443831c35f5e5478c049f007b961e55356c0 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Thu, 22 Oct 2020 21:02:39 +0200 Subject: Speed up rendering the timeline by a LOT by reducing clipping Sadly still required for replies, otherwise this would be perfect. --- resources/qml/delegates/NoticeMessage.qml | 2 +- resources/qml/delegates/TextMessage.qml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'resources') diff --git a/resources/qml/delegates/NoticeMessage.qml b/resources/qml/delegates/NoticeMessage.qml index d9a7a3e7..67a69055 100644 --- a/resources/qml/delegates/NoticeMessage.qml +++ b/resources/qml/delegates/NoticeMessage.qml @@ -2,5 +2,5 @@ TextMessage { font.italic: true color: colors.buttonText height: isReply ? Math.min(chat.height / 8, implicitHeight) : undefined - clip: true + clip: isReply } diff --git a/resources/qml/delegates/TextMessage.qml b/resources/qml/delegates/TextMessage.qml index 69f2f0e3..8a1c116e 100644 --- a/resources/qml/delegates/TextMessage.qml +++ b/resources/qml/delegates/TextMessage.qml @@ -7,6 +7,6 @@ MatrixText { text: "" + formatted.replace("
", "
")
     width: parent ? parent.width : undefined
     height: isReply ? Math.round(Math.min(timelineRoot.height / 8, implicitHeight)) : undefined
-    clip: true
+    clip: isReply
     font.pointSize: (Settings.enlargeEmojiOnlyMessages && model.data.isOnlyEmoji > 0 && model.data.isOnlyEmoji < 4) ? Settings.fontSize * 3 : Settings.fontSize
 }
-- 
cgit 1.5.1


From 53734607cf93d626c16f1b2ae72a7dea24d8460e Mon Sep 17 00:00:00 2001
From: Nicolas Werner 
Date: Sat, 24 Oct 2020 14:42:18 +0200
Subject: Fix copying text

---
 resources/qml/MatrixText.qml | 2 --
 1 file changed, 2 deletions(-)

(limited to 'resources')

diff --git a/resources/qml/MatrixText.qml b/resources/qml/MatrixText.qml
index 6c96a539..f1ccf561 100644
--- a/resources/qml/MatrixText.qml
+++ b/resources/qml/MatrixText.qml
@@ -7,7 +7,6 @@ TextEdit {
     readOnly: true
     wrapMode: Text.Wrap
     selectByMouse: true
-    activeFocusOnPress: false
     color: colors.text
     onLinkActivated: {
         if (/^https:\/\/matrix.to\/#\/(@.*)$/.test(link)) {
@@ -29,7 +28,6 @@ TextEdit {
         id: ma
 
         anchors.fill: parent
-        propagateComposedEvents: true
         acceptedButtons: Qt.NoButton
         cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
     }
-- 
cgit 1.5.1


From 3172811ca784c7bdaa02ad4e0a59a8f0ef381280 Mon Sep 17 00:00:00 2001
From: Nicolas Werner 
Date: Sat, 24 Oct 2020 16:21:00 +0200
Subject: Add mobile mode which improves scrolling

---
 resources/qml/MatrixText.qml |  2 +-
 src/UserSettingsPage.cpp     | 21 +++++++++++++++++++++
 src/UserSettingsPage.h       |  6 ++++++
 3 files changed, 28 insertions(+), 1 deletion(-)

(limited to 'resources')

diff --git a/resources/qml/MatrixText.qml b/resources/qml/MatrixText.qml
index f1ccf561..a5781c73 100644
--- a/resources/qml/MatrixText.qml
+++ b/resources/qml/MatrixText.qml
@@ -6,7 +6,7 @@ TextEdit {
     textFormat: TextEdit.RichText
     readOnly: true
     wrapMode: Text.Wrap
-    selectByMouse: true
+    selectByMouse: !Settings.mobileMode
     color: colors.text
     onLinkActivated: {
         if (/^https:\/\/matrix.to\/#\/(@.*)$/.test(link)) {
diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp
index 5558b246..6fd31de3 100644
--- a/src/UserSettingsPage.cpp
+++ b/src/UserSettingsPage.cpp
@@ -75,6 +75,7 @@ UserSettings::load()
         decryptSidebar_      = settings.value("user/decrypt_sidebar", true).toBool();
         shareKeysWithTrustedUsers_ =
           settings.value("user/share_keys_with_trusted_users", true).toBool();
+        mobileMode_   = settings.value("user/mobile_mode", false).toBool();
         emojiFont_    = settings.value("user/emoji_font_family", "default").toString();
         baseFontSize_ = settings.value("user/font_size", QFont().pointSizeF()).toDouble();
         presence_ =
@@ -123,6 +124,16 @@ UserSettings::setStartInTray(bool state)
         save();
 }
 
+void
+UserSettings::setMobileMode(bool state)
+{
+        if (state == mobileMode_)
+                return;
+        mobileMode_ = state;
+        emit mobileModeChanged(state);
+        save();
+}
+
 void
 UserSettings::setGroupView(bool state)
 {
@@ -389,6 +400,7 @@ UserSettings::save()
         settings.setValue("avatar_circles", avatarCircles_);
         settings.setValue("decrypt_sidebar", decryptSidebar_);
         settings.setValue("share_keys_with_trusted_users", shareKeysWithTrustedUsers_);
+        settings.setValue("mobile_mode", mobileMode_);
         settings.setValue("font_size", baseFontSize_);
         settings.setValue("typing_notifications", typingNotifications_);
         settings.setValue("minor_events", sortByImportance_);
@@ -470,6 +482,7 @@ UserSettingsPage::UserSettingsPage(QSharedPointer settings, QWidge
         desktopNotifications_      = new Toggle{this};
         alertOnNotification_       = new Toggle{this};
         useStunServer_             = new Toggle{this};
+        mobileMode_                = new Toggle{this};
         scaleFactorCombo_          = new QComboBox{this};
         fontSizeCombo_             = new QComboBox{this};
         fontSelectionCombo_        = new QFontComboBox{this};
@@ -637,6 +650,9 @@ UserSettingsPage::UserSettingsPage(QSharedPointer settings, QWidge
         formLayout_->addRow(uiLabel_);
         formLayout_->addRow(new HorizontalLine{this});
 
+        boxWrap(tr("Mobile mode"),
+                mobileMode_,
+                tr("Will prevent text selection in the timeline to make scrolling easier."));
 #if !defined(Q_OS_MAC)
         boxWrap(tr("Scale factor"),
                 scaleFactorCombo_,
@@ -728,6 +744,10 @@ UserSettingsPage::UserSettingsPage(QSharedPointer settings, QWidge
                 settings_->setStartInTray(!disabled);
         });
 
+        connect(mobileMode_, &Toggle::toggled, this, [this](bool disabled) {
+                settings_->setMobileMode(!disabled);
+        });
+
         connect(groupViewToggle_, &Toggle::toggled, this, [this](bool disabled) {
                 settings_->setGroupView(!disabled);
         });
@@ -820,6 +840,7 @@ UserSettingsPage::showEvent(QShowEvent *)
         typingNotifications_->setState(!settings_->typingNotifications());
         sortByImportance_->setState(!settings_->sortByImportance());
         timelineButtonsToggle_->setState(!settings_->buttonsInTimeline());
+        mobileMode_->setState(!settings_->mobileMode());
         readReceipts_->setState(!settings_->readReceipts());
         markdown_->setState(!settings_->markdown());
         desktopNotifications_->setState(!settings_->hasDesktopNotifications());
diff --git a/src/UserSettingsPage.h b/src/UserSettingsPage.h
index 37355602..ffe98542 100644
--- a/src/UserSettingsPage.h
+++ b/src/UserSettingsPage.h
@@ -67,6 +67,7 @@ class UserSettings : public QObject
                      decryptSidebarChanged)
         Q_PROPERTY(int timelineMaxWidth READ timelineMaxWidth WRITE setTimelineMaxWidth NOTIFY
                      timelineMaxWidthChanged)
+        Q_PROPERTY(bool mobileMode READ mobileMode WRITE setMobileMode NOTIFY mobileModeChanged)
         Q_PROPERTY(double fontSize READ fontSize WRITE setFontSize NOTIFY fontSizeChanged)
         Q_PROPERTY(QString font READ font WRITE setFontFamily NOTIFY fontChanged)
         Q_PROPERTY(
@@ -99,6 +100,7 @@ public:
         void setEnlargeEmojiOnlyMessages(bool state);
         void setTray(bool state);
         void setStartInTray(bool state);
+        void setMobileMode(bool mode);
         void setFontSize(double size);
         void setFontFamily(QString family);
         void setEmojiFontFamily(QString family);
@@ -130,6 +132,7 @@ public:
         bool typingNotifications() const { return typingNotifications_; }
         bool sortByImportance() const { return sortByImportance_; }
         bool buttonsInTimeline() const { return buttonsInTimeline_; }
+        bool mobileMode() const { return mobileMode_; }
         bool readReceipts() const { return readReceipts_; }
         bool hasDesktopNotifications() const { return hasDesktopNotifications_; }
         bool hasAlertOnNotification() const { return hasAlertOnNotification_; }
@@ -163,6 +166,7 @@ signals:
         void avatarCirclesChanged(bool state);
         void decryptSidebarChanged(bool state);
         void timelineMaxWidthChanged(int state);
+        void mobileModeChanged(bool mode);
         void fontSizeChanged(double state);
         void fontChanged(QString state);
         void emojiFontChanged(QString state);
@@ -193,6 +197,7 @@ private:
         bool avatarCircles_;
         bool decryptSidebar_;
         bool shareKeysWithTrustedUsers_;
+        bool mobileMode_;
         int timelineMaxWidth_;
         double baseFontSize_;
         QString font_;
@@ -256,6 +261,7 @@ private:
         Toggle *useStunServer_;
         Toggle *decryptSidebar_;
         Toggle *shareKeysWithTrustedUsers_;
+        Toggle *mobileMode_;
         QLabel *deviceFingerprintValue_;
         QLabel *deviceIdValue_;
 
-- 
cgit 1.5.1


From 3a0e55e97b667feaf3d9e9e0296664db246d4033 Mon Sep 17 00:00:00 2001
From: Nicolas Werner 
Date: Mon, 26 Oct 2020 13:50:44 +0100
Subject: Qml message input mockup

---
 resources/qml/Avatar.qml                         |   2 +-
 resources/qml/Reactions.qml                      |   2 +-
 resources/qml/TimelineRow.qml                    |   2 +-
 resources/qml/TimelineView.qml                   | 519 ++++++++++++++---------
 resources/qml/delegates/FileMessage.qml          |   2 +-
 resources/qml/delegates/Pill.qml                 |   2 +-
 resources/qml/delegates/PlayableMediaMessage.qml |   2 +-
 resources/qml/emoji/EmojiPicker.qml              |   4 +-
 src/UserSettingsPage.cpp                         |  20 +-
 9 files changed, 327 insertions(+), 228 deletions(-)

(limited to 'resources')

diff --git a/resources/qml/Avatar.qml b/resources/qml/Avatar.qml
index a247bffe..34b029a6 100644
--- a/resources/qml/Avatar.qml
+++ b/resources/qml/Avatar.qml
@@ -13,7 +13,7 @@ Rectangle {
     width: 48
     height: 48
     radius: Settings.avatarCircles ? height / 2 : 3
-    color: colors.base
+    color: colors.alternateBase
 
     Label {
         anchors.fill: parent
diff --git a/resources/qml/Reactions.qml b/resources/qml/Reactions.qml
index 6487f512..836087ef 100644
--- a/resources/qml/Reactions.qml
+++ b/resources/qml/Reactions.qml
@@ -83,7 +83,7 @@ Flow {
                 implicitWidth: reaction.implicitWidth
                 implicitHeight: reaction.implicitHeight
                 border.color: (reaction.hovered || modelData.selfReactedEvent !== '') ? colors.highlight : colors.text
-                color: modelData.selfReactedEvent !== '' ? Qt.hsla(highlightHue, highlightSat, highlightLight, 0.2) : colors.base
+                color: modelData.selfReactedEvent !== '' ? Qt.hsla(highlightHue, highlightSat, highlightLight, 0.2) : colors.window
                 border.width: 1
                 radius: reaction.height / 2
             }
diff --git a/resources/qml/TimelineRow.qml b/resources/qml/TimelineRow.qml
index 38597673..57fded90 100644
--- a/resources/qml/TimelineRow.qml
+++ b/resources/qml/TimelineRow.qml
@@ -48,7 +48,7 @@ Item {
             Reply {
                 visible: model.replyTo
                 modelData: chat.model.getDump(model.replyTo, model.id)
-                userColor: TimelineManager.userColor(modelData.userId, colors.window)
+                userColor: TimelineManager.userColor(modelData.userId, colors.base)
             }
 
             // actual message content
diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml
index 1f5f406a..3124d462 100644
--- a/resources/qml/TimelineView.qml
+++ b/resources/qml/TimelineView.qml
@@ -161,6 +161,7 @@ Page {
         ColumnLayout {
             visible: TimelineManager.timeline != null
             anchors.fill: parent
+            spacing: 0
 
             Rectangle {
                 id: topBar
@@ -168,7 +169,7 @@ Page {
                 Layout.fillWidth: true
                 implicitHeight: topLayout.height + 16
                 z: 3
-                color: colors.base
+                color: colors.window
 
                 MouseArea {
                     anchors.fill: parent
@@ -283,143 +284,156 @@ Page {
 
             }
 
-            ListView {
-                id: chat
-
-                property int delegateMaxWidth: (Settings.timelineMaxWidth > 100 && (parent.width - Settings.timelineMaxWidth) > scrollbar.width * 2) ? Settings.timelineMaxWidth : (parent.width - scrollbar.width * 2)
+            Rectangle {
+                Layout.fillWidth: true
+                height: 1
+                z: 3
+                color: colors.mid
+            }
 
-                cacheBuffer: 400
+            Rectangle {
                 Layout.fillWidth: true
                 Layout.fillHeight: true
-                model: TimelineManager.timeline
-                boundsBehavior: Flickable.StopAtBounds
-                pixelAligned: true
-                spacing: 4
-                verticalLayoutDirection: ListView.BottomToTop
-                onCountChanged: {
-                    if (atYEnd)
-                        model.currentIndex = 0;
-
-                } // Mark last event as read, since we are at the bottom
-
-                ScrollHelper {
-                    flickable: parent
-                    anchors.fill: parent
-                }
+                color: colors.base
 
-                Shortcut {
-                    sequence: StandardKey.MoveToPreviousPage
-                    onActivated: {
-                        chat.contentY = chat.contentY - chat.height / 2;
-                        chat.returnToBounds();
-                    }
-                }
+                ListView {
+                    id: chat
 
-                Shortcut {
-                    sequence: StandardKey.MoveToNextPage
-                    onActivated: {
-                        chat.contentY = chat.contentY + chat.height / 2;
-                        chat.returnToBounds();
+                    property int delegateMaxWidth: (Settings.timelineMaxWidth > 100 && (parent.width - Settings.timelineMaxWidth) > scrollbar.width * 2) ? Settings.timelineMaxWidth : (parent.width - scrollbar.width * 2)
+
+                    cacheBuffer: 400
+                    anchors.fill: parent
+                    model: TimelineManager.timeline
+                    boundsBehavior: Flickable.StopAtBounds
+                    pixelAligned: true
+                    spacing: 4
+                    verticalLayoutDirection: ListView.BottomToTop
+                    onCountChanged: {
+                        if (atYEnd)
+                            model.currentIndex = 0;
+
+                    } // Mark last event as read, since we are at the bottom
+
+                    ScrollHelper {
+                        flickable: parent
+                        anchors.fill: parent
                     }
-                }
 
-                Shortcut {
-                    sequence: StandardKey.Cancel
-                    onActivated: chat.model.reply = undefined
-                }
+                    Shortcut {
+                        sequence: StandardKey.MoveToPreviousPage
+                        onActivated: {
+                            chat.contentY = chat.contentY - chat.height / 2;
+                            chat.returnToBounds();
+                        }
+                    }
 
-                Shortcut {
-                    sequence: "Alt+Up"
-                    onActivated: chat.model.reply = chat.model.indexToId(chat.model.reply ? chat.model.idToIndex(chat.model.reply) + 1 : 0)
-                }
+                    Shortcut {
+                        sequence: StandardKey.MoveToNextPage
+                        onActivated: {
+                            chat.contentY = chat.contentY + chat.height / 2;
+                            chat.returnToBounds();
+                        }
+                    }
 
-                Shortcut {
-                    sequence: "Alt+Down"
-                    onActivated: {
-                        var idx = chat.model.reply ? chat.model.idToIndex(chat.model.reply) - 1 : -1;
-                        chat.model.reply = idx >= 0 ? chat.model.indexToId(idx) : undefined;
+                    Shortcut {
+                        sequence: StandardKey.Cancel
+                        onActivated: chat.model.reply = undefined
                     }
-                }
 
-                Component {
-                    id: userProfileComponent
+                    Shortcut {
+                        sequence: "Alt+Up"
+                        onActivated: chat.model.reply = chat.model.indexToId(chat.model.reply ? chat.model.idToIndex(chat.model.reply) + 1 : 0)
+                    }
 
-                    UserProfile {
+                    Shortcut {
+                        sequence: "Alt+Down"
+                        onActivated: {
+                            var idx = chat.model.reply ? chat.model.idToIndex(chat.model.reply) - 1 : -1;
+                            chat.model.reply = idx >= 0 ? chat.model.indexToId(idx) : undefined;
+                        }
                     }
 
-                }
+                    Component {
+                        id: userProfileComponent
 
-                section {
-                    property: "section"
-                }
+                        UserProfile {
+                        }
 
-                Component {
-                    id: sectionHeader
+                    }
 
-                    Column {
-                        property var modelData
-                        property string section
-                        property string nextSection
+                    section {
+                        property: "section"
+                    }
 
-                        topPadding: 4
-                        bottomPadding: 4
-                        spacing: 8
-                        visible: !!modelData
-                        width: parent.width
-                        height: (section.includes(" ") ? dateBubble.height + 8 + userName.height : userName.height) + 8
+                    Component {
+                        id: sectionHeader
 
-                        Label {
-                            id: dateBubble
+                        Column {
+                            property var modelData
+                            property string section
+                            property string nextSection
 
-                            anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined
-                            visible: section.includes(" ")
-                            text: chat.model.formatDateSeparator(modelData.timestamp)
-                            color: colors.text
-                            height: fontMetrics.height * 1.4
-                            width: contentWidth * 1.2
-                            horizontalAlignment: Text.AlignHCenter
-                            verticalAlignment: Text.AlignVCenter
+                            topPadding: 4
+                            bottomPadding: 4
+                            spacing: 8
+                            visible: !!modelData
+                            width: parent.width
+                            height: (section.includes(" ") ? dateBubble.height + 8 + userName.height : userName.height) + 8
+
+                            Label {
+                                id: dateBubble
+
+                                anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined
+                                visible: section.includes(" ")
+                                text: chat.model.formatDateSeparator(modelData.timestamp)
+                                color: colors.text
+                                height: fontMetrics.height * 1.4
+                                width: contentWidth * 1.2
+                                horizontalAlignment: Text.AlignHCenter
+                                verticalAlignment: Text.AlignVCenter
+
+                                background: Rectangle {
+                                    radius: parent.height / 2
+                                    color: colors.window
+                                }
 
-                            background: Rectangle {
-                                radius: parent.height / 2
-                                color: colors.base
                             }
 
-                        }
+                            Row {
+                                height: userName.height
+                                spacing: 8
 
-                        Row {
-                            height: userName.height
-                            spacing: 8
+                                Avatar {
+                                    width: avatarSize
+                                    height: avatarSize
+                                    url: chat.model.avatarUrl(modelData.userId).replace("mxc://", "image://MxcImage/")
+                                    displayName: modelData.userName
+                                    userid: modelData.userId
+
+                                    MouseArea {
+                                        anchors.fill: parent
+                                        onClicked: chat.model.openUserProfile(modelData.userId)
+                                        cursorShape: Qt.PointingHandCursor
+                                        propagateComposedEvents: true
+                                    }
 
-                            Avatar {
-                                width: avatarSize
-                                height: avatarSize
-                                url: chat.model.avatarUrl(modelData.userId).replace("mxc://", "image://MxcImage/")
-                                displayName: modelData.userName
-                                userid: modelData.userId
-
-                                MouseArea {
-                                    anchors.fill: parent
-                                    onClicked: chat.model.openUserProfile(modelData.userId)
-                                    cursorShape: Qt.PointingHandCursor
-                                    propagateComposedEvents: true
                                 }
 
-                            }
+                                Label {
+                                    id: userName
+
+                                    text: TimelineManager.escapeEmoji(modelData.userName)
+                                    color: TimelineManager.userColor(modelData.userId, colors.window)
+                                    textFormat: Text.RichText
+
+                                    MouseArea {
+                                        anchors.fill: parent
+                                        Layout.alignment: Qt.AlignHCenter
+                                        onClicked: chat.model.openUserProfile(modelData.userId)
+                                        cursorShape: Qt.PointingHandCursor
+                                        propagateComposedEvents: true
+                                    }
 
-                            Label {
-                                id: userName
-
-                                text: TimelineManager.escapeEmoji(modelData.userName)
-                                color: TimelineManager.userColor(modelData.userId, colors.window)
-                                textFormat: Text.RichText
-
-                                MouseArea {
-                                    anchors.fill: parent
-                                    Layout.alignment: Qt.AlignHCenter
-                                    onClicked: chat.model.openUserProfile(modelData.userId)
-                                    cursorShape: Qt.PointingHandCursor
-                                    propagateComposedEvents: true
                                 }
 
                             }
@@ -428,140 +442,130 @@ Page {
 
                     }
 
-                }
-
-                ScrollBar.vertical: ScrollBar {
-                    id: scrollbar
-                }
+                    ScrollBar.vertical: ScrollBar {
+                        id: scrollbar
+                    }
 
-                delegate: Item {
-                    id: wrapper
-
-                    // This would normally be previousSection, but our model's order is inverted.
-                    property bool sectionBoundary: (ListView.nextSection != "" && ListView.nextSection !== ListView.section) || model.index === chat.count - 1
-                    property Item section
-
-                    anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined
-                    width: chat.delegateMaxWidth
-                    height: section ? section.height + timelinerow.height : timelinerow.height
-                    onSectionBoundaryChanged: {
-                        if (sectionBoundary) {
-                            var properties = {
-                                "modelData": model.dump,
-                                "section": ListView.section,
-                                "nextSection": ListView.nextSection
-                            };
-                            section = sectionHeader.createObject(wrapper, properties);
-                        } else {
-                            section.destroy();
-                            section = null;
+                    delegate: Item {
+                        id: wrapper
+
+                        // This would normally be previousSection, but our model's order is inverted.
+                        property bool sectionBoundary: (ListView.nextSection != "" && ListView.nextSection !== ListView.section) || model.index === chat.count - 1
+                        property Item section
+
+                        anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined
+                        width: chat.delegateMaxWidth
+                        height: section ? section.height + timelinerow.height : timelinerow.height
+                        onSectionBoundaryChanged: {
+                            if (sectionBoundary) {
+                                var properties = {
+                                    "modelData": model.dump,
+                                    "section": ListView.section,
+                                    "nextSection": ListView.nextSection
+                                };
+                                section = sectionHeader.createObject(wrapper, properties);
+                            } else {
+                                section.destroy();
+                                section = null;
+                            }
                         }
-                    }
 
-                    TimelineRow {
-                        id: timelinerow
+                        TimelineRow {
+                            id: timelinerow
 
-                        y: section ? section.y + section.height : 0
-                    }
+                            y: section ? section.y + section.height : 0
+                        }
 
-                    Connections {
-                        function onMovementEnded() {
-                            if (y + height + 2 * chat.spacing > chat.contentY + chat.height && y < chat.contentY + chat.height)
-                                chat.model.currentIndex = index;
+                        Connections {
+                            function onMovementEnded() {
+                                if (y + height + 2 * chat.spacing > chat.contentY + chat.height && y < chat.contentY + chat.height)
+                                    chat.model.currentIndex = index;
 
+                            }
+
+                            target: chat
                         }
 
-                        target: chat
                     }
 
-                }
+                    footer: BusyIndicator {
+                        anchors.horizontalCenter: parent.horizontalCenter
+                        running: chat.model && chat.model.paginationInProgress
+                        height: 50
+                        width: 50
+                        z: 3
+                    }
 
-                footer: BusyIndicator {
-                    anchors.horizontalCenter: parent.horizontalCenter
-                    running: chat.model && chat.model.paginationInProgress
-                    height: 50
-                    width: 50
-                    z: 3
                 }
 
             }
 
             Item {
-                id: chatFooter
-
-                implicitHeight: Math.max(fontMetrics.height * 1.2, footerContent.height)
+                implicitHeight: Math.max(fontMetrics.height * 1.2, typingDisplay.height)
                 Layout.fillWidth: true
-                z: 3
 
-                Column {
-                    id: footerContent
+                Rectangle {
+                    id: typingRect
 
+                    color: colors.base
                     anchors.left: parent.left
                     anchors.right: parent.right
-                    anchors.bottom: parent.bottom
+                    height: (chat.model && chat.model.typingUsers.length > 0) ? typingDisplay.height : 0
+                    z: 3
 
-                    Rectangle {
-                        id: typingRect
+                    Label {
+                        id: typingDisplay
 
                         anchors.left: parent.left
+                        anchors.leftMargin: 10
                         anchors.right: parent.right
-                        color: (chat.model && chat.model.typingUsers.length > 0) ? colors.window : "transparent"
-                        height: typingDisplay.height
-
-                        Label {
-                            id: typingDisplay
+                        anchors.rightMargin: 10
+                        anchors.bottom: parent.bottom
+                        color: colors.text
+                        text: chat.model ? chat.model.formatTypingUsers(chat.model.typingUsers, colors.base) : ""
+                        textFormat: Text.RichText
+                    }
 
-                            anchors.left: parent.left
-                            anchors.leftMargin: 10
-                            anchors.right: parent.right
-                            anchors.rightMargin: 10
-                            color: colors.text
-                            text: chat.model ? chat.model.formatTypingUsers(chat.model.typingUsers, colors.window) : ""
-                            textFormat: Text.RichText
-                        }
+                }
 
-                    }
+            }
 
-                    Rectangle {
-                        id: replyPopup
+            Rectangle {
+                id: replyPopup
 
-                        anchors.left: parent.left
-                        anchors.right: parent.right
-                        visible: chat.model && chat.model.reply
-                        // Height of child, plus margins, plus border
-                        height: replyPreview.height + 10
-                        color: colors.base
-
-                        Reply {
-                            id: replyPreview
-
-                            anchors.left: parent.left
-                            anchors.leftMargin: 10
-                            anchors.right: closeReplyButton.left
-                            anchors.rightMargin: 20
-                            anchors.bottom: parent.bottom
-                            modelData: chat.model ? chat.model.getDump(chat.model.reply, chat.model.id) : {
-                            }
-                            userColor: TimelineManager.userColor(modelData.userId, colors.window)
-                        }
+                Layout.fillWidth: true
+                visible: chat.model && chat.model.reply
+                // Height of child, plus margins, plus border
+                implicitHeight: replyPreview.height + 10
+                color: colors.window
+                z: 3
 
-                        ImageButton {
-                            id: closeReplyButton
-
-                            anchors.right: parent.right
-                            anchors.rightMargin: 15
-                            anchors.top: replyPreview.top
-                            hoverEnabled: true
-                            width: 16
-                            height: 16
-                            image: ":/icons/icons/ui/remove-symbol.png"
-                            ToolTip.visible: closeReplyButton.hovered
-                            ToolTip.text: qsTr("Close")
-                            onClicked: chat.model.reply = undefined
-                        }
+                Reply {
+                    id: replyPreview
 
+                    anchors.left: parent.left
+                    anchors.leftMargin: 10
+                    anchors.right: closeReplyButton.left
+                    anchors.rightMargin: 20
+                    anchors.bottom: parent.bottom
+                    modelData: chat.model ? chat.model.getDump(chat.model.reply, chat.model.id) : {
                     }
+                    userColor: TimelineManager.userColor(modelData.userId, colors.window)
+                }
 
+                ImageButton {
+                    id: closeReplyButton
+
+                    anchors.right: parent.right
+                    anchors.rightMargin: 15
+                    anchors.top: replyPreview.top
+                    hoverEnabled: true
+                    width: 16
+                    height: 16
+                    image: ":/icons/icons/ui/remove-symbol.png"
+                    ToolTip.visible: closeReplyButton.hovered
+                    ToolTip.text: qsTr("Close")
+                    onClicked: chat.model.reply = undefined
                 }
 
             }
@@ -571,6 +575,99 @@ Page {
                 z: 3
             }
 
+            Rectangle {
+                Layout.fillWidth: true
+                z: 3
+                height: 1
+                color: colors.mid
+            }
+
+            Rectangle {
+                color: colors.window
+                Layout.fillWidth: true
+                Layout.preferredHeight: textInput.height
+                Layout.minimumHeight: 40
+
+                RowLayout {
+                    id: inputBar
+
+                    anchors.fill: parent
+                    spacing: 16
+
+                    ImageButton {
+                        Layout.alignment: Qt.AlignBottom
+                        hoverEnabled: true
+                        width: 22
+                        height: 22
+                        image: ":/icons/icons/ui/place-call.png"
+                        Layout.topMargin: 8
+                        Layout.bottomMargin: 8
+                        Layout.leftMargin: 16
+                    }
+
+                    ImageButton {
+                        Layout.alignment: Qt.AlignBottom
+                        hoverEnabled: true
+                        width: 22
+                        height: 22
+                        image: ":/icons/icons/ui/paper-clip-outline.png"
+                        Layout.topMargin: 8
+                        Layout.bottomMargin: 8
+                    }
+
+                    ScrollView {
+                        id: textInput
+
+                        Layout.alignment: Qt.AlignBottom
+                        Layout.maximumHeight: Window.height / 4
+                        Layout.fillWidth: true
+
+                        TextArea {
+                            placeholderText: qsTr("Write a message...")
+                            placeholderTextColor: colors.buttonText
+                            color: colors.text
+                            wrapMode: TextEdit.Wrap
+
+                            MouseArea {
+                                // workaround for wrong cursor shape on some platforms
+                                anchors.fill: parent
+                                acceptedButtons: Qt.NoButton
+                                cursorShape: Qt.IBeamCursor
+                            }
+
+                            background: Rectangle {
+                                color: colors.window
+                            }
+
+                        }
+
+                    }
+
+                    ImageButton {
+                        Layout.alignment: Qt.AlignRight | Qt.AlignBottom
+                        hoverEnabled: true
+                        width: 22
+                        height: 22
+                        image: ":/icons/icons/ui/smile.png"
+                        Layout.topMargin: 8
+                        Layout.bottomMargin: 8
+                    }
+
+                    ImageButton {
+                        Layout.alignment: Qt.AlignRight | Qt.AlignBottom
+                        hoverEnabled: true
+                        width: 22
+                        height: 22
+                        image: ":/icons/icons/ui/cursor.png"
+                        Layout.topMargin: 8
+                        Layout.bottomMargin: 8
+                        Layout.rightMargin: 16
+                    }
+
+                }
+
+            }
+
         }
 
     }
diff --git a/resources/qml/delegates/FileMessage.qml b/resources/qml/delegates/FileMessage.qml
index c6f213ee..ffd1e82b 100644
--- a/resources/qml/delegates/FileMessage.qml
+++ b/resources/qml/delegates/FileMessage.qml
@@ -65,7 +65,7 @@ Item {
     }
 
     Rectangle {
-        color: colors.dark
+        color: colors.alternateBase
         z: -1
         radius: 10
         height: row.height + 24
diff --git a/resources/qml/delegates/Pill.qml b/resources/qml/delegates/Pill.qml
index 4acf2bef..88f6c7fd 100644
--- a/resources/qml/delegates/Pill.qml
+++ b/resources/qml/delegates/Pill.qml
@@ -9,7 +9,7 @@ Label {
 
     background: Rectangle {
         radius: parent.height / 2
-        color: colors.dark
+        color: colors.alternateBase
     }
 
 }
diff --git a/resources/qml/delegates/PlayableMediaMessage.qml b/resources/qml/delegates/PlayableMediaMessage.qml
index 9ad115c7..be22687f 100644
--- a/resources/qml/delegates/PlayableMediaMessage.qml
+++ b/resources/qml/delegates/PlayableMediaMessage.qml
@@ -8,7 +8,7 @@ Rectangle {
     id: bg
 
     radius: 10
-    color: colors.dark
+    color: colors.alternateBase
     height: Math.round(content.height + 24)
     width: parent ? parent.width : undefined
 
diff --git a/resources/qml/emoji/EmojiPicker.qml b/resources/qml/emoji/EmojiPicker.qml
index 0e277415..afe16350 100644
--- a/resources/qml/emoji/EmojiPicker.qml
+++ b/resources/qml/emoji/EmojiPicker.qml
@@ -161,7 +161,7 @@ Popup {
         Rectangle {
             Layout.fillWidth: true
             Layout.preferredHeight: 1
-            color: emojiPopup.colors.dark
+            color: emojiPopup.colors.alternateBase
         }
 
         // Category picker row
@@ -281,7 +281,7 @@ Popup {
                 Layout.preferredWidth: 1
                 implicitWidth: 1
                 height: parent.height
-                color: emojiPopup.colors.dark
+                color: emojiPopup.colors.alternateBase
             }
 
             // Search Button is special
diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp
index 53539407..d4d5dcb9 100644
--- a/src/UserSettingsPage.cpp
+++ b/src/UserSettingsPage.cpp
@@ -339,17 +339,18 @@ UserSettings::applyTheme()
                   /*windowText*/ QColor("#333"),
                   /*button*/ QColor("#333"),
                   /*light*/ QColor(0xef, 0xef, 0xef),
-                  /*dark*/ QColor(220, 220, 220),
-                  /*mid*/ QColor(110, 110, 110),
+                  /*dark*/ QColor(110, 110, 110),
+                  /*mid*/ QColor(220, 220, 220),
                   /*text*/ QColor("#333"),
                   /*bright_text*/ QColor("#333"),
-                  /*base*/ QColor("#eee"),
+                  /*base*/ QColor("#fff"),
                   /*window*/ QColor("white"));
+                lightActive.setColor(QPalette::AlternateBase, QColor("#eee"));
                 lightActive.setColor(QPalette::Highlight, QColor("#38a3d8"));
                 lightActive.setColor(QPalette::ToolTipBase, lightActive.base().color());
                 lightActive.setColor(QPalette::ToolTipText, lightActive.text().color());
                 lightActive.setColor(QPalette::Link, QColor("#0077b5"));
-                lightActive.setColor(QPalette::ButtonText, QColor(Qt::gray));
+                lightActive.setColor(QPalette::ButtonText, QColor("#495057"));
                 QApplication::setPalette(lightActive);
         } else if (this->theme() == "dark") {
                 stylefile.setFileName(":/styles/styles/nheko-dark.qss");
@@ -357,17 +358,18 @@ UserSettings::applyTheme()
                   /*windowText*/ QColor("#caccd1"),
                   /*button*/ QColor(0xff, 0xff, 0xff),
                   /*light*/ QColor("#caccd1"),
-                  /*dark*/ QColor("#2d3139"),
-                  /*mid*/ QColor(110, 110, 110),
+                  /*dark*/ QColor(110, 110, 110),
+                  /*mid*/ QColor("#202228"),
                   /*text*/ QColor("#caccd1"),
                   /*bright_text*/ QColor(0xff, 0xff, 0xff),
-                  /*base*/ QColor("#2d3139"),
-                  /*window*/ QColor("#202228"));
+                  /*base*/ QColor("#202228"),
+                  /*window*/ QColor("#2d3139"));
+                darkActive.setColor(QPalette::AlternateBase, QColor("#2d3139"));
                 darkActive.setColor(QPalette::Highlight, QColor("#38a3d8"));
                 darkActive.setColor(QPalette::ToolTipBase, darkActive.base().color());
                 darkActive.setColor(QPalette::ToolTipText, darkActive.text().color());
                 darkActive.setColor(QPalette::Link, QColor("#38a3d8"));
-                darkActive.setColor(QPalette::ButtonText, QColor(0x90, 0x90, 0x90));
+                darkActive.setColor(QPalette::ButtonText, "#727274");
                 QApplication::setPalette(darkActive);
         } else {
                 stylefile.setFileName(":/styles/styles/system.qss");
-- 
cgit 1.5.1


From 3d64df41dac45693d1e2626909f0e55d4b7a6f47 Mon Sep 17 00:00:00 2001
From: Nicolas Werner 
Date: Mon, 26 Oct 2020 14:57:54 +0100
Subject: Split up TimelineView into separate components

---
 resources/qml/ActiveCallBar.qml   |   2 +-
 resources/qml/MessageInput.qml    |  90 +++++++
 resources/qml/MessageView.qml     | 202 ++++++++++++++++
 resources/qml/ReplyPopup.qml      |  47 ++++
 resources/qml/TimelineView.qml    | 495 ++------------------------------------
 resources/qml/TopBar.qml          | 127 ++++++++++
 resources/qml/TypingIndicator.qml |  35 +++
 resources/res.qrc                 |   5 +
 8 files changed, 531 insertions(+), 472 deletions(-)
 create mode 100644 resources/qml/MessageInput.qml
 create mode 100644 resources/qml/MessageView.qml
 create mode 100644 resources/qml/ReplyPopup.qml
 create mode 100644 resources/qml/TopBar.qml
 create mode 100644 resources/qml/TypingIndicator.qml

(limited to 'resources')

diff --git a/resources/qml/ActiveCallBar.qml b/resources/qml/ActiveCallBar.qml
index 9344738e..dcdec9ef 100644
--- a/resources/qml/ActiveCallBar.qml
+++ b/resources/qml/ActiveCallBar.qml
@@ -8,7 +8,7 @@ Rectangle {
 
     visible: TimelineManager.callState != WebRTCState.DISCONNECTED
     color: "#2ECC71"
-    implicitHeight: rowLayout.height + 8
+    implicitHeight: visible ? rowLayout.height + 8 : 0
 
     RowLayout {
         id: rowLayout
diff --git a/resources/qml/MessageInput.qml b/resources/qml/MessageInput.qml
new file mode 100644
index 00000000..71da9cae
--- /dev/null
+++ b/resources/qml/MessageInput.qml
@@ -0,0 +1,90 @@
+import QtQuick 2.9
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.2
+import QtQuick.Window 2.2
+
+Rectangle {
+    color: colors.window
+    Layout.fillWidth: true
+    Layout.preferredHeight: textInput.height
+    Layout.minimumHeight: 40
+
+    RowLayout {
+        id: inputBar
+
+        anchors.fill: parent
+        spacing: 16
+
+        ImageButton {
+            Layout.alignment: Qt.AlignBottom
+            hoverEnabled: true
+            width: 22
+            height: 22
+            image: ":/icons/icons/ui/place-call.png"
+            Layout.topMargin: 8
+            Layout.bottomMargin: 8
+            Layout.leftMargin: 16
+        }
+
+        ImageButton {
+            Layout.alignment: Qt.AlignBottom
+            hoverEnabled: true
+            width: 22
+            height: 22
+            image: ":/icons/icons/ui/paper-clip-outline.png"
+            Layout.topMargin: 8
+            Layout.bottomMargin: 8
+        }
+
+        ScrollView {
+            id: textInput
+
+            Layout.alignment: Qt.AlignBottom
+            Layout.maximumHeight: Window.height / 4
+            Layout.fillWidth: true
+
+            TextArea {
+                placeholderText: qsTr("Write a message...")
+                placeholderTextColor: colors.buttonText
+                color: colors.text
+                wrapMode: TextEdit.Wrap
+
+                MouseArea {
+                    // workaround for wrong cursor shape on some platforms
+                    anchors.fill: parent
+                    acceptedButtons: Qt.NoButton
+                    cursorShape: Qt.IBeamCursor
+                }
+
+                background: Rectangle {
+                    color: colors.window
+                }
+
+            }
+
+        }
+
+        ImageButton {
+            Layout.alignment: Qt.AlignRight | Qt.AlignBottom
+            hoverEnabled: true
+            width: 22
+            height: 22
+            image: ":/icons/icons/ui/smile.png"
+            Layout.topMargin: 8
+            Layout.bottomMargin: 8
+        }
+
+        ImageButton {
+            Layout.alignment: Qt.AlignRight | Qt.AlignBottom
+            hoverEnabled: true
+            width: 22
+            height: 22
+            image: ":/icons/icons/ui/cursor.png"
+            Layout.topMargin: 8
+            Layout.bottomMargin: 8
+            Layout.rightMargin: 16
+        }
+
+    }
+
+}
diff --git a/resources/qml/MessageView.qml b/resources/qml/MessageView.qml
new file mode 100644
index 00000000..09220a71
--- /dev/null
+++ b/resources/qml/MessageView.qml
@@ -0,0 +1,202 @@
+import "./delegates"
+import QtGraphicalEffects 1.0
+import QtQuick 2.9
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.2
+import QtQuick.Window 2.2
+import im.nheko 1.0
+
+ListView {
+    id: chat
+
+    property int delegateMaxWidth: (Settings.timelineMaxWidth > 100 && (parent.width - Settings.timelineMaxWidth) > scrollbar.width * 2) ? Settings.timelineMaxWidth : (parent.width - scrollbar.width * 2)
+
+    Layout.fillWidth: true
+    Layout.fillHeight: true
+    cacheBuffer: 400
+    model: TimelineManager.timeline
+    boundsBehavior: Flickable.StopAtBounds
+    pixelAligned: true
+    spacing: 4
+    verticalLayoutDirection: ListView.BottomToTop
+    onCountChanged: {
+        if (atYEnd)
+            model.currentIndex = 0;
+
+    } // Mark last event as read, since we are at the bottom
+
+    ScrollHelper {
+        flickable: parent
+        anchors.fill: parent
+    }
+
+    Shortcut {
+        sequence: StandardKey.MoveToPreviousPage
+        onActivated: {
+            chat.contentY = chat.contentY - chat.height / 2;
+            chat.returnToBounds();
+        }
+    }
+
+    Shortcut {
+        sequence: StandardKey.MoveToNextPage
+        onActivated: {
+            chat.contentY = chat.contentY + chat.height / 2;
+            chat.returnToBounds();
+        }
+    }
+
+    Shortcut {
+        sequence: StandardKey.Cancel
+        onActivated: chat.model.reply = undefined
+    }
+
+    Shortcut {
+        sequence: "Alt+Up"
+        onActivated: chat.model.reply = chat.model.indexToId(chat.model.reply ? chat.model.idToIndex(chat.model.reply) + 1 : 0)
+    }
+
+    Shortcut {
+        sequence: "Alt+Down"
+        onActivated: {
+            var idx = chat.model.reply ? chat.model.idToIndex(chat.model.reply) - 1 : -1;
+            chat.model.reply = idx >= 0 ? chat.model.indexToId(idx) : undefined;
+        }
+    }
+
+    section {
+        property: "section"
+    }
+
+    Component {
+        id: sectionHeader
+
+        Column {
+            property var modelData
+            property string section
+            property string nextSection
+
+            topPadding: 4
+            bottomPadding: 4
+            spacing: 8
+            visible: !!modelData
+            width: parent.width
+            height: (section.includes(" ") ? dateBubble.height + 8 + userName.height : userName.height) + 8
+
+            Label {
+                id: dateBubble
+
+                anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined
+                visible: section.includes(" ")
+                text: chat.model.formatDateSeparator(modelData.timestamp)
+                color: colors.text
+                height: fontMetrics.height * 1.4
+                width: contentWidth * 1.2
+                horizontalAlignment: Text.AlignHCenter
+                verticalAlignment: Text.AlignVCenter
+
+                background: Rectangle {
+                    radius: parent.height / 2
+                    color: colors.window
+                }
+
+            }
+
+            Row {
+                height: userName.height
+                spacing: 8
+
+                Avatar {
+                    width: avatarSize
+                    height: avatarSize
+                    url: chat.model.avatarUrl(modelData.userId).replace("mxc://", "image://MxcImage/")
+                    displayName: modelData.userName
+                    userid: modelData.userId
+
+                    MouseArea {
+                        anchors.fill: parent
+                        onClicked: chat.model.openUserProfile(modelData.userId)
+                        cursorShape: Qt.PointingHandCursor
+                        propagateComposedEvents: true
+                    }
+
+                }
+
+                Label {
+                    id: userName
+
+                    text: TimelineManager.escapeEmoji(modelData.userName)
+                    color: TimelineManager.userColor(modelData.userId, colors.window)
+                    textFormat: Text.RichText
+
+                    MouseArea {
+                        anchors.fill: parent
+                        Layout.alignment: Qt.AlignHCenter
+                        onClicked: chat.model.openUserProfile(modelData.userId)
+                        cursorShape: Qt.PointingHandCursor
+                        propagateComposedEvents: true
+                    }
+
+                }
+
+            }
+
+        }
+
+    }
+
+    ScrollBar.vertical: ScrollBar {
+        id: scrollbar
+    }
+
+    delegate: Item {
+        id: wrapper
+
+        // This would normally be previousSection, but our model's order is inverted.
+        property bool sectionBoundary: (ListView.nextSection != "" && ListView.nextSection !== ListView.section) || model.index === chat.count - 1
+        property Item section
+
+        anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined
+        width: chat.delegateMaxWidth
+        height: section ? section.height + timelinerow.height : timelinerow.height
+        onSectionBoundaryChanged: {
+            if (sectionBoundary) {
+                var properties = {
+                    "modelData": model.dump,
+                    "section": ListView.section,
+                    "nextSection": ListView.nextSection
+                };
+                section = sectionHeader.createObject(wrapper, properties);
+            } else {
+                section.destroy();
+                section = null;
+            }
+        }
+
+        TimelineRow {
+            id: timelinerow
+
+            y: section ? section.y + section.height : 0
+        }
+
+        Connections {
+            function onMovementEnded() {
+                if (y + height + 2 * chat.spacing > chat.contentY + chat.height && y < chat.contentY + chat.height)
+                    chat.model.currentIndex = index;
+
+            }
+
+            target: chat
+        }
+
+    }
+
+    footer: BusyIndicator {
+        anchors.horizontalCenter: parent.horizontalCenter
+        running: chat.model && chat.model.paginationInProgress
+        height: 50
+        width: 50
+        z: 3
+    }
+
+}
diff --git a/resources/qml/ReplyPopup.qml b/resources/qml/ReplyPopup.qml
new file mode 100644
index 00000000..4659e075
--- /dev/null
+++ b/resources/qml/ReplyPopup.qml
@@ -0,0 +1,47 @@
+import "./delegates/"
+import QtQuick 2.9
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.2
+import im.nheko 1.0
+
+Rectangle {
+    id: replyPopup
+
+    property var room: TimelineManager.timeline
+
+    Layout.fillWidth: true
+    visible: room && room.reply
+    // Height of child, plus margins, plus border
+    implicitHeight: replyPreview.height + 10
+    color: colors.window
+    z: 3
+
+    Reply {
+        id: replyPreview
+
+        anchors.left: parent.left
+        anchors.leftMargin: 2 * 22 + 3 * 16
+        anchors.right: closeReplyButton.left
+        anchors.rightMargin: 2 * 22 + 3 * 16
+        anchors.bottom: parent.bottom
+        modelData: room ? room.getDump(room.reply, room.id) : {
+        }
+        userColor: TimelineManager.userColor(modelData.userId, colors.window)
+    }
+
+    ImageButton {
+        id: closeReplyButton
+
+        anchors.right: parent.right
+        anchors.rightMargin: 15
+        anchors.top: replyPreview.top
+        hoverEnabled: true
+        width: 16
+        height: 16
+        image: ":/icons/icons/ui/remove-symbol.png"
+        ToolTip.visible: closeReplyButton.hovered
+        ToolTip.text: qsTr("Close")
+        onClicked: room.reply = undefined
+    }
+
+}
diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml
index 3124d462..023bae00 100644
--- a/resources/qml/TimelineView.qml
+++ b/resources/qml/TimelineView.qml
@@ -43,12 +43,21 @@ Page {
 
     }
 
+    Component {
+        id: userProfileComponent
+
+        UserProfile {
+        }
+
+    }
+
     Menu {
         id: messageContextMenu
 
         property string eventId
         property int eventType
         property bool isEncrypted
+        property var room: TimelineManager.timeline
 
         function show(eventId_, eventType_, isEncrypted_, showAt_, position) {
             eventId = eventId_;
@@ -69,12 +78,12 @@ Page {
 
         MenuItem {
             text: qsTr("Reply")
-            onClicked: chat.model.replyAction(messageContextMenu.eventId)
+            onClicked: room.replyAction(messageContextMenu.eventId)
         }
 
         MenuItem {
             text: qsTr("Read receipts")
-            onTriggered: chat.model.readReceiptsAction(messageContextMenu.eventId)
+            onTriggered: room.readReceiptsAction(messageContextMenu.eventId)
         }
 
         MenuItem {
@@ -83,19 +92,19 @@ Page {
 
         MenuItem {
             text: qsTr("View raw message")
-            onTriggered: chat.model.viewRawMessage(messageContextMenu.eventId)
+            onTriggered: room.viewRawMessage(messageContextMenu.eventId)
         }
 
         MenuItem {
             visible: messageContextMenu.isEncrypted
             height: visible ? implicitHeight : 0
             text: qsTr("View decrypted raw message")
-            onTriggered: chat.model.viewDecryptedRawMessage(messageContextMenu.eventId)
+            onTriggered: room.viewDecryptedRawMessage(messageContextMenu.eventId)
         }
 
         MenuItem {
             text: qsTr("Redact message")
-            onTriggered: chat.model.redactEvent(messageContextMenu.eventId)
+            onTriggered: room.redactEvent(messageContextMenu.eventId)
         }
 
         MenuItem {
@@ -163,125 +172,7 @@ Page {
             anchors.fill: parent
             spacing: 0
 
-            Rectangle {
-                id: topBar
-
-                Layout.fillWidth: true
-                implicitHeight: topLayout.height + 16
-                z: 3
-                color: colors.window
-
-                MouseArea {
-                    anchors.fill: parent
-                    onClicked: TimelineManager.openRoomSettings()
-                }
-
-                GridLayout {
-                    //Layout.margins: 8
-
-                    id: topLayout
-
-                    anchors.left: parent.left
-                    anchors.right: parent.right
-                    anchors.margins: 8
-                    anchors.verticalCenter: parent.verticalCenter
-
-                    ImageButton {
-                        id: backToRoomsButton
-
-                        Layout.column: 0
-                        Layout.row: 0
-                        Layout.rowSpan: 2
-                        Layout.alignment: Qt.AlignVCenter
-                        visible: TimelineManager.isNarrowView
-                        image: ":/icons/icons/ui/angle-pointing-to-left.png"
-                        ToolTip.visible: hovered
-                        ToolTip.text: qsTr("Back to room list")
-                        onClicked: TimelineManager.backToRooms()
-                    }
-
-                    Avatar {
-                        Layout.column: 1
-                        Layout.row: 0
-                        Layout.rowSpan: 2
-                        Layout.alignment: Qt.AlignVCenter
-                        width: avatarSize
-                        height: avatarSize
-                        url: chat.model ? chat.model.roomAvatarUrl.replace("mxc://", "image://MxcImage/") : ""
-                        displayName: chat.model ? chat.model.roomName : qsTr("No room selected")
-
-                        MouseArea {
-                            anchors.fill: parent
-                            onClicked: TimelineManager.openRoomSettings()
-                        }
-
-                    }
-
-                    Label {
-                        Layout.fillWidth: true
-                        Layout.column: 2
-                        Layout.row: 0
-                        color: colors.text
-                        font.pointSize: fontMetrics.font.pointSize * 1.1
-                        text: chat.model ? chat.model.roomName : qsTr("No room selected")
-
-                        MouseArea {
-                            anchors.fill: parent
-                            onClicked: TimelineManager.openRoomSettings()
-                        }
-
-                    }
-
-                    MatrixText {
-                        Layout.fillWidth: true
-                        Layout.column: 2
-                        Layout.row: 1
-                        Layout.maximumHeight: fontMetrics.lineSpacing * 2 // show 2 lines
-                        clip: true
-                        text: chat.model ? chat.model.roomTopic : ""
-                    }
-
-                    ImageButton {
-                        id: roomOptionsButton
-
-                        Layout.column: 3
-                        Layout.row: 0
-                        Layout.rowSpan: 2
-                        Layout.alignment: Qt.AlignVCenter
-                        image: ":/icons/icons/ui/vertical-ellipsis.png"
-                        ToolTip.visible: hovered
-                        ToolTip.text: qsTr("Room options")
-                        onClicked: roomOptionsMenu.popup(roomOptionsButton)
-
-                        Menu {
-                            id: roomOptionsMenu
-
-                            MenuItem {
-                                text: qsTr("Invite users")
-                                onTriggered: TimelineManager.openInviteUsersDialog()
-                            }
-
-                            MenuItem {
-                                text: qsTr("Members")
-                                onTriggered: TimelineManager.openMemberListDialog()
-                            }
-
-                            MenuItem {
-                                text: qsTr("Leave room")
-                                onTriggered: TimelineManager.openLeaveRoomDialog()
-                            }
-
-                            MenuItem {
-                                text: qsTr("Settings")
-                                onTriggered: TimelineManager.openRoomSettings()
-                            }
-
-                        }
-
-                    }
-
-                }
-
+            TopBar {
             }
 
             Rectangle {
@@ -296,276 +187,18 @@ Page {
                 Layout.fillHeight: true
                 color: colors.base
 
-                ListView {
-                    id: chat
-
-                    property int delegateMaxWidth: (Settings.timelineMaxWidth > 100 && (parent.width - Settings.timelineMaxWidth) > scrollbar.width * 2) ? Settings.timelineMaxWidth : (parent.width - scrollbar.width * 2)
-
-                    cacheBuffer: 400
+                ColumnLayout {
                     anchors.fill: parent
-                    model: TimelineManager.timeline
-                    boundsBehavior: Flickable.StopAtBounds
-                    pixelAligned: true
-                    spacing: 4
-                    verticalLayoutDirection: ListView.BottomToTop
-                    onCountChanged: {
-                        if (atYEnd)
-                            model.currentIndex = 0;
-
-                    } // Mark last event as read, since we are at the bottom
-
-                    ScrollHelper {
-                        flickable: parent
-                        anchors.fill: parent
-                    }
-
-                    Shortcut {
-                        sequence: StandardKey.MoveToPreviousPage
-                        onActivated: {
-                            chat.contentY = chat.contentY - chat.height / 2;
-                            chat.returnToBounds();
-                        }
-                    }
-
-                    Shortcut {
-                        sequence: StandardKey.MoveToNextPage
-                        onActivated: {
-                            chat.contentY = chat.contentY + chat.height / 2;
-                            chat.returnToBounds();
-                        }
-                    }
-
-                    Shortcut {
-                        sequence: StandardKey.Cancel
-                        onActivated: chat.model.reply = undefined
-                    }
-
-                    Shortcut {
-                        sequence: "Alt+Up"
-                        onActivated: chat.model.reply = chat.model.indexToId(chat.model.reply ? chat.model.idToIndex(chat.model.reply) + 1 : 0)
-                    }
-
-                    Shortcut {
-                        sequence: "Alt+Down"
-                        onActivated: {
-                            var idx = chat.model.reply ? chat.model.idToIndex(chat.model.reply) - 1 : -1;
-                            chat.model.reply = idx >= 0 ? chat.model.indexToId(idx) : undefined;
-                        }
-                    }
-
-                    Component {
-                        id: userProfileComponent
-
-                        UserProfile {
-                        }
+                    spacing: 0
 
+                    MessageView {
+                        Layout.fillWidth: true
+                        Layout.fillHeight: true
                     }
 
-                    section {
-                        property: "section"
-                    }
-
-                    Component {
-                        id: sectionHeader
-
-                        Column {
-                            property var modelData
-                            property string section
-                            property string nextSection
-
-                            topPadding: 4
-                            bottomPadding: 4
-                            spacing: 8
-                            visible: !!modelData
-                            width: parent.width
-                            height: (section.includes(" ") ? dateBubble.height + 8 + userName.height : userName.height) + 8
-
-                            Label {
-                                id: dateBubble
-
-                                anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined
-                                visible: section.includes(" ")
-                                text: chat.model.formatDateSeparator(modelData.timestamp)
-                                color: colors.text
-                                height: fontMetrics.height * 1.4
-                                width: contentWidth * 1.2
-                                horizontalAlignment: Text.AlignHCenter
-                                verticalAlignment: Text.AlignVCenter
-
-                                background: Rectangle {
-                                    radius: parent.height / 2
-                                    color: colors.window
-                                }
-
-                            }
-
-                            Row {
-                                height: userName.height
-                                spacing: 8
-
-                                Avatar {
-                                    width: avatarSize
-                                    height: avatarSize
-                                    url: chat.model.avatarUrl(modelData.userId).replace("mxc://", "image://MxcImage/")
-                                    displayName: modelData.userName
-                                    userid: modelData.userId
-
-                                    MouseArea {
-                                        anchors.fill: parent
-                                        onClicked: chat.model.openUserProfile(modelData.userId)
-                                        cursorShape: Qt.PointingHandCursor
-                                        propagateComposedEvents: true
-                                    }
-
-                                }
-
-                                Label {
-                                    id: userName
-
-                                    text: TimelineManager.escapeEmoji(modelData.userName)
-                                    color: TimelineManager.userColor(modelData.userId, colors.window)
-                                    textFormat: Text.RichText
-
-                                    MouseArea {
-                                        anchors.fill: parent
-                                        Layout.alignment: Qt.AlignHCenter
-                                        onClicked: chat.model.openUserProfile(modelData.userId)
-                                        cursorShape: Qt.PointingHandCursor
-                                        propagateComposedEvents: true
-                                    }
-
-                                }
-
-                            }
-
-                        }
-
-                    }
-
-                    ScrollBar.vertical: ScrollBar {
-                        id: scrollbar
-                    }
-
-                    delegate: Item {
-                        id: wrapper
-
-                        // This would normally be previousSection, but our model's order is inverted.
-                        property bool sectionBoundary: (ListView.nextSection != "" && ListView.nextSection !== ListView.section) || model.index === chat.count - 1
-                        property Item section
-
-                        anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined
-                        width: chat.delegateMaxWidth
-                        height: section ? section.height + timelinerow.height : timelinerow.height
-                        onSectionBoundaryChanged: {
-                            if (sectionBoundary) {
-                                var properties = {
-                                    "modelData": model.dump,
-                                    "section": ListView.section,
-                                    "nextSection": ListView.nextSection
-                                };
-                                section = sectionHeader.createObject(wrapper, properties);
-                            } else {
-                                section.destroy();
-                                section = null;
-                            }
-                        }
-
-                        TimelineRow {
-                            id: timelinerow
-
-                            y: section ? section.y + section.height : 0
-                        }
-
-                        Connections {
-                            function onMovementEnded() {
-                                if (y + height + 2 * chat.spacing > chat.contentY + chat.height && y < chat.contentY + chat.height)
-                                    chat.model.currentIndex = index;
-
-                            }
-
-                            target: chat
-                        }
-
-                    }
-
-                    footer: BusyIndicator {
-                        anchors.horizontalCenter: parent.horizontalCenter
-                        running: chat.model && chat.model.paginationInProgress
-                        height: 50
-                        width: 50
-                        z: 3
-                    }
-
-                }
-
-            }
-
-            Item {
-                implicitHeight: Math.max(fontMetrics.height * 1.2, typingDisplay.height)
-                Layout.fillWidth: true
-
-                Rectangle {
-                    id: typingRect
-
-                    color: colors.base
-                    anchors.left: parent.left
-                    anchors.right: parent.right
-                    height: (chat.model && chat.model.typingUsers.length > 0) ? typingDisplay.height : 0
-                    z: 3
-
-                    Label {
-                        id: typingDisplay
-
-                        anchors.left: parent.left
-                        anchors.leftMargin: 10
-                        anchors.right: parent.right
-                        anchors.rightMargin: 10
-                        anchors.bottom: parent.bottom
-                        color: colors.text
-                        text: chat.model ? chat.model.formatTypingUsers(chat.model.typingUsers, colors.base) : ""
-                        textFormat: Text.RichText
-                    }
-
-                }
-
-            }
-
-            Rectangle {
-                id: replyPopup
-
-                Layout.fillWidth: true
-                visible: chat.model && chat.model.reply
-                // Height of child, plus margins, plus border
-                implicitHeight: replyPreview.height + 10
-                color: colors.window
-                z: 3
-
-                Reply {
-                    id: replyPreview
-
-                    anchors.left: parent.left
-                    anchors.leftMargin: 10
-                    anchors.right: closeReplyButton.left
-                    anchors.rightMargin: 20
-                    anchors.bottom: parent.bottom
-                    modelData: chat.model ? chat.model.getDump(chat.model.reply, chat.model.id) : {
+                    TypingIndicator {
                     }
-                    userColor: TimelineManager.userColor(modelData.userId, colors.window)
-                }
 
-                ImageButton {
-                    id: closeReplyButton
-
-                    anchors.right: parent.right
-                    anchors.rightMargin: 15
-                    anchors.top: replyPreview.top
-                    hoverEnabled: true
-                    width: 16
-                    height: 16
-                    image: ":/icons/icons/ui/remove-symbol.png"
-                    ToolTip.visible: closeReplyButton.hovered
-                    ToolTip.text: qsTr("Close")
-                    onClicked: chat.model.reply = undefined
                 }
 
             }
@@ -582,90 +215,10 @@ Page {
                 color: colors.mid
             }
 
-            Rectangle {
-                color: colors.window
-                Layout.fillWidth: true
-                Layout.preferredHeight: textInput.height
-                Layout.minimumHeight: 40
-
-                RowLayout {
-                    id: inputBar
-
-                    anchors.fill: parent
-                    spacing: 16
-
-                    ImageButton {
-                        Layout.alignment: Qt.AlignBottom
-                        hoverEnabled: true
-                        width: 22
-                        height: 22
-                        image: ":/icons/icons/ui/place-call.png"
-                        Layout.topMargin: 8
-                        Layout.bottomMargin: 8
-                        Layout.leftMargin: 16
-                    }
-
-                    ImageButton {
-                        Layout.alignment: Qt.AlignBottom
-                        hoverEnabled: true
-                        width: 22
-                        height: 22
-                        image: ":/icons/icons/ui/paper-clip-outline.png"
-                        Layout.topMargin: 8
-                        Layout.bottomMargin: 8
-                    }
-
-                    ScrollView {
-                        id: textInput
-
-                        Layout.alignment: Qt.AlignBottom
-                        Layout.maximumHeight: Window.height / 4
-                        Layout.fillWidth: true
-
-                        TextArea {
-                            placeholderText: qsTr("Write a message...")
-                            placeholderTextColor: colors.buttonText
-                            color: colors.text
-                            wrapMode: TextEdit.Wrap
-
-                            MouseArea {
-                                // workaround for wrong cursor shape on some platforms
-                                anchors.fill: parent
-                                acceptedButtons: Qt.NoButton
-                                cursorShape: Qt.IBeamCursor
-                            }
-
-                            background: Rectangle {
-                                color: colors.window
-                            }
-
-                        }
-
-                    }
-
-                    ImageButton {
-                        Layout.alignment: Qt.AlignRight | Qt.AlignBottom
-                        hoverEnabled: true
-                        width: 22
-                        height: 22
-                        image: ":/icons/icons/ui/smile.png"
-                        Layout.topMargin: 8
-                        Layout.bottomMargin: 8
-                    }
-
-                    ImageButton {
-                        Layout.alignment: Qt.AlignRight | Qt.AlignBottom
-                        hoverEnabled: true
-                        width: 22
-                        height: 22
-                        image: ":/icons/icons/ui/cursor.png"
-                        Layout.topMargin: 8
-                        Layout.bottomMargin: 8
-                        Layout.rightMargin: 16
-                    }
-
-                }
+            ReplyPopup {
+            }
 
+            MessageInput {
             }
 
         }
diff --git a/resources/qml/TopBar.qml b/resources/qml/TopBar.qml
new file mode 100644
index 00000000..181b9ba4
--- /dev/null
+++ b/resources/qml/TopBar.qml
@@ -0,0 +1,127 @@
+import QtQuick 2.9
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.2
+import im.nheko 1.0
+
+Rectangle {
+    id: topBar
+
+    property var room: TimelineManager.timeline
+
+    Layout.fillWidth: true
+    implicitHeight: topLayout.height + 16
+    z: 3
+    color: colors.window
+
+    MouseArea {
+        anchors.fill: parent
+        onClicked: TimelineManager.openRoomSettings()
+    }
+
+    GridLayout {
+        //Layout.margins: 8
+
+        id: topLayout
+
+        anchors.left: parent.left
+        anchors.right: parent.right
+        anchors.margins: 8
+        anchors.verticalCenter: parent.verticalCenter
+
+        ImageButton {
+            id: backToRoomsButton
+
+            Layout.column: 0
+            Layout.row: 0
+            Layout.rowSpan: 2
+            Layout.alignment: Qt.AlignVCenter
+            visible: TimelineManager.isNarrowView
+            image: ":/icons/icons/ui/angle-pointing-to-left.png"
+            ToolTip.visible: hovered
+            ToolTip.text: qsTr("Back to room list")
+            onClicked: TimelineManager.backToRooms()
+        }
+
+        Avatar {
+            Layout.column: 1
+            Layout.row: 0
+            Layout.rowSpan: 2
+            Layout.alignment: Qt.AlignVCenter
+            width: avatarSize
+            height: avatarSize
+            url: room ? room.roomAvatarUrl.replace("mxc://", "image://MxcImage/") : ""
+            displayName: room ? room.roomName : qsTr("No room selected")
+
+            MouseArea {
+                anchors.fill: parent
+                onClicked: TimelineManager.openRoomSettings()
+            }
+
+        }
+
+        Label {
+            Layout.fillWidth: true
+            Layout.column: 2
+            Layout.row: 0
+            color: colors.text
+            font.pointSize: fontMetrics.font.pointSize * 1.1
+            text: room ? room.roomName : qsTr("No room selected")
+
+            MouseArea {
+                anchors.fill: parent
+                onClicked: TimelineManager.openRoomSettings()
+            }
+
+        }
+
+        MatrixText {
+            Layout.fillWidth: true
+            Layout.column: 2
+            Layout.row: 1
+            Layout.maximumHeight: fontMetrics.lineSpacing * 2 // show 2 lines
+            clip: true
+            text: room ? room.roomTopic : ""
+        }
+
+        ImageButton {
+            id: roomOptionsButton
+
+            Layout.column: 3
+            Layout.row: 0
+            Layout.rowSpan: 2
+            Layout.alignment: Qt.AlignVCenter
+            image: ":/icons/icons/ui/vertical-ellipsis.png"
+            ToolTip.visible: hovered
+            ToolTip.text: qsTr("Room options")
+            onClicked: roomOptionsMenu.popup(roomOptionsButton)
+
+            Menu {
+                id: roomOptionsMenu
+
+                MenuItem {
+                    text: qsTr("Invite users")
+                    onTriggered: TimelineManager.openInviteUsersDialog()
+                }
+
+                MenuItem {
+                    text: qsTr("Members")
+                    onTriggered: TimelineManager.openMemberListDialog()
+                }
+
+                MenuItem {
+                    text: qsTr("Leave room")
+                    onTriggered: TimelineManager.openLeaveRoomDialog()
+                }
+
+                MenuItem {
+                    text: qsTr("Settings")
+                    onTriggered: TimelineManager.openRoomSettings()
+                }
+
+            }
+
+        }
+
+    }
+
+}
diff --git a/resources/qml/TypingIndicator.qml b/resources/qml/TypingIndicator.qml
new file mode 100644
index 00000000..239fd662
--- /dev/null
+++ b/resources/qml/TypingIndicator.qml
@@ -0,0 +1,35 @@
+import QtQuick 2.9
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.2
+import im.nheko 1.0
+
+Item {
+    property var room: TimelineManager.timeline
+
+    implicitHeight: Math.max(fontMetrics.height * 1.2, typingDisplay.height)
+    Layout.fillWidth: true
+
+    Rectangle {
+        id: typingRect
+
+        visible: (room && room.typingUsers.length > 0)
+        color: colors.base
+        anchors.fill: parent
+        z: 3
+
+        Label {
+            id: typingDisplay
+
+            anchors.left: parent.left
+            anchors.leftMargin: 10
+            anchors.right: parent.right
+            anchors.rightMargin: 10
+            anchors.bottom: parent.bottom
+            color: colors.text
+            text: room ? room.formatTypingUsers(room.typingUsers, colors.base) : ""
+            textFormat: Text.RichText
+        }
+
+    }
+
+}
diff --git a/resources/res.qrc b/resources/res.qrc
index 87216e30..d11b78bc 100644
--- a/resources/res.qrc
+++ b/resources/res.qrc
@@ -121,6 +121,11 @@
         qtquickcontrols2.conf
 
         qml/TimelineView.qml
+        qml/TopBar.qml
+        qml/MessageView.qml
+        qml/MessageInput.qml
+        qml/TypingIndicator.qml
+        qml/ReplyPopup.qml
         qml/ActiveCallBar.qml
         qml/Avatar.qml
         qml/ImageButton.qml
-- 
cgit 1.5.1


From 0e7baa21aba53f5f5f0c96592c4ab1bff2316430 Mon Sep 17 00:00:00 2001
From: Nicolas Werner 
Date: Mon, 26 Oct 2020 21:32:08 +0100
Subject: Disable new MessageInput, until you can paste images

---
 resources/qml/TimelineView.qml  | 4 ++--
 resources/styles/nheko-dark.qss | 5 +----
 resources/styles/nheko.qss      | 6 ------
 resources/styles/system.qss     | 4 +---
 4 files changed, 4 insertions(+), 15 deletions(-)

(limited to 'resources')

diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml
index 023bae00..516c6860 100644
--- a/resources/qml/TimelineView.qml
+++ b/resources/qml/TimelineView.qml
@@ -218,8 +218,8 @@ Page {
             ReplyPopup {
             }
 
-            MessageInput {
-            }
+            //MessageInput {
+            //}
 
         }
 
diff --git a/resources/styles/nheko-dark.qss b/resources/styles/nheko-dark.qss
index 3676f874..547e4256 100644
--- a/resources/styles/nheko-dark.qss
+++ b/resources/styles/nheko-dark.qss
@@ -205,9 +205,7 @@ TextField {
     qproperty-labelColor: #caccd1;
 }
 
-SideBarActions,
-TopRoomBar
-{
+SideBarActions {
     border: none;
     border-top: 1px solid #202228;
     background-color: #2d3139;
@@ -215,7 +213,6 @@ TopRoomBar
 
 TextInputWidget {
     border: none;
-    border-top: 1px solid #2d3139;
 }
 
 TextInputWidget,
diff --git a/resources/styles/nheko.qss b/resources/styles/nheko.qss
index 8604ad30..81d97f65 100644
--- a/resources/styles/nheko.qss
+++ b/resources/styles/nheko.qss
@@ -233,7 +233,6 @@ QLineEdit {
 
 TextInputWidget {
     border: none;
-    border-top: 1px solid #dcdcdc;
 }
 
 SideBarActions {
@@ -241,11 +240,6 @@ SideBarActions {
     border-top: 1px solid #dcdcdc;
 }
 
-TopRoomBar {
-    border: none;
-    border-bottom: 1px solid #dcdcdc;
-}
-
 Toggle {
     qproperty-activeColor: #38a3d8;
     qproperty-disabledColor: gray;
diff --git a/resources/styles/system.qss b/resources/styles/system.qss
index 01951aff..d65c8baa 100644
--- a/resources/styles/system.qss
+++ b/resources/styles/system.qss
@@ -28,11 +28,9 @@ UserMentionsWidget > TimelineItem {
 SideBarActions,
 TextInputWidget {
     border: none;
-    border-top: 1px solid palette(mid);
 }
 
-UserInfoWidget,
-TopRoomBar {
+UserInfoWidget {
     border: none;
     border-bottom: 1px solid palette(mid);
 }
-- 
cgit 1.5.1


From 62651fab026e9323cc9b694f6f135b19c0a47005 Mon Sep 17 00:00:00 2001
From: Joseph Donofry 
Date: Mon, 26 Oct 2020 16:37:03 -0400
Subject: Run update-translations

---
 resources/langs/nheko_cs.ts    | 146 +++++++++++++++++++++++++------------
 resources/langs/nheko_de.ts    | 146 +++++++++++++++++++++++++------------
 resources/langs/nheko_el.ts    | 146 +++++++++++++++++++++++++------------
 resources/langs/nheko_en.ts    | 160 +++++++++++++++++++++++++++--------------
 resources/langs/nheko_eo.ts    | 150 ++++++++++++++++++++++++++------------
 resources/langs/nheko_et.ts    | 160 +++++++++++++++++++++++++++--------------
 resources/langs/nheko_fi.ts    | 146 +++++++++++++++++++++++++------------
 resources/langs/nheko_fr.ts    | 160 +++++++++++++++++++++++++++--------------
 resources/langs/nheko_it.ts    | 146 +++++++++++++++++++++++++------------
 resources/langs/nheko_ja.ts    | 146 +++++++++++++++++++++++++------------
 resources/langs/nheko_nl.ts    | 146 +++++++++++++++++++++++++------------
 resources/langs/nheko_pl.ts    | 146 +++++++++++++++++++++++++------------
 resources/langs/nheko_pt_PT.ts | 146 +++++++++++++++++++++++++------------
 resources/langs/nheko_ro.ts    | 146 +++++++++++++++++++++++++------------
 resources/langs/nheko_ru.ts    | 146 +++++++++++++++++++++++++------------
 resources/langs/nheko_si.ts    | 146 +++++++++++++++++++++++++------------
 resources/langs/nheko_zh_CN.ts | 146 +++++++++++++++++++++++++------------
 17 files changed, 1740 insertions(+), 788 deletions(-)

(limited to 'resources')

diff --git a/resources/langs/nheko_cs.ts b/resources/langs/nheko_cs.ts
index 9a79837a..318ceb64 100644
--- a/resources/langs/nheko_cs.ts
+++ b/resources/langs/nheko_cs.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         
     
     
         
-        
+        
         Invited user: %1
         
     
     
-        
+        
         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.
         
     
     
-        
+        
         Room %1 created.
         
     
@@ -154,12 +154,12 @@
         
     
     
-        
+        
         Failed to upload media. Please try again.
         
     
     
-        
+        
         Cache migration failed!
         
     
@@ -174,7 +174,7 @@
         
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         
     
     
-        
+        
         Failed to join room: %1
         
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -637,6 +637,14 @@ Example: https://server.my:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        
+    
+
 
     NewVerificationRequest
     
@@ -688,6 +696,24 @@ Example: https://server.my:8787
         
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -764,10 +790,18 @@ Example: https://server.my:8787
         
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         
     
@@ -827,7 +861,7 @@ Example: https://server.my:8787
         
     
     
-        
+        
         Accept
         
     
@@ -909,7 +943,7 @@ Example: https://server.my:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         
     
@@ -963,15 +997,14 @@ Example: https://server.my:8787
         
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         
     
@@ -1111,12 +1144,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
         You joined this room.
         
     
     
-        
+        
         Rejected the knock from %1.
         
     
@@ -1158,7 +1191,7 @@ Example: https://server.my:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1202,8 +1235,19 @@ Example: https://server.my:8787
         No room open
         
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1238,19 +1282,6 @@ Example: https://server.my:8787
         Settings
         
     
-    
-        
-        Close
-        
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1334,7 +1365,7 @@ Example: https://server.my:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         
     
@@ -1354,7 +1385,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1497,7 +1533,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         
     
@@ -1542,7 +1588,7 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         Session Keys
         
     
@@ -1562,22 +1608,32 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         GENERAL
         
     
     
-        
+        
         INTERFACE
         
     
     
-        
+        
         Emoji Font Family
         
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         
     
diff --git a/resources/langs/nheko_de.ts b/resources/langs/nheko_de.ts
index 5dd76df1..7afd8c51 100644
--- a/resources/langs/nheko_de.ts
+++ b/resources/langs/nheko_de.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         Du bist dem Raum beigetreten.
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         Nutzer konnte nicht eingeladen werden: %1
     
     
         
-        
+        
         Invited user: %1
         Eingeladener Benutzer: %1
     
     
-        
+        
         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.
         Das Migrieren des Caches auf die aktuelle Version ist fehlgeschlagen. Das kann verschiedene Gründe als Ursache haben. Bitte melde den Fehler und verwende in der Zwischenzeit eine ältere Version. Alternativ kannst du das Cache manuell löschen.
     
     
-        
+        
         Room %1 created.
         Raum %1 erzeugt.
     
@@ -154,12 +154,12 @@
         Verbannung von %1 wurde aufgehoben.
     
     
-        
+        
         Failed to upload media. Please try again.
         Medienupload fehlgeschlagen. Bitte versuche es erneut.
     
     
-        
+        
         Cache migration failed!
         Cache migration fehlgeschlagen!
     
@@ -174,7 +174,7 @@
         Der Cache auf der Festplatte wurde mit einer neueren Nheko - Version angelegt. Bitte aktualisiere Nheko oder entferne den Cache.
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         Wiederherstellung des OLM Accounts fehlgeschlagen. Bitte logge dich erneut ein.
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         Bitte melde dich erneut an: %1
     
     
-        
+        
         Failed to join room: %1
         Konnte Raum nicht betreten: %1
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         Suche
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         -- Verschlüsseltes Event (keine Schlüssel zur Entschlüsselung gefunden) --
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -641,6 +641,14 @@ Beispiel: https://mein.server:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        Schreibe eine Nachricht…
+    
+
 
     NewVerificationRequest
     
@@ -692,6 +700,24 @@ Beispiel: https://mein.server:8787
         Unimplementiertes Event: 
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -768,10 +794,18 @@ Beispiel: https://mein.server:8787
         Ungültiger Servername
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        Schließen
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         keine Version gespeichert
     
@@ -831,7 +865,7 @@ Beispiel: https://mein.server:8787
         
     
     
-        
+        
         Accept
         Akzeptieren
     
@@ -913,7 +947,7 @@ Beispiel: https://mein.server:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         Versende Datei
     
@@ -967,15 +1001,14 @@ Beispiel: https://mein.server:8787
         Nachricht zurückziehen fehlgeschlagen: %1
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         Bild speichern
     
@@ -1114,12 +1147,12 @@ Beispiel: https://mein.server:8787
         %1 hat das Anklopfen zurückgezogen.
     
     
-        
+        
         You joined this room.
         Du bist dem Raum beigetreten.
     
     
-        
+        
         Rejected the knock from %1.
         Hat das Anklopfen von %1 abgewiesen.
     
@@ -1161,7 +1194,7 @@ Beispiel: https://mein.server:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1205,8 +1238,19 @@ Beispiel: https://mein.server:8787
         No room open
         Kein Raum geöffnet
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1241,19 +1285,6 @@ Beispiel: https://mein.server:8787
         Settings
         Einstellungen
     
-    
-        
-        Close
-        Schließen
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1337,7 +1368,7 @@ Beispiel: https://mein.server:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         Ins Benachrichtigungsfeld minimieren
     
@@ -1357,7 +1388,12 @@ Beispiel: https://mein.server:8787
         Runde Profilbilder
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1500,7 +1536,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         Skalierungsfaktor
     
@@ -1545,7 +1591,7 @@ This usually causes the application icon in the task bar to animate in some fash
         Gerätefingerabdruck
     
     
-        
+        
         Session Keys
         Sitzungsschlüssel
     
@@ -1565,22 +1611,32 @@ This usually causes the application icon in the task bar to animate in some fash
         VERSCHLÜSSELUNG
     
     
-        
+        
         GENERAL
         ALLGEMEINES
     
     
-        
+        
         INTERFACE
         OBERFLÄCHE
     
     
-        
+        
         Emoji Font Family
         Emojischriftart
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         Öffne Sessions Datei
     
diff --git a/resources/langs/nheko_el.ts b/resources/langs/nheko_el.ts
index 02cc7878..d943c6f1 100644
--- a/resources/langs/nheko_el.ts
+++ b/resources/langs/nheko_el.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         
     
     
         
-        
+        
         Invited user: %1
         
     
     
-        
+        
         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.
         
     
     
-        
+        
         Room %1 created.
         
     
@@ -154,12 +154,12 @@
         
     
     
-        
+        
         Failed to upload media. Please try again.
         
     
     
-        
+        
         Cache migration failed!
         
     
@@ -174,7 +174,7 @@
         
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         
     
     
-        
+        
         Failed to join room: %1
         
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -637,6 +637,14 @@ Example: https://server.my:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        Γράψε ένα μήνυμα...
+    
+
 
     NewVerificationRequest
     
@@ -688,6 +696,24 @@ Example: https://server.my:8787
         
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -764,10 +790,18 @@ Example: https://server.my:8787
         Λανθασμένο όνομα διακομιστή
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         
     
@@ -827,7 +861,7 @@ Example: https://server.my:8787
         
     
     
-        
+        
         Accept
         Αποδοχή
     
@@ -909,7 +943,7 @@ Example: https://server.my:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         
     
@@ -963,15 +997,14 @@ Example: https://server.my:8787
         
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         Αποθήκευση Εικόνας
     
@@ -1110,12 +1143,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
         You joined this room.
         
     
     
-        
+        
         Rejected the knock from %1.
         
     
@@ -1157,7 +1190,7 @@ Example: https://server.my:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1201,8 +1234,19 @@ Example: https://server.my:8787
         No room open
         
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1237,19 +1281,6 @@ Example: https://server.my:8787
         Settings
         Ρυθμίσεις
     
-    
-        
-        Close
-        
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1333,7 +1364,7 @@ Example: https://server.my:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         Ελαχιστοποίηση
     
@@ -1353,7 +1384,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1496,7 +1532,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         
     
@@ -1541,7 +1587,7 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         Session Keys
         
     
@@ -1561,22 +1607,32 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         GENERAL
         ΓΕΝΙΚΑ
     
     
-        
+        
         INTERFACE
         
     
     
-        
+        
         Emoji Font Family
         
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         
     
diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts
index cd2a42a5..8389a960 100644
--- a/resources/langs/nheko_en.ts
+++ b/resources/langs/nheko_en.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         You joined this room.
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         Failed to invite user: %1
     
     
         
-        
+        
         Invited user: %1
         Invited user: %1
     
     
-        
+        
         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.
         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.
     
     
-        
+        
         Room %1 created.
         Room %1 created.
     
@@ -154,12 +154,12 @@
         Unbanned user: %1
     
     
-        
+        
         Failed to upload media. Please try again.
         Failed to upload media. Please try again.
     
     
-        
+        
         Cache migration failed!
         Cache migration failed!
     
@@ -174,7 +174,7 @@
         The cache on your disk is newer than this version of Nheko supports. Please update or clear your cache.
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         Failed to restore OLM account. Please login again.
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         Please try to login again: %1
     
     
-        
+        
         Failed to join room: %1
         Failed to join room: %1
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         Search
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         -- Encrypted Event (No keys found for decryption) --
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -641,6 +641,14 @@ Example: https://server.my:8787
         %1 ended the call.
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        Write a message…
+    
+
 
     NewVerificationRequest
     
@@ -692,6 +700,24 @@ Example: https://server.my:8787
         unimplemented event: 
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -768,10 +794,18 @@ Example: https://server.my:8787
         Invalid server name
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        Close
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         no version stored
     
@@ -831,7 +865,7 @@ Example: https://server.my:8787
         Tag:
     
     
-        
+        
         Accept
         Accept
     
@@ -913,7 +947,7 @@ Example: https://server.my:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         Send a file
     
@@ -967,15 +1001,14 @@ Example: https://server.my:8787
         Message redaction failed: %1
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         Failed to encrypt event, sending aborted!
     
     
-        
+        
         Save image
         Save image
     
@@ -1114,12 +1147,12 @@ Example: https://server.my:8787
         %1 redacted their knock.
     
     
-        
+        
         You joined this room.
         You joined this room.
     
     
-        
+        
         Rejected the knock from %1.
         Rejected the knock from %1.
     
@@ -1161,7 +1194,7 @@ Example: https://server.my:8787
 
     TimelineView
     
-        
+        
         React
         React
     
@@ -1205,54 +1238,52 @@ Example: https://server.my:8787
         No room open
         No room open
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
-        Back to room list
+        Back to room list
     
     
         
         
         No room selected
-        No room selected
+        No room selected
     
     
         
         Room options
-        Room options
+        Room options
     
     
         
         Invite users
-        Invite users
+        Invite users
     
     
         
         Members
-        Members
+        Members
     
     
         
         Leave room
-        Leave room
+        Leave room
     
     
         
         Settings
-        Settings
-    
-    
-        
-        Close
-        Close
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
+        Settings
     
 
 
@@ -1337,7 +1368,7 @@ Example: https://server.my:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         Minimize to tray
     
@@ -1357,7 +1388,12 @@ Example: https://server.my:8787
         Circular Avatars
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         CALLS
     
@@ -1508,7 +1544,17 @@ This usually causes the application icon in the task bar to animate in some fash
         Make font size larger if messages with only a few emojis are displayed.
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         Scale factor
     
@@ -1553,7 +1599,7 @@ This usually causes the application icon in the task bar to animate in some fash
         Device Fingerprint
     
     
-        
+        
         Session Keys
         Session Keys
     
@@ -1573,22 +1619,32 @@ This usually causes the application icon in the task bar to animate in some fash
         ENCRYPTION
     
     
-        
+        
         GENERAL
         GENERAL
     
     
-        
+        
         INTERFACE
         INTERFACE
     
     
-        
+        
         Emoji Font Family
         Emoji Font Family
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         Open Sessions File
     
diff --git a/resources/langs/nheko_eo.ts b/resources/langs/nheko_eo.ts
index 0aef02e8..4e5a9bc4 100644
--- a/resources/langs/nheko_eo.ts
+++ b/resources/langs/nheko_eo.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         Vi aliĝis ĉi tiun ĉambron.
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         
     
     
         
-        
+        
         Invited user: %1
         
     
     
-        
+        
         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.
         
     
     
-        
+        
         Room %1 created.
         I believe that the -at ending is correct here.
         Ĉambro %1 farit.
@@ -155,12 +155,12 @@
         
     
     
-        
+        
         Failed to upload media. Please try again.
         
     
     
-        
+        
         Cache migration failed!
         
     
@@ -175,7 +175,7 @@
         
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         
     
@@ -191,12 +191,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         
     
     
-        
+        
         Failed to join room: %1
         
     
@@ -305,7 +305,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         Trovu
@@ -390,13 +390,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -642,6 +642,14 @@ Ekzemplo: https://servisto.mia:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        Skribu mesaĝon...
+    
+
 
     NewVerificationRequest
     
@@ -693,6 +701,24 @@ Ekzemplo: https://servisto.mia:8787
         
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -769,10 +795,18 @@ Ekzemplo: https://servisto.mia:8787
         
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         
     
@@ -833,7 +867,7 @@ Ekzemplo: https://servisto.mia:8787
         
     
     
-        
+        
         Accept
         
     
@@ -917,7 +951,7 @@ Ekzemplo: https://servisto.mia:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         Sendu dosieron
     
@@ -971,15 +1005,14 @@ Ekzemplo: https://servisto.mia:8787
         
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         
     
@@ -1120,12 +1153,12 @@ Ekzemplo: https://servisto.mia:8787
         
     
     
-        
+        
         You joined this room.
         Vi aliĝis ĉi tiun ĉambron.
     
     
-        
+        
         Rejected the knock from %1.
         
     
@@ -1167,7 +1200,7 @@ Ekzemplo: https://servisto.mia:8787
 
     TimelineView
     
-        
+        
         React
         Reagu
     
@@ -1211,8 +1244,19 @@ Ekzemplo: https://servisto.mia:8787
         No room open
         
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1235,31 +1279,18 @@ Ekzemplo: https://servisto.mia:8787
     
         
         Members
-        Membroj
+        Membroj
     
     
         
         Leave room
-        Forlasu la ĉambron
+        
     
     
         
         Settings
         Agordoj
     
-    
-        
-        Close
-        
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1343,7 +1374,7 @@ Ekzemplo: https://servisto.mia:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         
     
@@ -1363,7 +1394,12 @@ Ekzemplo: https://servisto.mia:8787
         
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1506,7 +1542,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         
     
@@ -1551,7 +1597,7 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         Session Keys
         
     
@@ -1571,22 +1617,32 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         GENERAL
         
     
     
-        
+        
         INTERFACE
         
     
     
-        
+        
         Emoji Font Family
         
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         
     
diff --git a/resources/langs/nheko_et.ts b/resources/langs/nheko_et.ts
index 4804f797..b1f20985 100644
--- a/resources/langs/nheko_et.ts
+++ b/resources/langs/nheko_et.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         Sa liitusid selle jututoaga.
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         Kutse saatmine kasutajale ei õnnestunud: %1
     
     
         
-        
+        
         Invited user: %1
         Kutsutud kasutaja: %1
     
     
-        
+        
         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.
         Puhverdatud andmete muutmine sobivaks rakenduse praeguse versiooniga ei õnnestunud. Sellel võib olla erinevaid põhjuseid. Palun saada meile veateade ja seni kasuta vanemat rakenduse versiooni. Aga kui sa soovid proovida, siis kustuta puhverdatud andmed käsitsi.
     
     
-        
+        
         Room %1 created.
         %1 jututuba on loodud.
     
@@ -154,12 +154,12 @@
         Suhtluskeeld eemaldatud: %1
     
     
-        
+        
         Failed to upload media. Please try again.
         Meediafailide üleslaadimine ei õnnestunud. Palun proovi uuesti.
     
     
-        
+        
         Cache migration failed!
         Puhvri versiooniuuendus ebaõnnestus!
     
@@ -174,7 +174,7 @@
         Sinu andmekandjale salvestatud puhvri versioon on uuem, kui käesolev Nheko versioon kasutada oskab. Palun tee Nheko uuendus või kustuta puhverdatud andmed.
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         OLM konto taastamine ei õnnestunud. Palun logi uuesti sisse.
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         Palun proovi uuesti sisse logida: %1
     
     
-        
+        
         Failed to join room: %1
         Jututoaga liitumine ei õnnestunud: %1
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         Otsi
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         -- Krüptitud sündmus (Dekrüptimisvõtmeid ei leidunud) --
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -641,6 +641,14 @@ Näiteks: https://server.minu:8787
         %1 lõpetas kõne.
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        Kirjuta sõnum…
+    
+
 
     NewVerificationRequest
     
@@ -692,6 +700,24 @@ Näiteks: https://server.minu:8787
         implementeerimata sündmus: 
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -768,10 +794,18 @@ Näiteks: https://server.minu:8787
         Vigane koduserveri nimi
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        Sulge
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         salvestatud versiooni ei leidu
     
@@ -831,7 +865,7 @@ Näiteks: https://server.minu:8787
         Silt:
     
     
-        
+        
         Accept
         Nõustu
     
@@ -913,7 +947,7 @@ Näiteks: https://server.minu:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         Saada fail
     
@@ -967,15 +1001,14 @@ Näiteks: https://server.minu:8787
         Sõnumi ümbersõnastamine ebaõnnestus: %1
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         Sündmuse krüptimine ei õnnestunud, katkestame saatmise!
     
     
-        
+        
         Save image
         Salvesta pilt
     
@@ -1114,12 +1147,12 @@ Näiteks: https://server.minu:8787
         %1 muutis oma koputust jututoa uksele.
     
     
-        
+        
         You joined this room.
         Sa liitusid jututoaga.
     
     
-        
+        
         Rejected the knock from %1.
         Lükkas tagasi %1 koputuse jututoa uksele.
     
@@ -1161,7 +1194,7 @@ Näiteks: https://server.minu:8787
 
     TimelineView
     
-        
+        
         React
         Reageeri
     
@@ -1205,54 +1238,52 @@ Näiteks: https://server.minu:8787
         No room open
         Ühtegi jututuba pole avatud
     
+
+
+    TimelineViewManager
+    
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
     
-        
+        
         Back to room list
-        Tagasi jututubade loendisse
+        Tagasi jututubade loendisse
     
     
         
         
         No room selected
-        Jututuba on valimata
+        Jututuba on valimata
     
     
         
         Room options
-        Jututoa valikud
+        Jututoa valikud
     
     
         
         Invite users
-        Kutsu kasutajaid
+        Kutsu kasutajaid
     
     
         
         Members
-        Liikmed
+        Liikmed
     
     
         
         Leave room
-        Lahku jututoast
+        Lahku jututoast
     
     
         
         Settings
-        Seadistused
-    
-    
-        
-        Close
-        Sulge
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
+        Seadistused
     
 
 
@@ -1337,7 +1368,7 @@ Näiteks: https://server.minu:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         Vähenda tegumiribale
     
@@ -1357,7 +1388,12 @@ Näiteks: https://server.minu:8787
         Ümmargused tunnuspildid
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         KÕNED
     
@@ -1508,7 +1544,17 @@ See tavaliselt tähendab, et rakenduse ikoon tegumiribal annab mingit sorti anim
         Tee sõnumi font suuremaks, kui sõnumis on vaid mõned emojid.
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         Mastaabitegur
     
@@ -1553,7 +1599,7 @@ See tavaliselt tähendab, et rakenduse ikoon tegumiribal annab mingit sorti anim
         Seadme sõrmejälg
     
     
-        
+        
         Session Keys
         Sessioonivõtmed
     
@@ -1573,22 +1619,32 @@ See tavaliselt tähendab, et rakenduse ikoon tegumiribal annab mingit sorti anim
         KRÜPTIMINE
     
     
-        
+        
         GENERAL
         ÜLDISED SEADISTUSED
     
     
-        
+        
         INTERFACE
         LIIDES
     
     
-        
+        
         Emoji Font Family
         Fondiperekond emojide jaoks
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         Ava sessioonide fail
     
diff --git a/resources/langs/nheko_fi.ts b/resources/langs/nheko_fi.ts
index a8171557..bc44634c 100644
--- a/resources/langs/nheko_fi.ts
+++ b/resources/langs/nheko_fi.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         
     
     
         
-        
+        
         Invited user: %1
         
     
     
-        
+        
         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.
         
     
     
-        
+        
         Room %1 created.
         
     
@@ -154,12 +154,12 @@
         
     
     
-        
+        
         Failed to upload media. Please try again.
         
     
     
-        
+        
         Cache migration failed!
         
     
@@ -174,7 +174,7 @@
         
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         OLM-tilin palauttaminen epäonnistui. Ole hyvä ja kirjaudu sisään uudelleen.
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         Ole hyvä ja yritä kirjautua sisään uudelleen: %1
     
     
-        
+        
         Failed to join room: %1
         
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         -- Salattu viesti (salauksen purkuavaimia ei löydetty) --
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -637,6 +637,14 @@ Example: https://server.my:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        Kirjoita viesti…
+    
+
 
     NewVerificationRequest
     
@@ -688,6 +696,24 @@ Example: https://server.my:8787
         
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -764,10 +790,18 @@ Example: https://server.my:8787
         Epäkelpo palvelimen nimi
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        Sulje
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         ei tallennettua versiota
     
@@ -827,7 +861,7 @@ Example: https://server.my:8787
         
     
     
-        
+        
         Accept
         Hyväksy
     
@@ -909,7 +943,7 @@ Example: https://server.my:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         Lähetä tiedosto
     
@@ -963,15 +997,14 @@ Example: https://server.my:8787
         Viestin poisto epäonnistui: %1
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         Tallenna kuva
     
@@ -1110,12 +1143,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
         You joined this room.
         
     
     
-        
+        
         Rejected the knock from %1.
         
     
@@ -1157,7 +1190,7 @@ Example: https://server.my:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1201,8 +1234,19 @@ Example: https://server.my:8787
         No room open
         
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1237,19 +1281,6 @@ Example: https://server.my:8787
         Settings
         Asetukset
     
-    
-        
-        Close
-        Sulje
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1333,7 +1364,7 @@ Example: https://server.my:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         Pienennä ilmoitusalueelle
     
@@ -1353,7 +1384,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1496,7 +1532,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         Mittakerroin
     
@@ -1541,7 +1587,7 @@ This usually causes the application icon in the task bar to animate in some fash
         Laitteen sormenjälki
     
     
-        
+        
         Session Keys
         Istunnon avaimet
     
@@ -1561,22 +1607,32 @@ This usually causes the application icon in the task bar to animate in some fash
         SALAUS
     
     
-        
+        
         GENERAL
         YLEISET ASETUKSET
     
     
-        
+        
         INTERFACE
         
     
     
-        
+        
         Emoji Font Family
         
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         Avaa Istuntoavaintiedosto
     
diff --git a/resources/langs/nheko_fr.ts b/resources/langs/nheko_fr.ts
index 2958f056..f8f8380b 100644
--- a/resources/langs/nheko_fr.ts
+++ b/resources/langs/nheko_fr.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         Vous avez rejoint ce salon.
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         Échec lors de l'invitation de %1
     
     
         
-        
+        
         Invited user: %1
         %1 a été invité(e)
     
     
-        
+        
         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.
         La migration du cache vers la version actuelle a échoué. Cela peut arriver pour différentes raisons. Signalez le problème et essayez d'utiliser une ancienne version en attendant. Vous pouvez également supprimer le cache manuellement.
     
     
-        
+        
         Room %1 created.
         Salon %1 créé.
     
@@ -154,12 +154,12 @@
         %1 n'est plus banni(e)
     
     
-        
+        
         Failed to upload media. Please try again.
         Échec de l'envoi du média. Veuillez réessayer.
     
     
-        
+        
         Cache migration failed!
         Échec de la migration du cache !
     
@@ -174,7 +174,7 @@
         Le cache sur votre disque est plus récent que cette version de Nheko ne supporte. Veuillez mettre à jour ou supprimer votre cache.
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         Échec de la restauration du compte OLM. Veuillez vous reconnecter.
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         Veuillez vous reconnecter : %1
     
     
-        
+        
         Failed to join room: %1
         Impossible de rejoindre le salon : %1
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         Chercher
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         -- Évènement chiffré (pas de clé trouvé pour le déchiffrement) --
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -641,6 +641,14 @@ Exemple : https ://monserveur.example.com :8787
         Négociation de l'appel…
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        Écrivez un message…
+    
+
 
     NewVerificationRequest
     
@@ -692,6 +700,24 @@ Exemple : https ://monserveur.example.com :8787
         Évènement non implémenté : 
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -768,10 +794,18 @@ Exemple : https ://monserveur.example.com :8787
         Le nom du serveur est invalide
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        Fermer
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         pas de version enregistrée
     
@@ -831,7 +865,7 @@ Exemple : https ://monserveur.example.com :8787
         Étiquette :
     
     
-        
+        
         Accept
         Accepter
     
@@ -913,7 +947,7 @@ Exemple : https ://monserveur.example.com :8787
 
     TextInputWidget
     
-        
+        
         Send a file
         Envoyer un fichier
     
@@ -967,15 +1001,14 @@ Exemple : https ://monserveur.example.com :8787
         Échec de la suppression du message : %1
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         Échec du chiffrement de l'évènement, envoi abandonné !
     
     
-        
+        
         Save image
         Enregistrer l'image
     
@@ -1114,12 +1147,12 @@ Exemple : https ://monserveur.example.com :8787
         %1 ne frappe plus au salon.
     
     
-        
+        
         You joined this room.
         Vous avez rejoint ce salon.
     
     
-        
+        
         Rejected the knock from %1.
         %1 a été rejeté après avoir frappé au salon.
     
@@ -1161,7 +1194,7 @@ Exemple : https ://monserveur.example.com :8787
 
     TimelineView
     
-        
+        
         React
         Réagir
     
@@ -1205,54 +1238,52 @@ Exemple : https ://monserveur.example.com :8787
         No room open
         Aucun salon ouvert
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
-        Revenir à la liste des salons
+        Revenir à la liste des salons
     
     
         
         
         No room selected
-        Pas de salon sélectionné
+        Pas de salon sélectionné
     
     
         
         Room options
-        Options du salon
+        Options du salon
     
     
         
         Invite users
-        Inviter des utilisateurs
+        Inviter des utilisateurs
     
     
         
         Members
-        Membres
+        Membres
     
     
         
         Leave room
-        Quitter le salon
+        Quitter le salon
     
     
         
         Settings
-        Paramètres
-    
-    
-        
-        Close
-        Fermer
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
+        Paramètres
     
 
 
@@ -1337,7 +1368,7 @@ Exemple : https ://monserveur.example.com :8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         Réduire à la barre des tâches
     
@@ -1357,7 +1388,12 @@ Exemple : https ://monserveur.example.com :8787
         Avatars circulaires
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         APPELS
     
@@ -1509,7 +1545,17 @@ Cela met l'application en évidence dans la barre des tâches.Augmente la taille de la police lors de l'affichage de messages contenant uniquement quelques emojis.
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         Facteur d'échelle
     
@@ -1554,7 +1600,7 @@ Cela met l'application en évidence dans la barre des tâches.Empreinte de l'appareil
     
     
-        
+        
         Session Keys
         Clés de session
     
@@ -1574,22 +1620,32 @@ Cela met l'application en évidence dans la barre des tâches.CHIFFREMENT
     
     
-        
+        
         GENERAL
         GÉNÉRAL
     
     
-        
+        
         INTERFACE
         INTERFACE
     
     
-        
+        
         Emoji Font Family
         Nom de Police Emoji
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         Ouvrir fichier de sessions
     
diff --git a/resources/langs/nheko_it.ts b/resources/langs/nheko_it.ts
index 1c71b43e..b8efa774 100644
--- a/resources/langs/nheko_it.ts
+++ b/resources/langs/nheko_it.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         Sei entrato in questa stanza.
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         Impossibile invitare l'utente: %1
     
     
         
-        
+        
         Invited user: %1
         Invitato utente: %1
     
     
-        
+        
         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.
         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.
     
     
-        
+        
         Room %1 created.
         Stanza %1 creata.
     
@@ -154,12 +154,12 @@
         Rimosso il ban dall'utente: %1
     
     
-        
+        
         Failed to upload media. Please try again.
         Impossibile inviare il file multimediale. Per favore riprova.
     
     
-        
+        
         Cache migration failed!
         Migrazione della cache fallita!
     
@@ -174,7 +174,7 @@
         La cache sul tuo disco è più nuova di quella supportata da questa versione di Nheko. Per favore aggiorna o pulisci la tua cache.
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         Impossibile ripristinare l'account OLM. Per favore accedi nuovamente.
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         Per favore prova ad accedere nuovamente: %1
     
     
-        
+        
         Failed to join room: %1
         Impossibile accedere alla stanza: %1
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         -- Evento Criptato (Chiavi per la decriptazione non trovate) --
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -641,6 +641,14 @@ Esempio: https://server.mio:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        Scrivi un messaggio…
+    
+
 
     NewVerificationRequest
     
@@ -692,6 +700,24 @@ Esempio: https://server.mio:8787
          event non implementato:
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -768,10 +794,18 @@ Esempio: https://server.mio:8787
         Nome del server non valido
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        Chiudi
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         nessuna versione memorizzata
     
@@ -831,7 +865,7 @@ Esempio: https://server.mio:8787
         
     
     
-        
+        
         Accept
         Accetta
     
@@ -913,7 +947,7 @@ Esempio: https://server.mio:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         Invia un file
     
@@ -967,15 +1001,14 @@ Esempio: https://server.mio:8787
         Oscuramento del messaggio fallito: %1
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         Salva immagine
     
@@ -1114,12 +1147,12 @@ Esempio: https://server.mio:8787
         %1 ha oscurato la sua bussata.
     
     
-        
+        
         You joined this room.
         Sei entrato in questa stanza.
     
     
-        
+        
         Rejected the knock from %1.
         Rifiutata la bussata di %1.
     
@@ -1161,7 +1194,7 @@ Esempio: https://server.mio:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1205,8 +1238,19 @@ Esempio: https://server.mio:8787
         No room open
         Nessuna stanza aperta
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1241,19 +1285,6 @@ Esempio: https://server.mio:8787
         Settings
         Impostazioni
     
-    
-        
-        Close
-        Chiudi
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1337,7 +1368,7 @@ Esempio: https://server.mio:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         Minimizza nella tray
     
@@ -1357,7 +1388,12 @@ Esempio: https://server.mio:8787
         Avatar Circolari
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1500,7 +1536,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         Fattore di scala
     
@@ -1545,7 +1591,7 @@ This usually causes the application icon in the task bar to animate in some fash
         Impronta digitale del dispositivo
     
     
-        
+        
         Session Keys
         Chiavi di Sessione
     
@@ -1565,22 +1611,32 @@ This usually causes the application icon in the task bar to animate in some fash
         CRITTOGRAFIA
     
     
-        
+        
         GENERAL
         GENERALE
     
     
-        
+        
         INTERFACE
         INTERFACCIA
     
     
-        
+        
         Emoji Font Family
         Famiglia dei caratteri delle Emoji
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         Apri File delle Sessioni
     
diff --git a/resources/langs/nheko_ja.ts b/resources/langs/nheko_ja.ts
index 4c53bab0..26d6188c 100644
--- a/resources/langs/nheko_ja.ts
+++ b/resources/langs/nheko_ja.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         ユーザーを招待できませんでした: %1
     
     
         
-        
+        
         Invited user: %1
         招待されたユーザー: %1
     
     
-        
+        
         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.
         
     
     
-        
+        
         Room %1 created.
         
     
@@ -154,12 +154,12 @@
         永久追放を解除されたユーザー: %1
     
     
-        
+        
         Failed to upload media. Please try again.
         メディアをアップロードできませんでした。やり直して下さい。
     
     
-        
+        
         Cache migration failed!
         
     
@@ -174,7 +174,7 @@
         
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         OLMアカウントを復元できませんでした。もう一度ログインして下さい。
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         もう一度ログインしてみて下さい: %1
     
     
-        
+        
         Failed to join room: %1
         部屋に参加できませんでした: %1
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         -- 暗号化イベント (復号鍵が見つかりません) --
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -637,6 +637,14 @@ Example: https://server.my:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        メッセージを書く...
+    
+
 
     NewVerificationRequest
     
@@ -688,6 +696,24 @@ Example: https://server.my:8787
         未実装のイベント: 
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -764,10 +790,18 @@ Example: https://server.my:8787
         無効なサーバー名です
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        閉じる
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         バージョンが保存されていません
     
@@ -827,7 +861,7 @@ Example: https://server.my:8787
         
     
     
-        
+        
         Accept
         容認
     
@@ -909,7 +943,7 @@ Example: https://server.my:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         ファイルを送信
     
@@ -963,15 +997,14 @@ Example: https://server.my:8787
         メッセージを編集できませんでした: %1
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         画像を保存
     
@@ -1109,12 +1142,12 @@ Example: https://server.my:8787
         %1がノックを編集しました。
     
     
-        
+        
         You joined this room.
         
     
     
-        
+        
         Rejected the knock from %1.
         %1からのノックを拒否しました。
     
@@ -1156,7 +1189,7 @@ Example: https://server.my:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1200,8 +1233,19 @@ Example: https://server.my:8787
         No room open
         部屋が開いていません
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1236,19 +1280,6 @@ Example: https://server.my:8787
         Settings
         設定
     
-    
-        
-        Close
-        閉じる
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1332,7 +1363,7 @@ Example: https://server.my:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         トレイへ最小化
     
@@ -1352,7 +1383,12 @@ Example: https://server.my:8787
         円形アバター
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1495,7 +1531,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         尺度係数
     
@@ -1540,7 +1586,7 @@ This usually causes the application icon in the task bar to animate in some fash
         デバイスの指紋
     
     
-        
+        
         Session Keys
         セッション鍵
     
@@ -1560,22 +1606,32 @@ This usually causes the application icon in the task bar to animate in some fash
         暗号化
     
     
-        
+        
         GENERAL
         全般
     
     
-        
+        
         INTERFACE
         
     
     
-        
+        
         Emoji Font Family
         
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         セッションファイルを開く
     
diff --git a/resources/langs/nheko_nl.ts b/resources/langs/nheko_nl.ts
index 5cdbbe9e..d6d91c3e 100644
--- a/resources/langs/nheko_nl.ts
+++ b/resources/langs/nheko_nl.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         
     
     
         
-        
+        
         Invited user: %1
         
     
     
-        
+        
         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.
         
     
     
-        
+        
         Room %1 created.
         
     
@@ -154,12 +154,12 @@
         
     
     
-        
+        
         Failed to upload media. Please try again.
         
     
     
-        
+        
         Cache migration failed!
         
     
@@ -174,7 +174,7 @@
         
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         
     
     
-        
+        
         Failed to join room: %1
         
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -637,6 +637,14 @@ Example: https://server.my:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        Typ een bericht...
+    
+
 
     NewVerificationRequest
     
@@ -688,6 +696,24 @@ Example: https://server.my:8787
         
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -764,10 +790,18 @@ Example: https://server.my:8787
         Ongeldige servernaam
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         
     
@@ -827,7 +861,7 @@ Example: https://server.my:8787
         
     
     
-        
+        
         Accept
         Accepteren
     
@@ -909,7 +943,7 @@ Example: https://server.my:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         
     
@@ -963,15 +997,14 @@ Example: https://server.my:8787
         
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         Afbeelding opslaan
     
@@ -1110,12 +1143,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
         You joined this room.
         
     
     
-        
+        
         Rejected the knock from %1.
         
     
@@ -1157,7 +1190,7 @@ Example: https://server.my:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1201,8 +1234,19 @@ Example: https://server.my:8787
         No room open
         
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1237,19 +1281,6 @@ Example: https://server.my:8787
         Settings
         Instellingen
     
-    
-        
-        Close
-        
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1333,7 +1364,7 @@ Example: https://server.my:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         Minimaliseren naar systeemvak
     
@@ -1353,7 +1384,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1496,7 +1532,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         
     
@@ -1541,7 +1587,7 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         Session Keys
         
     
@@ -1561,22 +1607,32 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         GENERAL
         ALGEMEEN
     
     
-        
+        
         INTERFACE
         
     
     
-        
+        
         Emoji Font Family
         
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         
     
diff --git a/resources/langs/nheko_pl.ts b/resources/langs/nheko_pl.ts
index 4e3c1b0b..2479268e 100644
--- a/resources/langs/nheko_pl.ts
+++ b/resources/langs/nheko_pl.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         
     
     
         
-        
+        
         Invited user: %1
         
     
     
-        
+        
         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.
         
     
     
-        
+        
         Room %1 created.
         
     
@@ -154,12 +154,12 @@
         
     
     
-        
+        
         Failed to upload media. Please try again.
         
     
     
-        
+        
         Cache migration failed!
         
     
@@ -174,7 +174,7 @@
         
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         Nie udało się przywrócić konta OLM. Spróbuj zalogować się ponownie.
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         Spróbuj zalogować się ponownie: %1
     
     
-        
+        
         Failed to join room: %1
         
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -637,6 +637,14 @@ Example: https://server.my:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        Napisz wiadomość…
+    
+
 
     NewVerificationRequest
     
@@ -688,6 +696,24 @@ Example: https://server.my:8787
         
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -764,10 +790,18 @@ Example: https://server.my:8787
         Nieprawidłowa nazwa serwera
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         
     
@@ -827,7 +861,7 @@ Example: https://server.my:8787
         
     
     
-        
+        
         Accept
         Akceptuj
     
@@ -909,7 +943,7 @@ Example: https://server.my:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         Wyślij plik
     
@@ -963,15 +997,14 @@ Example: https://server.my:8787
         Redagowanie wiadomości nie powiodło się: %1
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         Zapisz obraz
     
@@ -1111,12 +1144,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
         You joined this room.
         
     
     
-        
+        
         Rejected the knock from %1.
         
     
@@ -1158,7 +1191,7 @@ Example: https://server.my:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1202,8 +1235,19 @@ Example: https://server.my:8787
         No room open
         
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1238,19 +1282,6 @@ Example: https://server.my:8787
         Settings
         Ustawienia
     
-    
-        
-        Close
-        
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1334,7 +1365,7 @@ Example: https://server.my:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         Zminimalizuj do paska zadań
     
@@ -1354,7 +1385,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1497,7 +1533,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         
     
@@ -1542,7 +1588,7 @@ This usually causes the application icon in the task bar to animate in some fash
         Odcisk palca urządzenia
     
     
-        
+        
         Session Keys
         
     
@@ -1562,22 +1608,32 @@ This usually causes the application icon in the task bar to animate in some fash
         SZYFROWANIE
     
     
-        
+        
         GENERAL
         OGÓLNE
     
     
-        
+        
         INTERFACE
         
     
     
-        
+        
         Emoji Font Family
         
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         
     
diff --git a/resources/langs/nheko_pt_PT.ts b/resources/langs/nheko_pt_PT.ts
index a4a337b1..70921b70 100644
--- a/resources/langs/nheko_pt_PT.ts
+++ b/resources/langs/nheko_pt_PT.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         
     
     
         
-        
+        
         Invited user: %1
         
     
     
-        
+        
         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.
         
     
     
-        
+        
         Room %1 created.
         
     
@@ -154,12 +154,12 @@
         
     
     
-        
+        
         Failed to upload media. Please try again.
         
     
     
-        
+        
         Cache migration failed!
         
     
@@ -174,7 +174,7 @@
         
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         
     
     
-        
+        
         Failed to join room: %1
         
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -637,6 +637,14 @@ Example: https://server.my:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        
+    
+
 
     NewVerificationRequest
     
@@ -688,6 +696,24 @@ Example: https://server.my:8787
         
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -764,10 +790,18 @@ Example: https://server.my:8787
         
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         
     
@@ -827,7 +861,7 @@ Example: https://server.my:8787
         
     
     
-        
+        
         Accept
         
     
@@ -909,7 +943,7 @@ Example: https://server.my:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         
     
@@ -963,15 +997,14 @@ Example: https://server.my:8787
         
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         
     
@@ -1110,12 +1143,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
         You joined this room.
         
     
     
-        
+        
         Rejected the knock from %1.
         
     
@@ -1157,7 +1190,7 @@ Example: https://server.my:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1201,8 +1234,19 @@ Example: https://server.my:8787
         No room open
         
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1237,19 +1281,6 @@ Example: https://server.my:8787
         Settings
         
     
-    
-        
-        Close
-        
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1333,7 +1364,7 @@ Example: https://server.my:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         
     
@@ -1353,7 +1384,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1496,7 +1532,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         
     
@@ -1541,7 +1587,7 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         Session Keys
         
     
@@ -1561,22 +1607,32 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         GENERAL
         
     
     
-        
+        
         INTERFACE
         
     
     
-        
+        
         Emoji Font Family
         
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         
     
diff --git a/resources/langs/nheko_ro.ts b/resources/langs/nheko_ro.ts
index 30476860..3ee30c1f 100644
--- a/resources/langs/nheko_ro.ts
+++ b/resources/langs/nheko_ro.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         
     
     
         
-        
+        
         Invited user: %1
         
     
     
-        
+        
         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.
         
     
     
-        
+        
         Room %1 created.
         
     
@@ -154,12 +154,12 @@
         
     
     
-        
+        
         Failed to upload media. Please try again.
         
     
     
-        
+        
         Cache migration failed!
         
     
@@ -174,7 +174,7 @@
         
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         
     
     
-        
+        
         Failed to join room: %1
         
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -637,6 +637,14 @@ Example: https://server.my:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        
+    
+
 
     NewVerificationRequest
     
@@ -688,6 +696,24 @@ Example: https://server.my:8787
         
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -764,10 +790,18 @@ Example: https://server.my:8787
         
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         
     
@@ -827,7 +861,7 @@ Example: https://server.my:8787
         
     
     
-        
+        
         Accept
         
     
@@ -909,7 +943,7 @@ Example: https://server.my:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         
     
@@ -963,15 +997,14 @@ Example: https://server.my:8787
         
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         
     
@@ -1111,12 +1144,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
         You joined this room.
         
     
     
-        
+        
         Rejected the knock from %1.
         
     
@@ -1158,7 +1191,7 @@ Example: https://server.my:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1202,8 +1235,19 @@ Example: https://server.my:8787
         No room open
         
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1238,19 +1282,6 @@ Example: https://server.my:8787
         Settings
         
     
-    
-        
-        Close
-        
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1334,7 +1365,7 @@ Example: https://server.my:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         
     
@@ -1354,7 +1385,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1497,7 +1533,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         
     
@@ -1542,7 +1588,7 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         Session Keys
         
     
@@ -1562,22 +1608,32 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         GENERAL
         
     
     
-        
+        
         INTERFACE
         
     
     
-        
+        
         Emoji Font Family
         
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         
     
diff --git a/resources/langs/nheko_ru.ts b/resources/langs/nheko_ru.ts
index 5625d591..bc349646 100644
--- a/resources/langs/nheko_ru.ts
+++ b/resources/langs/nheko_ru.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         
     
     
         
-        
+        
         Invited user: %1
         
     
     
-        
+        
         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.
         
     
     
-        
+        
         Room %1 created.
         
     
@@ -154,12 +154,12 @@
         
     
     
-        
+        
         Failed to upload media. Please try again.
         
     
     
-        
+        
         Cache migration failed!
         
     
@@ -174,7 +174,7 @@
         
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         Не удалось восстановить учетную запись OLM. Пожалуйста, войдите снова.
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         Повторите попытку входа: %1
     
     
-        
+        
         Failed to join room: %1
         
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -637,6 +637,14 @@ Example: https://server.my:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        Написать сообщение...
+    
+
 
     NewVerificationRequest
     
@@ -688,6 +696,24 @@ Example: https://server.my:8787
         
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -764,10 +790,18 @@ Example: https://server.my:8787
         Неверное имя сервера
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        Закрыть
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         
     
@@ -827,7 +861,7 @@ Example: https://server.my:8787
         
     
     
-        
+        
         Accept
         Принять
     
@@ -909,7 +943,7 @@ Example: https://server.my:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         Отправить файл
     
@@ -963,15 +997,14 @@ Example: https://server.my:8787
         Ошибка редактирования сообщения: %1
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         Сохранить изображение
     
@@ -1111,12 +1144,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
         You joined this room.
         
     
     
-        
+        
         Rejected the knock from %1.
         
     
@@ -1158,7 +1191,7 @@ Example: https://server.my:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1202,8 +1235,19 @@ Example: https://server.my:8787
         No room open
         
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1238,19 +1282,6 @@ Example: https://server.my:8787
         Settings
         Настройки
     
-    
-        
-        Close
-        Закрыть
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1334,7 +1365,7 @@ Example: https://server.my:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         Сворачивать в системную панель
     
@@ -1354,7 +1385,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1497,7 +1533,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         Масштаб
     
@@ -1542,7 +1588,7 @@ This usually causes the application icon in the task bar to animate in some fash
         Отпечаток устройства
     
     
-        
+        
         Session Keys
         Ключи сеанса
     
@@ -1562,22 +1608,32 @@ This usually causes the application icon in the task bar to animate in some fash
         ШИФРОВАНИЕ
     
     
-        
+        
         GENERAL
         ГЛАВНОЕ
     
     
-        
+        
         INTERFACE
         
     
     
-        
+        
         Emoji Font Family
         
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         Открыть файл сеансов
     
diff --git a/resources/langs/nheko_si.ts b/resources/langs/nheko_si.ts
index b53bec5d..c63e58e3 100644
--- a/resources/langs/nheko_si.ts
+++ b/resources/langs/nheko_si.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         
     
     
         
-        
+        
         Invited user: %1
         
     
     
-        
+        
         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.
         
     
     
-        
+        
         Room %1 created.
         
     
@@ -154,12 +154,12 @@
         
     
     
-        
+        
         Failed to upload media. Please try again.
         
     
     
-        
+        
         Cache migration failed!
         
     
@@ -174,7 +174,7 @@
         
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         
     
     
-        
+        
         Failed to join room: %1
         
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -637,6 +637,14 @@ Example: https://server.my:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        
+    
+
 
     NewVerificationRequest
     
@@ -688,6 +696,24 @@ Example: https://server.my:8787
         
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -764,10 +790,18 @@ Example: https://server.my:8787
         
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         
     
@@ -827,7 +861,7 @@ Example: https://server.my:8787
         
     
     
-        
+        
         Accept
         
     
@@ -909,7 +943,7 @@ Example: https://server.my:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         
     
@@ -963,15 +997,14 @@ Example: https://server.my:8787
         
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         
     
@@ -1110,12 +1143,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
         You joined this room.
         
     
     
-        
+        
         Rejected the knock from %1.
         
     
@@ -1157,7 +1190,7 @@ Example: https://server.my:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1201,8 +1234,19 @@ Example: https://server.my:8787
         No room open
         
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1237,19 +1281,6 @@ Example: https://server.my:8787
         Settings
         
     
-    
-        
-        Close
-        
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1333,7 +1364,7 @@ Example: https://server.my:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         
     
@@ -1353,7 +1384,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1496,7 +1532,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         
     
@@ -1541,7 +1587,7 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         Session Keys
         
     
@@ -1561,22 +1607,32 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
         GENERAL
         
     
     
-        
+        
         INTERFACE
         
     
     
-        
+        
         Emoji Font Family
         
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         
     
diff --git a/resources/langs/nheko_zh_CN.ts b/resources/langs/nheko_zh_CN.ts
index ae7a871a..eee53d95 100644
--- a/resources/langs/nheko_zh_CN.ts
+++ b/resources/langs/nheko_zh_CN.ts
@@ -50,7 +50,7 @@
 
     Cache
     
-        
+        
         You joined this room.
         
     
@@ -58,23 +58,23 @@
 
     ChatPage
     
-        
+        
         Failed to invite user: %1
         
     
     
         
-        
+        
         Invited user: %1
         
     
     
-        
+        
         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.
         
     
     
-        
+        
         Room %1 created.
         
     
@@ -154,12 +154,12 @@
         
     
     
-        
+        
         Failed to upload media. Please try again.
         
     
     
-        
+        
         Cache migration failed!
         
     
@@ -174,7 +174,7 @@
         
     
     
-        
+        
         Failed to restore OLM account. Please login again.
         恢复 OLM 账户失败。请重新登录。
     
@@ -190,12 +190,12 @@
     
     
         
-        
+        
         Please try to login again: %1
         请尝试再次登录:%1
     
     
-        
+        
         Failed to join room: %1
         
     
@@ -304,7 +304,7 @@
 
     EmojiPicker
     
-        
+        
         
         Search
         
@@ -389,13 +389,13 @@
 
     EventStore
     
-        
+        
         -- Encrypted Event (No keys found for decryption) --
         Placeholder, when the message was not decrypted yet or can't be decrypted.
         
     
     
-        
+        
         
         -- Decryption Error (failed to retrieve megolm keys from db) --
         Placeholder, when the message can't be decrypted, because the DB access failed.
@@ -637,6 +637,14 @@ Example: https://server.my:8787
         
     
 
+
+    MessageInput
+    
+        
+        Write a message...
+        写一条消息...
+    
+
 
     NewVerificationRequest
     
@@ -688,6 +696,24 @@ Example: https://server.my:8787
         
     
 
+
+    QCoreApplication
+    
+        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+        
+    
+    
+        
+        profile
+        
+    
+    
+        
+        profile name
+        
+    
+
 
     QuickSwitcher
     
@@ -764,10 +790,18 @@ Example: https://server.my:8787
         无效的服务器名
     
 
+
+    ReplyPopup
+    
+        
+        Close
+        
+    
+
 
     RoomInfo
     
-        
+        
         no version stored
         
     
@@ -827,7 +861,7 @@ Example: https://server.my:8787
         
     
     
-        
+        
         Accept
         接受
     
@@ -909,7 +943,7 @@ Example: https://server.my:8787
 
     TextInputWidget
     
-        
+        
         Send a file
         发送一个文件
     
@@ -963,15 +997,14 @@ Example: https://server.my:8787
         删除消息失败:%1
     
     
-        
-        
-        
+        
+        
         
         Failed to encrypt event, sending aborted!
         
     
     
-        
+        
         Save image
         保存图像
     
@@ -1109,12 +1142,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
         You joined this room.
         
     
     
-        
+        
         Rejected the knock from %1.
         
     
@@ -1156,7 +1189,7 @@ Example: https://server.my:8787
 
     TimelineView
     
-        
+        
         React
         
     
@@ -1200,8 +1233,19 @@ Example: https://server.my:8787
         No room open
         
     
+
+
+    TimelineViewManager
     
-        
+        
+        No share room with this user found. Create an encrypted room with this user and try again.
+        
+    
+
+
+    TopBar
+    
+        
         Back to room list
         
     
@@ -1236,19 +1280,6 @@ Example: https://server.my:8787
         Settings
         设置
     
-    
-        
-        Close
-        
-    
-
-
-    TimelineViewManager
-    
-        
-        No share room with this user found. Create an encrypted room with this user and try again.
-        
-    
 
 
     TrayIcon
@@ -1332,7 +1363,7 @@ Example: https://server.my:8787
 
     UserSettingsPage
     
-        
+        
         Minimize to tray
         最小化至托盘
     
@@ -1352,7 +1383,12 @@ Example: https://server.my:8787
         
     
     
-        
+        
+        profile: %1
+        
+    
+    
+        
         CALLS
         
     
@@ -1495,7 +1531,17 @@ This usually causes the application icon in the task bar to animate in some fash
         
     
     
-        
+        
+        Mobile mode
+        
+    
+    
+        
+        Will prevent text selection in the timeline to make scrolling easier.
+        
+    
+    
+        
         Scale factor
         
     
@@ -1540,7 +1586,7 @@ This usually causes the application icon in the task bar to animate in some fash
         设备指纹
     
     
-        
+        
         Session Keys
         会话密钥
     
@@ -1560,22 +1606,32 @@ This usually causes the application icon in the task bar to animate in some fash
         加密
     
     
-        
+        
         GENERAL
         通用
     
     
-        
+        
         INTERFACE
         
     
     
-        
+        
         Emoji Font Family
         
     
     
-        
+        
+        Share keys with trusted users
+        
+    
+    
+        
+        Automatically replies to key requests from other users, if they are verified.
+        
+    
+    
+        
         Open Sessions File
         打开会话文件
     
-- 
cgit 1.5.1


From 7f2d18c36dabbcae0d0637d489371c2b71869e67 Mon Sep 17 00:00:00 2001
From: Nicolas Werner 
Date: Mon, 26 Oct 2020 21:44:31 +0100
Subject: Fix small scope issue

---
 resources/qml/TimelineView.qml | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

(limited to 'resources')

diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml
index 516c6860..de047e8a 100644
--- a/resources/qml/TimelineView.qml
+++ b/resources/qml/TimelineView.qml
@@ -57,7 +57,6 @@ Page {
         property string eventId
         property int eventType
         property bool isEncrypted
-        property var room: TimelineManager.timeline
 
         function show(eventId_, eventType_, isEncrypted_, showAt_, position) {
             eventId = eventId_;
@@ -78,12 +77,12 @@ Page {
 
         MenuItem {
             text: qsTr("Reply")
-            onClicked: room.replyAction(messageContextMenu.eventId)
+            onClicked: TimelineManager.timeline.replyAction(messageContextMenu.eventId)
         }
 
         MenuItem {
             text: qsTr("Read receipts")
-            onTriggered: room.readReceiptsAction(messageContextMenu.eventId)
+            onTriggered: TimelineManager.timeline.readReceiptsAction(messageContextMenu.eventId)
         }
 
         MenuItem {
@@ -92,19 +91,19 @@ Page {
 
         MenuItem {
             text: qsTr("View raw message")
-            onTriggered: room.viewRawMessage(messageContextMenu.eventId)
+            onTriggered: TimelineManager.timeline.viewRawMessage(messageContextMenu.eventId)
         }
 
         MenuItem {
             visible: messageContextMenu.isEncrypted
             height: visible ? implicitHeight : 0
             text: qsTr("View decrypted raw message")
-            onTriggered: room.viewDecryptedRawMessage(messageContextMenu.eventId)
+            onTriggered: TimelineManager.timeline.viewDecryptedRawMessage(messageContextMenu.eventId)
         }
 
         MenuItem {
             text: qsTr("Redact message")
-            onTriggered: room.redactEvent(messageContextMenu.eventId)
+            onTriggered: TimelineManager.timeline.redactEvent(messageContextMenu.eventId)
         }
 
         MenuItem {
-- 
cgit 1.5.1


From 8047442661296f280999f4e97dc6fddd32a2a187 Mon Sep 17 00:00:00 2001
From: Weblate 
Date: Mon, 26 Oct 2020 17:26:42 -0400
Subject: Translated using Weblate (English)

Currently translated at 100.0% (411 of 411 strings)

Co-authored-by: Joseph Donofry 
Translate-URL: https://weblate.nheko.im/projects/nheko/nheko-master/en/
Translation: Nheko/nheko
---
 resources/langs/nheko_en.ts | 120 ++++++++++++++++++++++----------------------
 1 file changed, 60 insertions(+), 60 deletions(-)

(limited to 'resources')

diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts
index 8389a960..12e030b1 100644
--- a/resources/langs/nheko_en.ts
+++ b/resources/langs/nheko_en.ts
@@ -6,27 +6,27 @@
     
         
         Initiating...
-        
+        Initiating…
     
     
         
         Calling...
-        
+        Calling…
     
     
         
         Connecting...
-        
+        Connecting…
     
     
         
         Unmute Mic
-        
+        Unmute Mic
     
     
         
         Mute Mic
-        
+        Mute Mic
     
 
 
@@ -34,17 +34,17 @@
     
         
         Awaiting Confirmation
-        
+        Awaiting Confirmation
     
     
         
         Waiting for other side to complete verification.
-        
+        Waiting for other side to complete verification.
     
     
         
         Cancel
-        Cancel
+        Cancel
     
 
 
@@ -260,22 +260,22 @@
     
         
         Verification Code
-        
+        Verification Code
     
     
         
         Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification!
-        
+        Please verify the following digits.  You should see the same numbers on both sides.  If they differ, please press 'They do not match!' to abort verification!
     
     
         
         They do not match!
-        
+        They do not match!
     
     
         
         They match!
-        
+        They match!
     
 
 
@@ -355,22 +355,22 @@
     
         
         Verification Code
-        
+        Verification Code
     
     
         
         Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification!
-        
+        Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification!
     
     
         
         They do not match!
-        
+        They do not match!
     
     
         
         They match!
-        
+        They match!
     
 
 
@@ -430,33 +430,33 @@
     
         
         Verification failed
-        
+        Verification failed
     
     
         
         Other client does not support our verification protocol.
-        
+        Other client does not support our verification protocol.
     
     
         
         Key mismatch detected!
-        
+        Key mismatch detected!
     
     
         
         
         Device verification timed out.
-        
+        Device verification timed out.
     
     
         
         Other party canceled the verification.
-        
+        Other party canceled the verification.
     
     
         
         Close
-        Close
+        Close
     
 
 
@@ -646,7 +646,7 @@ Example: https://server.my:8787
     
         
         Write a message...
-        Write a message…
+        Write a message…
     
 
 
@@ -654,42 +654,42 @@ Example: https://server.my:8787
     
         
         Send Device Verification Request
-        
+        Send Device Verification Request
     
     
         
         Recieved Device Verification Request
-        
+        Received Device Verification Request
     
     
         
         To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device.
-        
+        To ensure that no malicious user can eavesdrop on your encrypted communications, you can verify this device.
     
     
         
         The device was requested to be verified
-        
+        The device was requested to be verified.
     
     
         
         Cancel
-        Cancel
+        Cancel
     
     
         
         Deny
-        
+        Deny
     
     
         
         Start verification
-        
+        Start verification
     
     
         
         Accept
-        Accept
+        Accept
     
 
 
@@ -705,17 +705,17 @@ Example: https://server.my:8787
     
         
         Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
-        
+        Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
     
     
         
         profile
-        
+        profile
     
     
         
         profile name
-        
+        profile name
     
 
 
@@ -799,7 +799,7 @@ Example: https://server.my:8787
     
         
         Close
-        Close
+        Close
     
 
 
@@ -931,17 +931,17 @@ Example: https://server.my:8787
     
         
         Successful Verification
-        
+        Successful Verification
     
     
         
         Verification successful! Both sides verified their devices!
-        
+        Verification successful!  Both sides verified their devices!
     
     
         
         Close
-        Close
+        Close
     
 
 
@@ -1244,7 +1244,7 @@ Example: https://server.my:8787
     
         
         No share room with this user found. Create an encrypted room with this user and try again.
-        
+        No shared room with this user found.  Create an encrypted room with this user and try again.
     
 
 
@@ -1252,38 +1252,38 @@ Example: https://server.my:8787
     
         
         Back to room list
-        Back to room list
+        Back to room list
     
     
         
         
         No room selected
-        No room selected
+        No room selected
     
     
         
         Room options
-        Room options
+        Room options
     
     
         
         Invite users
-        Invite users
+        Invite users
     
     
         
         Members
-        Members
+        Members
     
     
         
         Leave room
-        Leave room
+        Leave room
     
     
         
         Settings
-        Settings
+        Settings
     
 
 
@@ -1347,22 +1347,22 @@ Example: https://server.my:8787
     
         
         Verify
-        
+        Verify
     
     
         
         Ban the user
-        
+        Ban the user
     
     
         
         Start a private chat
-        
+        Start a private chat
     
     
         
         Kick the user
-        
+        Kick the user
     
 
 
@@ -1390,7 +1390,7 @@ Example: https://server.my:8787
     
         
         profile: %1
-        
+        profile: %1
     
     
         
@@ -1546,12 +1546,12 @@ This usually causes the application icon in the task bar to animate in some fash
     
         
         Mobile mode
-        
+        Mobile mode
     
     
         
         Will prevent text selection in the timeline to make scrolling easier.
-        
+        Will prevent text selection in the timeline to make scrolling easier.
     
     
         
@@ -1636,12 +1636,12 @@ This usually causes the application icon in the task bar to animate in some fash
     
         
         Share keys with trusted users
-        
+        Share keys with trusted users
     
     
         
         Automatically replies to key requests from other users, if they are verified.
-        
+        Automatically replies to key requests from other users, if they are verified.
     
     
         
@@ -1695,27 +1695,27 @@ This usually causes the application icon in the task bar to animate in some fash
     
         
         Waiting for other party
-        
+        Waiting for other party…
     
     
         
         Waiting for other side to accept the verification request.
-        
+        Waiting for other side to accept the verification request…
     
     
         
         Waiting for other side to continue the verification request.
-        
+        Waiting for other side to continue the verification request…
     
     
         
         Waiting for other side to complete the verification request.
-        
+        Waiting for other side to complete the verification request…
     
     
         
         Cancel
-        Cancel
+        Cancel
     
 
 
-- 
cgit 1.5.1