diff --git a/resources/langs/nheko_de.ts b/resources/langs/nheko_de.ts
index 3f9cdc52ab6e72dfd8eca07ca2afa609a2eb5321..fcbf8b31dc31b66a16833faabd4c92121b94558b 100644
--- a/resources/langs/nheko_de.ts
+++ b/resources/langs/nheko_de.ts
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="de">
+<context>
+    <name>Cache</name>
+    <message>
+        <location filename="../../src/Cache.cpp" line="+1341"/>
+        <source>You joined this room.</source>
+        <translation>Du bist dem Raum beigetreten.</translation>
+    </message>
+</context>
 <context>
     <name>ChatPage</name>
     <message>
@@ -10,12 +18,22 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+888"/>
+        <location line="+892"/>
         <source>Invited user: %1</source>
         <translation>Eingeladener Benutzer: %1</translation>
     </message>
     <message>
-        <location line="-5"/>
+        <location line="-463"/>
+        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
+        <translation>Migrieren des Caches auf die aktuelle Version fehlgeschlagen. Das kann verschiedene Gründe als Ursache haben. Bitte lege einen Bugreport an und verwende in der Zwischenzeit eine ältere Version. Alternativ kannst du das Cache manuell entfernen.</translation>
+    </message>
+    <message>
+        <location line="+428"/>
+        <source>Room %1 created.</source>
+        <translation>Raum %1 erzeugt.</translation>
+    </message>
+    <message>
+        <location line="+30"/>
         <source>Failed to invite %1 to %2: %3</source>
         <translation>Einladung von %1 in Raum %2 fehlgeschlagen: %3</translation>
     </message>
@@ -50,29 +68,24 @@
         <translation>Verbannung von %1 wurde aufgehoben.</translation>
     </message>
     <message>
-        <location line="-813"/>
+        <location line="-817"/>
         <source>Failed to upload media. Please try again.</source>
         <translation>Medienupload fehlgeschlagen. Bitte versuche es erneut.</translation>
     </message>
     <message>
         <location line="+296"/>
         <source>Cache migration failed!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+1"/>
-        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
-        <translation type="unfinished"></translation>
+        <translation>Cache migration fehlgeschlagen!</translation>
     </message>
     <message>
-        <location line="+12"/>
+        <location line="+13"/>
         <source>Incompatible cache version</source>
-        <translation type="unfinished"></translation>
+        <translation>Inkompatible Cacheversion</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update or clear your cache.</source>
-        <translation type="unfinished"></translation>
+        <translation>Das Cache auf der Festplatte wurde mit einer neueren Nheko version angelegt. Bitte aktualisiere Nheko oder entferne das Cache.</translation>
     </message>
     <message>
         <location line="+111"/>
@@ -91,7 +104,7 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+215"/>
+        <location line="+219"/>
         <source>Please try to login again: %1</source>
         <translation>Bitte melde dich erneut an: %1</translation>
     </message>
@@ -116,12 +129,7 @@
         <translation>Raum konnte nicht erstellt werden: %1</translation>
     </message>
     <message>
-        <location line="+5"/>
-        <source>Room %1 created</source>
-        <translation>Raum %1 wurde erstellt.</translation>
-    </message>
-    <message>
-        <location line="+11"/>
+        <location line="+16"/>
         <source>Failed to leave room: %1</source>
         <translation>Konnte den Raum nicht verlassen: %1</translation>
     </message>
@@ -197,7 +205,7 @@
 <context>
     <name>LoginPage</name>
     <message>
-        <location filename="../../src/LoginPage.cpp" line="+82"/>
+        <location filename="../../src/LoginPage.cpp" line="+89"/>
         <source>Matrix ID</source>
         <translation>Matrix-ID</translation>
     </message>
@@ -207,22 +215,46 @@
         <translation>z.B. @joe:matrix.org</translation>
     </message>
     <message>
-        <location line="+15"/>
+        <location line="+2"/>
+        <source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
+You can also put your homeserver address there, if your server doesn&apos;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.</source>
+        <translation>Dein Anmeldename. Eine mxid sollte mit einem @ anfangen, gefolgt von dem Benutzernamen. Nach dem Benutzernamen sollten ein Doppelpunkt (:) under der Servername folgen.
+Nach dem Doppelpunkt kann alternativ die Serveradresse (mit oder ohne Port) angegeben werden, wenn der Server nicht per .well-known auffindbar ist.
+Beispiel: @benutzer:dein.server
+Wenn Nheko deinen Server nicht automatisch erkennen kann, wird es dich nach dem Server fragen.</translation>
+    </message>
+    <message>
+        <location line="+21"/>
         <source>Password</source>
         <translation>Passwort</translation>
     </message>
     <message>
-        <location line="+4"/>
+        <location line="+5"/>
         <source>Device name</source>
         <translation>Gerätename</translation>
     </message>
     <message>
-        <location line="+19"/>
+        <location line="+2"/>
+        <source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
+        <translation>Ein Name für dieses Gerät. Dieser wird anderen angezeigt, wenn sie dieses Gerät verifizieren. Wenn kein Name angegeben wurde, wird automatisch ein zufälliger Name erzeugt, der keine Rückschlüsse auf deine Identität zulassen sollte.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The address that can be used to contact you homeservers client API.
+Example: https://server.my:8787</source>
+        <translation>Die Adresse unter der dein Heimserver erreichbar ist.
+Beispiel: https://mein.server:8787</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <location line="+185"/>
         <source>LOGIN</source>
         <translation>ANMELDEN</translation>
     </message>
     <message>
-        <location line="+85"/>
+        <location line="-100"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Automatische Erkennung fehlgeschlagen. Antwort war fehlerhaft.</translation>
     </message>
@@ -232,7 +264,7 @@
         <translation>Automatische Erkennung fehlgeschlagen. Unbekannter Fehler bei Anfrage .well-known.</translation>
     </message>
     <message>
-        <location line="+24"/>
+        <location line="+25"/>
         <source>The required endpoints were not found. Possibly not a Matrix server.</source>
         <translation>Benötigte Ansprechpunkte nicht auffindbar. Möglicherweise kein Matrixserver.</translation>
     </message>
@@ -247,10 +279,20 @@
         <translation>Ein unbekannter Fehler ist aufgetreten. Bitte Homeserverdomain prüfen.</translation>
     </message>
     <message>
-        <location line="+60"/>
+        <location line="+55"/>
+        <source>SSO LOGIN</source>
+        <translation>SSO ANMELDUNG</translation>
+    </message>
+    <message>
+        <location line="+25"/>
         <source>Empty password</source>
         <translation>Leeres Passwort</translation>
     </message>
+    <message>
+        <location line="+52"/>
+        <source>SSO login failed</source>
+        <translation>SSO Anmeldung fehlgeschlagen</translation>
+    </message>
 </context>
 <context>
     <name>MemberList</name>
@@ -328,9 +370,19 @@
     </message>
     <message>
         <location line="+3"/>
+        <source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
+        <translation>Der Benutzername sollte nicht leer sein und nur aus a-z, 0-9, ., _, =, - und / bestehen.</translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Password</source>
         <translation>Passwort</translation>
     </message>
+    <message>
+        <location line="+2"/>
+        <source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
+        <translation>Bitte wähle ein sicheres Passwort. Die genauen Anforderungen bestimmt dein Server.</translation>
+    </message>
     <message>
         <location line="+4"/>
         <source>Password confirmation</source>
@@ -338,11 +390,16 @@
     </message>
     <message>
         <location line="+4"/>
-        <source>Home Server</source>
-        <translation>Homeserver</translation>
+        <source>Homeserver</source>
+        <translation>Heimserver</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+2"/>
+        <source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
+        <translation>Ein Server, der Registrierungen zulässt. Weil Matrix ein dezentralisiertes Protokoll ist, musst du erst einen Server ausfindig machen oder einen persönlichen Server aufsetzen.</translation>
+    </message>
+    <message>
+        <location line="+17"/>
         <source>REGISTER</source>
         <translation>REGISTRIEREN</translation>
     </message>
@@ -375,7 +432,7 @@
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2213"/>
+        <location filename="../../src/Cache.cpp" line="+939"/>
         <source>no version stored</source>
         <translation>keine Version gespeichert</translation>
     </message>
@@ -491,7 +548,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+773"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+844"/>
         <source>-- Decryption Error (failed to communicate with DB) --</source>
         <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
         <translation>-- Entschlüsselungsfehler (Fehler bei Kommunikation mit Datenbank) --</translation>
@@ -660,7 +717,12 @@
         <translation>%1 hat das Anklopfen zurückgezogen.</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-1238"/>
+        <source>You joined this room.</source>
+        <translation>Du bist dem Raum beigetreten.</translation>
+    </message>
+    <message>
+        <location line="+1240"/>
         <source>Rejected the knock from %1.</source>
         <translation>Hat das Anklopfen von %1 abgewiesen.</translation>
     </message>
@@ -684,7 +746,7 @@
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+83"/>
+        <location filename="../qml/TimelineRow.qml" line="+87"/>
         <source>Reply</source>
         <translation>Antworten</translation>
     </message>
@@ -697,7 +759,7 @@
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+52"/>
+        <location filename="../qml/TimelineView.qml" line="+53"/>
         <source>Reply</source>
         <translation>Antworten</translation>
     </message>
@@ -737,7 +799,7 @@
         <translation>Kein Raum geöffnet</translation>
     </message>
     <message>
-        <location line="+239"/>
+        <location line="+254"/>
         <source>Close</source>
         <translation>Schließen</translation>
     </message>
@@ -826,7 +888,7 @@
     <message>
         <location line="+1"/>
         <source>Show buttons in timeline</source>
-        <translation type="unfinished"></translation>
+        <translation>Zeige Buttons in der Historie</translation>
     </message>
     <message>
         <location line="+1"/>
@@ -1044,7 +1106,7 @@
     <message>
         <location filename="../../src/dialogs/FallbackAuth.cpp" line="+30"/>
         <source>Open Fallback in Browser</source>
-        <translation type="unfinished">Öffne Fallback im Browser</translation>
+        <translation>Öffne Fallback im Browser</translation>
     </message>
     <message>
         <location line="+1"/>
diff --git a/resources/langs/nheko_el.ts b/resources/langs/nheko_el.ts
index 7cd9459353e2b990cb992e29221f2d96fd5c0798..39ed144267c56a04347a7cad2428b071e601053a 100644
--- a/resources/langs/nheko_el.ts
+++ b/resources/langs/nheko_el.ts
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="el">
+<context>
+    <name>Cache</name>
+    <message>
+        <location filename="../../src/Cache.cpp" line="+1341"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>ChatPage</name>
     <message>
@@ -10,12 +18,22 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+888"/>
+        <location line="+892"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-5"/>
+        <location line="-463"/>
+        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+428"/>
+        <source>Room %1 created.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+30"/>
         <source>Failed to invite %1 to %2: %3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -50,7 +68,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-813"/>
+        <location line="-817"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -60,12 +78,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+1"/>
-        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+12"/>
+        <location line="+13"/>
         <source>Incompatible cache version</source>
         <translation type="unfinished"></translation>
     </message>
@@ -91,7 +104,7 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+215"/>
+        <location line="+219"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -116,12 +129,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+5"/>
-        <source>Room %1 created</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+11"/>
+        <location line="+16"/>
         <source>Failed to leave room: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -197,7 +205,7 @@
 <context>
     <name>LoginPage</name>
     <message>
-        <location filename="../../src/LoginPage.cpp" line="+82"/>
+        <location filename="../../src/LoginPage.cpp" line="+89"/>
         <source>Matrix ID</source>
         <translation>Matrix ID</translation>
     </message>
@@ -207,22 +215,42 @@
         <translation>π.χ @john:matrix.org</translation>
     </message>
     <message>
-        <location line="+15"/>
+        <location line="+2"/>
+        <source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
+You can also put your homeserver address there, if your server doesn&apos;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.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+21"/>
         <source>Password</source>
         <translation>Κωδικός</translation>
     </message>
     <message>
-        <location line="+4"/>
+        <location line="+5"/>
         <source>Device name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+19"/>
+        <location line="+2"/>
+        <source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The address that can be used to contact you homeservers client API.
+Example: https://server.my:8787</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <location line="+185"/>
         <source>LOGIN</source>
         <translation>ΕΙΣΟΔΟΣ</translation>
     </message>
     <message>
-        <location line="+85"/>
+        <location line="-100"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -232,7 +260,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+24"/>
+        <location line="+25"/>
         <source>The required endpoints were not found. Possibly not a Matrix server.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -247,10 +275,20 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+60"/>
+        <location line="+55"/>
+        <source>SSO LOGIN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+25"/>
         <source>Empty password</source>
         <translation>Κενός κωδικός</translation>
     </message>
+    <message>
+        <location line="+52"/>
+        <source>SSO login failed</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberList</name>
@@ -328,9 +366,19 @@
     </message>
     <message>
         <location line="+3"/>
+        <source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Password</source>
         <translation>Κωδικός</translation>
     </message>
+    <message>
+        <location line="+2"/>
+        <source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
         <location line="+4"/>
         <source>Password confirmation</source>
@@ -338,11 +386,16 @@
     </message>
     <message>
         <location line="+4"/>
-        <source>Home Server</source>
-        <translation>Διακομιστής</translation>
+        <source>Homeserver</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+2"/>
+        <source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+17"/>
         <source>REGISTER</source>
         <translation>ΕΓΓΡΑΦΗ</translation>
     </message>
@@ -375,7 +428,7 @@
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2213"/>
+        <location filename="../../src/Cache.cpp" line="+939"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -491,7 +544,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+773"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+844"/>
         <source>-- Decryption Error (failed to communicate with DB) --</source>
         <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
         <translation type="unfinished"></translation>
@@ -660,7 +713,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-1238"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1240"/>
         <source>Rejected the knock from %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -684,7 +742,7 @@
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+83"/>
+        <location filename="../qml/TimelineRow.qml" line="+87"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -697,7 +755,7 @@
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+52"/>
+        <location filename="../qml/TimelineView.qml" line="+53"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -737,7 +795,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+239"/>
+        <location line="+254"/>
         <source>Close</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/resources/langs/nheko_en.qm b/resources/langs/nheko_en.qm
new file mode 100644
index 0000000000000000000000000000000000000000..0973db2d9c4232eec42ce38a1493607f33abb136
--- /dev/null
+++ b/resources/langs/nheko_en.qm
@@ -0,0 +1,82 @@
+<¸dÊÍ!¿`¡½ÝB�� ��;��„�Ï��c=�þ��XB�H5��î�H5��T�‹t��,°�Œ��Fv�œT��-�Ÿg��FŸ� %r��ì�&Ã#��,0�H/ƒ��S~�Hw9��‘�J6•��Bž�J6•��\`�LF	��.J�L™b��Jè�M'ã��lY�Q;Þ��œ�Q;Þ��R�TÊ´��d`�Uð­��tW�XÇ9��Bo�XÇ9��Cë�Zì5��Q�[fó���[fó��US�hÂá��sÐ�ˆÎÞ��&é�¨Þ��C�±å~��"3�Ëý��;ÿ�×¹À��!z�Ûe��DQ'òÑ��$ÓL<™��]xO+%��pêQc^��(\ks��®^È��3$r n��A“‘õÿ��Y½™·��O=³7ž��?�¶ˆ=��>`»ÙS��bÅÉŽ��!Ù×Lé��P£ã&5��$‚÷º¤��aþð1��äŒS��Fý&¥Þ��º(Õ¾��;=/§™��ayL3��E„‚��pª7õ��W®›
~��6'Éëa��Q±Õî³��^üøÈA��aÀ˜3��-`c��CX-`c��N8-`c��\™^)��N„´Lþ��2ÃŒÃ��E‘Þô±��êÌa���£ì»#��Eü9CÞ��5¥A€¾��8yœt��*H‚M©��%í†E��^x‹[Y��Kÿ“¤1��
+÷˜I¼��¾˜I¼��Sµ˜I¼��UŠ˜I¼��Ws˜I¼��X
+˜I¼��YN˜I¼��Y‡˜I¼��Z ˜I¼��[4­Tt��I
+È´��,zà„ï��oâTt��M⪯��rîs¾��0vød.��5ÿ•"��q¸nŽ��({™“��\1m��;Œ!¬4��Tµ5æÄ��FÈNÌÞ��gO	Å��mÙOzž��[©]¤Î��@)gîe��LEr,N��3dtݾ��%~€£��pŒFÅ��ˆºã��lΦÂÞ��Rh¨³¤��K¨·1��\굑��kjÇ5t��Zðߧ^��-—õD��+Ý ùS��e§!–s��c¾0PŽ��4„5Óã��©fö]��+LoE��.È{��B:”õ)��d©ƒƒ��3«­ù��¯.¹��PW°_��fŽË2��GÈÎ|î��OÑIG��-ÑÕ"��n¡öÕ��O†	Â.��àɝ��*ü,4N��7ÉfÊ��XÊi܃��Oók¯��Ak³��¢m"?��@–yb��AS•ž��k·U>��¿‘¥��má0¾��HÇ+šó��^*-Kž��ïGD.��1ùJòÁ��b>kbŽ��0àm4%��C z~��9”ùN��NͦëE��MHªãä��ªãä��%TÏk��l	¾��cs	*˜Ô��v	9ûu�� 	=ŒÅ��	_Á��eY	k ‘��Ð	oÊÞ����	oÊÞ��AÙ	…Á²��V	‹6Å��so	ŒvÓ��D	©ÒÅ��pL	¬Ðá��¸	¶ôH��&‰	¾Â��(B	¾Â��R0	ÉCõ��)¿	ø°5��MÝ
+lþ��_Y
+šc��Þ
+Õ��oÊ
+/–4��T8
+5ôa��L
+=Ý��Sï
+?iÕ��rê
+@›ž��
+C0�� ®
+T*N��7_
+d
U��$(
+dÐÍ��UÆ
+dÐÍ��[m
+efz��Zd
+n��?@
+{™I��Tþ
+„I��/±
+—àQ��3§
+WÞ��/[
+ 6ô��E
+¬ÕI��S?
+°ÔÉ��kÏ
+·Ñe��DÀ
+º0��*
+Ìùƒ��j/
+êI^��/ò
+ëf	��-L
+ëf	��]Ù–c��mUgN��:ÌŽ��:ñ(Fþ��aW0Þ³��XtG›t��)øQÿ©��Mˆ÷T��Éœ	4��,ࢦ��L…§­4��ÐÂÀê��I™ïÎ��e§
��=¢,-m��i¸3âM��<ÃEn��JHXÊ��1}[c��EÅr¿Ý��*¹r¿Ý��ETv—¥��@Ö~VW��¯‡(>��4/ŽíÁ���YV��QP˜jò��#éœtN��6ÚÚk��l‰»s��F?»s��fLÆÓÂ��GRÇ[^��gÑu$��TÒíÁ��
oàó��d™ù>��H‡
x.��?¶
/v¢��eò
2%.��Í
5òŽ��_¡
TA��]+
o��BÎ
yyò��jm
 ¡��
‰ÌS��dê
®!��
¹ÀÃ��m‹
¼ÉÞ��ö
ÜZ��jðY.c��t[¤½��
¿y.c��›¿
+3�� cåæ	��+†®��86	æÎ��n1+Î��qE8b��L¿l€Õ��t›wÅ��H,Œxð��o]ŒðÕ��/
ŽZ°��rz™HÁ��!¬Ëã��KhµÎ��VwÇY��IAâ£Î��šôv��.}i��tñ���*�Y�o�u� �j�o�i�n�e�d� �t�h�i�s� �r�o�o�m�.�������You joined this room.���Cache����B�a�n�n�e�d� �u�s�e�r�:� �%�1�������Banned user: %1���ChatPage���.�C�a�c�h�e� �m�i�g�r�a�t�i�o�n� �f�a�i�l�e�d�!�������Cache migration failed!���ChatPage���4�F�a�i�l�e�d� �t�o� �b�a�n� �%�1� �i�n� �%�2�:� �%�3�������Failed to ban %1 in %2: %3���ChatPage���:�F�a�i�l�e�d� �t�o� �i�n�v�i�t�e� �%�1� �t�o� �%�2�:� �%�3�������Failed to invite %1 to %2: %3���ChatPage���2�F�a�i�l�e�d� �t�o� �i�n�v�i�t�e� �u�s�e�r�:� �%�1�������Failed to invite user: %1���ChatPage���.�F�a�i�l�e�d� �t�o� �j�o�i�n� �r�o�o�m�:� �%�1�������Failed to join room: %1���ChatPage���6�F�a�i�l�e�d� �t�o� �k�i�c�k� �%�1� �t�o� �%�2�:� �%�3�������Failed to kick %1 to %2: %3���ChatPage���0�F�a�i�l�e�d� �t�o� �l�e�a�v�e� �r�o�o�m�:� �%�1�������Failed to leave room: %1���ChatPage���6�F�a�i�l�e�d� �t�o� �r�e�m�o�v�e� �i�n�v�i�t�e�:� �%�1�������Failed to remove invite: %1���ChatPage���d�F�a�i�l�e�d� �t�o� �r�e�s�t�o�r�e� �O�L�M� �a�c�c�o�u�n�t�.� �P�l�e�a�s�e� �l�o�g�i�n� �a�g�a�i�n�.�������2Failed to restore OLM account. Please login again.���ChatPage���`�F�a�i�l�e�d� �t�o� �r�e�s�t�o�r�e� �s�a�v�e� �d�a�t�a�.� �P�l�e�a�s�e� �l�o�g�i�n� �a�g�a�i�n�.�������0Failed to restore save data. Please login again.���ChatPage��� �F�a�i�l�e�d� �t�o� �s�e�t�u�p� �e�n�c�r�y�p�t�i�o�n� �k�e�y�s�.� �S�e�r�v�e�r� �r�e�s�p�o�n�s�e�:� �%�1� �%�2�.� �P�l�e�a�s�e� �t�r�y� �a�g�a�i�n� �l�a�t�e�r�.�������PFailed to setup encryption keys. Server response: %1 %2. Please try again later.���ChatPage���8�F�a�i�l�e�d� �t�o� �u�n�b�a�n� �%�1� �i�n� �%�2�:� �%�3�������Failed to unban %1 in %2: %3���ChatPage���R�F�a�i�l�e�d� �t�o� �u�p�l�o�a�d� �m�e�d�i�a�.� �P�l�e�a�s�e� �t�r�y� �a�g�a�i�n�.�������)Failed to upload media. Please try again.���ChatPage���4�I�n�c�o�m�p�a�t�i�b�l�e� �c�a�c�h�e� �v�e�r�s�i�o�n�������Incompatible cache version���ChatPage��� �I�n�v�i�t�e�d� �u�s�e�r�:� �%�1�������Invited user: %1���ChatPage����K�i�c�k�e�d� �u�s�e�r�:� �%�1�������Kicked user: %1���ChatPage��¢�M�i�g�r�a�t�i�n�g� �t�h�e� �c�a�c�h�e� �t�o� �t�h�e� �c�u�r�r�e�n�t� �v�e�r�s�i�o�n� �f�a�i�l�e�d�.� �T�h�i�s� �c�a�n� �h�a�v�e� �d�i�f�f�e�r�e�n�t� �r�e�a�s�o�n�s�.� �P�l�e�a�s�e� �o�p�e�n� �a�n� �i�s�s�u�e� �a�n�d� �t�r�y� �t�o� �u�s�e� �a�n� �o�l�d�e�r� �v�e�r�s�i�o�n� �i�n� �t�h�e� �m�e�a�n� �t�i�m�e�.� �A�l�t�e�r�n�a�t�i�v�e�l�y� �y�o�u� �c�a�n� �t�r�y� �d�e�l�e�t�i�n�g� �t�h�e� �c�a�c�h�e� �m�a�n�u�a�l�l�y�.�������Ñ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.���ChatPage���:�P�l�e�a�s�e� �t�r�y� �t�o� �l�o�g�i�n� �a�g�a�i�n�:� �%�1�������Please try to login again: %1���ChatPage��� �R�o�o�m� �%�1� �c�r�e�a�t�e�d�.�������Room %1 created.���ChatPage���0�R�o�o�m� �c�r�e�a�t�i�o�n� �f�a�i�l�e�d�:� �%�1�������Room creation failed: %1���ChatPage���Î�T�h�e� �c�a�c�h�e� �o�n� �y�o�u�r� �d�i�s�k� �i�s� �n�e�w�e�r� �t�h�a�n� �t�h�i�s� �v�e�r�s�i�o�n� �o�f� �N�h�e�k�o� �s�u�p�p�o�r�t�s�.� �P�l�e�a�s�e� �u�p�d�a�t�e� �o�r� �c�l�e�a�r� �y�o�u�r� �c�a�c�h�e�.�������gThe cache on your disk is newer than this version of Nheko supports. Please update or clear your cache.���ChatPage���"�U�n�b�a�n�n�e�d� �u�s�e�r�:� �%�1�������Unbanned user: %1���ChatPage���&�Y�o�u� �j�o�i�n�e�d� �t�h�e� �r�o�o�m�������You joined the room���ChatPage���� �(�c�o�m�m�u�n�i�t�y�)������� (community)���CommunitiesListItem���� �(�t�a�g�)������� (tag)���CommunitiesListItem����A�l�l� �r�o�o�m�s�������	All rooms���CommunitiesListItem����F�a�v�o�u�r�i�t�e� �r�o�o�m�s�������Favourite rooms���CommunitiesListItem���$�L�o�w� �p�r�i�o�r�i�t�y� �r�o�o�m�s�������Low priority rooms���CommunitiesListItem���
+�A�p�p�l�y�������Apply���	EditModal����C�a�n�c�e�l�������Cancel���	EditModal����N�a�m�e�������Name���	EditModal���
+�T�o�p�i�c�������Topic���	EditModal����E�n�c�r�y�p�t�e�d�������	Encrypted���EncryptionIndicator����R�e�m�o�v�e�������Remove���InviteeItem��,�A� �n�a�m�e� �f�o�r� �t�h�i�s� �d�e�v�i�c�e�,� �w�h�i�c�h� �w�i�l�l� �b�e� �s�h�o�w�n� �t�o� �o�t�h�e�r�s�,� �w�h�e�n� �v�e�r�i�f�y�i�n�g� �y�o�u�r� �d�e�v�i�c�e�s�.� �I�f� �n�o�n�e� �i�s� �p�r�o�v�i�d�e�d�,� �a� �r�a�n�d�o�m� �s�t�r�i�n�g� �i�s� �u�s�e�d� �f�o�r� �p�r�i�v�a�c�y� �p�u�r�p�o�s�e�s�.�������–A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.���	LoginPage���†�A�n� �u�n�k�n�o�w�n� �e�r�r�o�r� �o�c�c�u�r�e�d�.� �M�a�k�e� �s�u�r�e� �t�h�e� �h�o�m�e�s�e�r�v�e�r� �d�o�m�a�i�n� �i�s� �v�a�l�i�d�.�������CAn unknown error occured. Make sure the homeserver domain is valid.���	LoginPage���d�A�u�t�o�d�i�s�c�o�v�e�r�y� �f�a�i�l�e�d�.� �R�e�c�e�i�v�e�d� �m�a�l�f�o�r�m�e�d� �r�e�s�p�o�n�s�e�.�������2Autodiscovery failed. Received malformed response.���	LoginPage���‚�A�u�t�o�d�i�s�c�o�v�e�r�y� �f�a�i�l�e�d�.� �U�n�k�n�o�w�n� �e�r�r�o�r� �w�h�i�l�e� �r�e�q�u�e�s�t�i�n�g� �.�w�e�l�l�-�k�n�o�w�n�.�������@Autodiscovery failed. Unknown error when requesting .well-known.���	LoginPage����D�e�v�i�c�e� �n�a�m�e�������Device name���	LoginPage����E�m�p�t�y� �p�a�s�s�w�o�r�d�������Empty password���	LoginPage���
+�L�O�G�I�N�������LOGIN���	LoginPage����M�a�t�r�i�x� �I�D�������	Matrix ID���	LoginPage����P�a�s�s�w�o�r�d�������Password���	LoginPage���Œ�R�e�c�e�i�v�e�d� �m�a�l�f�o�r�m�e�d� �r�e�s�p�o�n�s�e�.� �M�a�k�e� �s�u�r�e� �t�h�e� �h�o�m�e�s�e�r�v�e�r� �d�o�m�a�i�n� �i�s� �v�a�l�i�d�.�������FReceived malformed response. Make sure the homeserver domain is valid.���	LoginPage����S�S�O� �L�O�G�I�N�������	SSO LOGIN���	LoginPage��� �S�S�O� �l�o�g�i�n� �f�a�i�l�e�d�������SSO login failed���	LoginPage���Æ�T�h�e� �a�d�d�r�e�s�s� �t�h�a�t� �c�a�n� �b�e� �u�s�e�d� �t�o� �c�o�n�t�a�c�t� �y�o�u� �h�o�m�e�s�e�r�v�e�r�s� �c�l�i�e�n�t� �A�P�I�.�
+�E�x�a�m�p�l�e�:� �h�t�t�p�s�:�/�/�s�e�r�v�e�r�.�m�y�:�8�7�8�7�������cThe address that can be used to contact you homeservers client API.
+Example: https://server.my:8787���	LoginPage���ˆ�T�h�e� �r�e�q�u�i�r�e�d� �e�n�d�p�o�i�n�t�s� �w�e�r�e� �n�o�t� �f�o�u�n�d�.� �P�o�s�s�i�b�l�y� �n�o�t� �a� �M�a�t�r�i�x� �s�e�r�v�e�r�.�������DThe required endpoints were not found. Possibly not a Matrix server.���	LoginPage��Ê�Y�o�u�r� �l�o�g�i�n� �n�a�m�e�.� �A� �m�x�i�d� �s�h�o�u�l�d� �s�t�a�r�t� �w�i�t�h� �@� �f�o�l�l�o�w�e�d� �b�y� �t�h�e� �u�s�e�r� �i�d�.� �A�f�t�e�r� �t�h�e� �u�s�e�r� �i�d� �y�o�u� �n�e�e�d� �t�o� �i�n�c�l�u�d�e� �y�o�u�r� �s�e�r�v�e�r� �n�a�m�e� �a�f�t�e�r� �a� �:�.�
+�Y�o�u� �c�a�n� �a�l�s�o� �p�u�t� �y�o�u�r� �h�o�m�e�s�e�r�v�e�r� �a�d�d�r�e�s�s� �t�h�e�r�e�,� �i�f� �y�o�u�r� �s�e�r�v�e�r� �d�o�e�s�n�'�t� �s�u�p�p�o�r�t� �.�w�e�l�l�-�k�n�o�w�n� �l�o�o�k�u�p�.�
+�E�x�a�m�p�l�e�:� �@�u�s�e�r�:�s�e�r�v�e�r�.�m�y�
+�I�f� �N�h�e�k�o� �f�a�i�l�s� �t�o� �d�i�s�c�o�v�e�r� �y�o�u�r� �h�o�m�e�s�e�r�v�e�r�,� �i�t� �w�i�l�l� �s�h�o�w� �y�o�u� �a� �f�i�e�l�d� �t�o� �e�n�t�e�r� �t�h�e� �s�e�r�v�e�r� �m�a�n�u�a�l�l�y�.������eYour login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
+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.���	LoginPage���&�e�.�g� �@�j�o�e�:�m�a�t�r�i�x�.�o�r�g�������e.g @joe:matrix.org���	LoginPage����O�K�������OK���
+MemberList����R�o�o�m� �m�e�m�b�e�r�s�������Room members���
+MemberList���D�%�1� �c�r�e�a�t�e�d� �a�n�d� �c�o�n�f�i�g�u�r�e�d� �r�o�o�m�:� �%�2�������"%1 created and configured room: %2���MessageDelegate���$�E�n�c�r�y�p�t�i�o�n� �e�n�a�b�l�e�d�������Encryption enabled���MessageDelegate����r�e�d�a�c�t�e�d�������redacted���MessageDelegate���"�r�e�m�o�v�e�d� �r�o�o�m� �n�a�m�e�������removed room name���MessageDelegate����r�e�m�o�v�e�d� �t�o�p�i�c�������
removed topic���MessageDelegate���0�r�o�o�m� �n�a�m�e� �c�h�a�n�g�e�d� �t�o�:� �%�1�������room name changed to: %1���MessageDelegate���(�t�o�p�i�c� �c�h�a�n�g�e�d� �t�o�:� �%�1�������topic changed to: %1���MessageDelegate���*�u�n�i�m�p�l�e�m�e�n�t�e�d� �e�v�e�n�t�:� �������unimplemented event: ���Placeholder���$�S�e�a�r�c�h� �f�o�r� �a� �r�o�o�m &�������Search for a room...���
QuickSwitcher���A� �s�e�r�v�e�r� �t�h�a�t� �a�l�l�o�w�s� �r�e�g�i�s�t�r�a�t�i�o�n�.� �S�i�n�c�e� �m�a�t�r�i�x� �i�s� �d�e�c�e�n�t�r�a�l�i�z�e�d�,� �y�o�u� �n�e�e�d� �t�o� �f�i�r�s�t� �f�i�n�d� �a� �s�e�r�v�e�r� �y�o�u� �c�a�n� �r�e�g�i�s�t�e�r� �o�n� �o�r� �h�o�s�t� �y�o�u�r� �o�w�n�.�������‡A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.���RegisterPage����H�o�m�e�s�e�r�v�e�r�������
+Homeserver���RegisterPage���&�I�n�v�a�l�i�d� �s�e�r�v�e�r� �n�a�m�e�������Invalid server name���RegisterPage��� �I�n�v�a�l�i�d� �u�s�e�r�n�a�m�e�������Invalid username���RegisterPage���@�N�o� �s�u�p�p�o�r�t�e�d� �r�e�g�i�s�t�r�a�t�i�o�n� �f�l�o�w�s�!������� No supported registration flows!���RegisterPage����P�a�s�s�w�o�r�d�������Password���RegisterPage���*�P�a�s�s�w�o�r�d� �c�o�n�f�i�r�m�a�t�i�o�n�������Password confirmation���RegisterPage���R�P�a�s�s�w�o�r�d� �i�s� �n�o�t� �l�o�n�g� �e�n�o�u�g�h� �(�m�i�n� �8� �c�h�a�r�s�)�������)Password is not long enough (min 8 chars)���RegisterPage���*�P�a�s�s�w�o�r�d�s� �d�o�n�'�t� �m�a�t�c�h�������Passwords don't match���RegisterPage����P�l�e�a�s�e� �c�h�o�o�s�e� �a� �s�e�c�u�r�e� �p�a�s�s�w�o�r�d�.� �T�h�e� �e�x�a�c�t� �r�e�q�u�i�r�e�m�e�n�t�s� �f�o�r� �p�a�s�s�w�o�r�d� �s�t�r�e�n�g�t�h� �m�a�y� �d�e�p�e�n�d� �o�n� �y�o�u�r� �s�e�r�v�e�r�.�������hPlease choose a secure password. The exact requirements for password strength may depend on your server.���RegisterPage����R�E�G�I�S�T�E�R�������REGISTER���RegisterPage����T�h�e� �u�s�e�r�n�a�m�e� �m�u�s�t� �n�o�t� �b�e� �e�m�p�t�y�,� �a�n�d� �m�u�s�t� �c�o�n�t�a�i�n� �o�n�l�y� �t�h�e� �c�h�a�r�a�c�t�e�r�s� �a�-�z�,� �0�-�9�,� �.�,� �_�,� �=�,� �-�,� �a�n�d� �/�.�������aThe username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.���RegisterPage����U�s�e�r�n�a�m�e�������Username���RegisterPage���"�n�o� �v�e�r�s�i�o�n� �s�t�o�r�e�d�������no version stored���RoomInfo����A�c�c�e�p�t�������Accept���RoomInfoListItem����D�e�c�l�i�n�e�������Decline���RoomInfoListItem����L�e�a�v�e� �r�o�o�m�������
+Leave room���RoomInfoListItem����C�r�e�a�t�e� �n�e�w� �r�o�o�m�������Create new room���SideBarActions����J�o�i�n� �a� �r�o�o�m�������Join a room���SideBarActions����R�o�o�m� �d�i�r�e�c�t�o�r�y�������Room directory���SideBarActions��� �S�t�a�r�t� �a� �n�e�w� �c�h�a�t�������Start a new chat���SideBarActions����U�s�e�r� �s�e�t�t�i�n�g�s�������
User settings���SideBarActions����F�a�i�l�e�d�������Failed���StatusIndicator����R�e�a�d�������Read���StatusIndicator����R�e�c�e�i�v�e�d�������Received���StatusIndicator����S�e�n�t�������Sent���StatusIndicator����A�l�l� �F�i�l�e�s� �(�*�)�������
All Files (*)���TextInputWidget���^�C�o�n�n�e�c�t�i�o�n� �l�o�s�t�.� �N�h�e�k�o� �i�s� �t�r�y�i�n�g� �t�o� �r�e�-�c�o�n�n�e�c�t &�������1Connection lost. Nheko is trying to re-connect...���TextInputWidget���
+�E�m�o�j�i�������Emoji���TextInputWidget����S�e�l�e�c�t� �a� �f�i�l�e�������
Select a file���TextInputWidget����S�e�n�d� �a� �f�i�l�e�������Send a file���TextInputWidget����S�e�n�d� �a� �m�e�s�s�a�g�e�������Send a message���TextInputWidget��� �W�r�i�t�e� �a� �m�e�s�s�a�g�e &�������Write a message...���TextInputWidget����R�e�a�s�o�n�:� �%�1������� Reason: %1���
TimelineModel����%�1�%�2� �i�s� �t�y�p�i�n�g�.���*�%�1� �a�n�d� �%�2� �a�r�e� �t�y�p�i�n�g�.�������%1 and %2 are typing.���
TimelineModel���0�%�1� �c�h�a�n�g�e�d� �t�h�e�i�r� �a�v�a�t�a�r�.�������%1 changed their avatar.���
TimelineModel���R�%�1� �c�h�a�n�g�e�d� �t�h�e�i�r� �d�i�s�p�l�a�y� �n�a�m�e� �a�n�d� �a�v�a�t�a�r�.�������)%1 changed their display name and avatar.���
TimelineModel���<�%�1� �c�h�a�n�g�e�d� �t�h�e�i�r� �d�i�s�p�l�a�y� �n�a�m�e�.�������%1 changed their display name.���
TimelineModel���L�%�1� �h�a�s� �c�h�a�n�g�e�d� �t�h�e� �r�o�o�m�'�s� �p�e�r�m�i�s�s�i�o�n�s�.�������&%1 has changed the room's permissions.���
TimelineModel���N�%�1� �h�a�s� �c�l�o�s�e�d� �t�h�e� �r�o�o�m� �t�o� �g�u�e�s�t� �a�c�c�e�s�s�.�������'%1 has closed the room to guest access.���
TimelineModel����%�1� �j�o�i�n�e�d�.�������
+%1 joined.���
TimelineModel����%�1� �k�n�o�c�k�e�d�.�������%1 knocked.���
TimelineModel���D�%�1� �l�e�f�t� �a�f�t�e�r� �h�a�v�i�n�g� �a�l�r�e�a�d�y� �l�e�f�t�!�������"%1 left after having already left!���
TimelineModel���"�%�1� �l�e�f�t� �t�h�e� �r�o�o�m�.�������%1 left the room.���
TimelineModel���ª�%�1� �m�a�d�e� �t�h�e� �r�o�o�m� �h�i�s�t�o�r�y� �w�o�r�l�d� �r�e�a�d�a�b�l�e�.� �E�v�e�n�t�s� �m�a�y� �b�e� �n�o�w� �r�e�a�d� �b�y� �n�o�n�-�j�o�i�n�e�d� �p�e�o�p�l�e�.�������U%1 made the room history world readable. Events may be now read by non-joined people.���
TimelineModel���@�%�1� �m�a�d�e� �t�h�e� �r�o�o�m� �o�p�e�n� �t�o� �g�u�e�s�t�s�.������� %1 made the room open to guests.���
TimelineModel���`�%�1� �m�a�d�e� �t�h�i�s� �r�o�o�m� �r�e�q�u�i�r�e� �a�n� �i�n�v�i�t�a�t�i�o�n� �t�o� �j�o�i�n�.�������1%1 made this room require and invitation to join.���
TimelineModel���B�%�1� �o�p�e�n�e�d� �t�h�e� �r�o�o�m� �t�o� �t�h�e� �p�u�b�l�i�c�.�������!%1 opened the room to the public.���
TimelineModel���0�%�1� �r�e�d�a�c�t�e�d� �t�h�e�i�r� �k�n�o�c�k�.�������%1 redacted their knock.���
TimelineModel���2�%�1� �r�e�j�e�c�t�e�d� �t�h�e�i�r� �i�n�v�i�t�e�.�������%1 rejected their invite.���
TimelineModel���|�%�1� �s�e�t� �t�h�e� �r�o�o�m� �h�i�s�t�o�r�y� �v�i�s�i�b�l�e� �t�o� �m�e�m�b�e�r�s� �f�r�o�m� �t�h�i�s� �p�o�i�n�t� �o�n�.�������>%1 set the room history visible to members from this point on.���
TimelineModel���Œ�%�1� �s�e�t� �t�h�e� �r�o�o�m� �h�i�s�t�o�r�y� �v�i�s�i�b�l�e� �t�o� �m�e�m�b�e�r�s� �s�i�n�c�e� �t�h�e�y� �j�o�i�n�e�d� �t�h�e� �r�o�o�m�.�������F%1 set the room history visible to members since they joined the room.���
TimelineModel���†�%�1� �s�e�t� �t�h�e� �r�o�o�m� �h�i�s�t�o�r�y� �v�i�s�i�b�l�e� �t�o� �m�e�m�b�e�r�s� �s�i�n�c�e� �t�h�e�y� �w�e�r�e� �i�n�v�i�t�e�d�.�������C%1 set the room history visible to members since they were invited.���
TimelineModel����%�1� �w�a�s� �b�a�n�n�e�d�.�������%1 was banned.���
TimelineModel����%�1� �w�a�s� �i�n�v�i�t�e�d�.�������%1 was invited.���
TimelineModel���6�-�-� �D�e�c�r�y�p�t�i�o�n� �E�r�r�o�r� �(�%�1�)� �-�-�������-- Decryption Error (%1) --���
TimelineModel���l�-�-� �D�e�c�r�y�p�t�i�o�n� �E�r�r�o�r� �(�f�a�i�l�e�d� �t�o� �c�o�m�m�u�n�i�c�a�t�e� �w�i�t�h� �D�B�)� �-�-�������6-- Decryption Error (failed to communicate with DB) --���
TimelineModel���~�-�-� �D�e�c�r�y�p�t�i�o�n� �E�r�r�o�r� �(�f�a�i�l�e�d� �t�o� �r�e�t�r�i�e�v�e� �m�e�g�o�l�m� �k�e�y�s� �f�r�o�m� �d�b�)� �-�-�������?-- Decryption Error (failed to retrieve megolm keys from db) --���
TimelineModel���h�-�-� �E�n�c�r�y�p�t�e�d� �E�v�e�n�t� �(�N�o� �k�e�y�s� �f�o�u�n�d� �f�o�r� �d�e�c�r�y�p�t�i�o�n�)� �-�-�������4-- Encrypted Event (No keys found for decryption) --���
TimelineModel���T�-�-� �E�n�c�r�y�p�t�e�d� �E�v�e�n�t� �(�U�n�k�n�o�w�n� �e�v�e�n�t� �t�y�p�e�)� �-�-�������*-- Encrypted Event (Unknown event type) --���
TimelineModel����K�i�c�k�e�d� �%�1�.�������
+Kicked %1.���
TimelineModel���8�M�e�s�s�a�g�e� �r�e�d�a�c�t�i�o�n� �f�a�i�l�e�d�:� �%�1�������Message redaction failed: %1���
TimelineModel���6�R�e�j�e�c�t�e�d� �t�h�e� �k�n�o�c�k� �f�r�o�m� �%�1�.�������Rejected the knock from %1.���
TimelineModel���2�R�e�v�o�k�e�d� �t�h�e� �i�n�v�i�t�e� �t�o� �%�1�.�������Revoked the invite to %1.���
TimelineModel����S�a�v�e� �a�u�d�i�o�������
+Save audio���
TimelineModel����S�a�v�e� �f�i�l�e�������	Save file���
TimelineModel����S�a�v�e� �i�m�a�g�e�������
+Save image���
TimelineModel����S�a�v�e� �v�i�d�e�o�������
+Save video���
TimelineModel����U�n�b�a�n�n�e�d� �%�1�.�������Unbanned %1.���
TimelineModel���*�Y�o�u� �j�o�i�n�e�d� �t�h�i�s� �r�o�o�m�.�������You joined this room.���
TimelineModel����O�p�t�i�o�n�s�������Options���TimelineRow���
+�R�e�p�l�y�������Reply���TimelineRow���
+�C�l�o�s�e�������Close���TimelineView����M�a�r�k� �a�s� �r�e�a�d�������Mark as read���TimelineView����N�o� �r�o�o�m� �o�p�e�n�������No room open���TimelineView����R�e�a�d� �r�e�c�e�i�p�t�s�������
Read receipts���TimelineView����R�e�d�a�c�t� �m�e�s�s�a�g�e�������Redact message���TimelineView���
+�R�e�p�l�y�������Reply���TimelineView����S�a�v�e� �a�s�������Save as���TimelineView���4�V�i�e�w� �d�e�c�r�y�p�t�e�d� �r�a�w� �m�e�s�s�a�g�e�������View decrypted raw message���TimelineView��� �V�i�e�w� �r�a�w� �m�e�s�s�a�g�e�������View raw message���TimelineView����I�n�v�i�t�e� �u�s�e�r�s�������Invite users���
+TopRoomBar����L�e�a�v�e� �r�o�o�m�������
+Leave room���
+TopRoomBar����M�e�m�b�e�r�s�������Members���
+TopRoomBar����M�e�n�t�i�o�n�s�������Mentions���
+TopRoomBar����R�o�o�m� �o�p�t�i�o�n�s�������Room options���
+TopRoomBar����S�e�t�t�i�n�g�s�������Settings���
+TopRoomBar����Q�u�i�t�������Quit���TrayIcon����S�h�o�w�������Show���TrayIcon����L�o�g�o�u�t�������Logout���UserInfoWidget��� �C�i�r�c�u�l�a�r� �A�v�a�t�a�r�s�������Circular Avatars���UserSettingsPage���6�D�e�c�r�y�p�t� �m�e�s�s�a�g�e�s� �i�n� �s�i�d�e�b�a�r�������Decrypt messages in sidebar���UserSettingsPage���*�D�e�s�k�t�o�p� �n�o�t�i�f�i�c�a�t�i�o�n�s�������Desktop notifications���UserSettingsPage���$�D�e�v�i�c�e� �F�i�n�g�e�r�p�r�i�n�t�������Device Fingerprint���UserSettingsPage����D�e�v�i�c�e� �I�D�������	Device ID���UserSettingsPage����E�N�C�R�Y�P�T�I�O�N�������
+ENCRYPTION���UserSettingsPage����E�X�P�O�R�T�������EXPORT���UserSettingsPage���"�E�m�o�j�i� �F�o�n�t� �F�a�m�i�l�y�������Emoji Font Family���UserSettingsPage���\�E�n�t�e�r� �p�a�s�s�p�h�r�a�s�e� �t�o� �e�n�c�r�y�p�t� �y�o�u�r� �s�e�s�s�i�o�n� �k�e�y�s�:�������.Enter passphrase to encrypt your session keys:���UserSettingsPage���R�E�n�t�e�r� �t�h�e� �p�a�s�s�p�h�r�a�s�e� �t�o� �d�e�c�r�y�p�t� �t�h�e� �f�i�l�e�:�������)Enter the passphrase to decrypt the file:���UserSettingsPage���
+�E�r�r�o�r�������Error���UserSettingsPage����F�i�l�e� �P�a�s�s�w�o�r�d�������
File Password���UserSettingsPage���L�F�i�l�e� �t�o� �s�a�v�e� �t�h�e� �e�x�p�o�r�t�e�d� �s�e�s�s�i�o�n� �k�e�y�s�������&File to save the exported session keys���UserSettingsPage����F�o�n�t� �F�a�m�i�l�y�������Font Family���UserSettingsPage����F�o�n�t� �s�i�z�e�������	Font size���UserSettingsPage����G�E�N�E�R�A�L�������GENERAL���UserSettingsPage����G�r�o�u�p�'�s� �s�i�d�e�b�a�r�������Group's sidebar���UserSettingsPage����I�M�P�O�R�T�������IMPORT���UserSettingsPage����I�N�T�E�R�F�A�C�E�������	INTERFACE���UserSettingsPage��� �M�i�n�i�m�i�z�e� �t�o� �t�r�a�y�������Minimize to tray���UserSettingsPage���$�O�p�e�n� �S�e�s�s�i�o�n�s� �F�i�l�e�������Open Sessions File���UserSettingsPage����R�e�a�d� �r�e�c�e�i�p�t�s�������
Read receipts���UserSettingsPage����S�c�a�l�e� �f�a�c�t�o�r�������Scale factor���UserSettingsPage���2�S�e�n�d� �m�e�s�s�a�g�e�s� �a�s� �M�a�r�k�d�o�w�n�������Send messages as Markdown���UserSettingsPage����S�e�s�s�i�o�n� �K�e�y�s�������Session Keys���UserSettingsPage���0�S�h�o�w� �b�u�t�t�o�n�s� �i�n� �t�i�m�e�l�i�n�e�������Show buttons in timeline���UserSettingsPage���*�S�o�r�t� �r�o�o�m�s� �b�y� �u�n�r�e�a�d�s�������Sort rooms by unreads���UserSettingsPage����S�t�a�r�t� �i�n� �t�r�a�y�������
Start in tray���UserSettingsPage���8�T�h�e� �p�a�s�s�w�o�r�d� �c�a�n�n�o�t� �b�e� �e�m�p�t�y�������The password cannot be empty���UserSettingsPage���
+�T�h�e�m�e�������Theme���UserSettingsPage���(�T�y�p�i�n�g� �n�o�t�i�f�i�c�a�t�i�o�n�s�������Typing notifications���UserSettingsPage��� �E�n�j�o�y� �y�o�u�r� �s�t�a�y�!�������Enjoy your stay!���WelcomePage���
+�L�O�G�I�N�������LOGIN���WelcomePage����R�E�G�I�S�T�E�R�������REGISTER���WelcomePage���z�W�e�l�c�o�m�e� �t�o� �n�h�e�k�o�!� �T�h�e� �d�e�s�k�t�o�p� �c�l�i�e�n�t� �f�o�r� �t�h�e� �M�a�t�r�i�x� �p�r�o�t�o�c�o�l�.�������=Welcome to nheko! The desktop client for the Matrix protocol.���WelcomePage����Y�e�s�t�e�r�d�a�y�������	Yesterday���descriptiveTime���
+�A�l�i�a�s�������Alias���dialogs::CreateRoom����C�a�n�c�e�l�������Cancel���dialogs::CreateRoom����C�r�e�a�t�e� �r�o�o�m�������Create room���dialogs::CreateRoom����D�i�r�e�c�t� �C�h�a�t�������Direct Chat���dialogs::CreateRoom����N�a�m�e�������Name���dialogs::CreateRoom����R�o�o�m� �P�r�e�s�e�t�������Room Preset���dialogs::CreateRoom����R�o�o�m� �V�i�s�i�b�i�l�i�t�y�������Room Visibility���dialogs::CreateRoom���
+�T�o�p�i�c�������Topic���dialogs::CreateRoom����C�a�n�c�e�l�������Cancel���dialogs::FallbackAuth����C�o�n�f�i�r�m�������Confirm���dialogs::FallbackAuth���0�O�p�e�n� �F�a�l�l�b�a�c�k� �i�n� �B�r�o�w�s�e�r�������Open Fallback in Browser���dialogs::FallbackAuth���Œ�O�p�e�n� �t�h�e� �f�a�l�l�b�a�c�k�,� �f�o�l�l�o�w� �t�h�e� �s�t�e�p�s� �a�n�d� �c�o�n�f�i�r�m� �a�f�t�e�r� �c�o�m�p�l�e�t�i�n�g� �t�h�e�m�.�������FOpen the fallback, follow the steps and confirm after completing them.���dialogs::FallbackAuth����C�a�n�c�e�l�������Cancel���dialogs::InviteUsers���"�U�s�e�r� �I�D� �t�o� �i�n�v�i�t�e�������User ID to invite���dialogs::InviteUsers����C�a�n�c�e�l�������Cancel���dialogs::JoinRoom����J�o�i�n�������Join���dialogs::JoinRoom��� �R�o�o�m� �I�D� �o�r� �a�l�i�a�s�������Room ID or alias���dialogs::JoinRoom���>�A�r�e� �y�o�u� �s�u�r�e� �y�o�u� �w�a�n�t� �t�o� �l�e�a�v�e�?�������Are you sure you want to leave?���dialogs::LeaveRoom����C�a�n�c�e�l�������Cancel���dialogs::LeaveRoom����C�a�n�c�e�l�������Cancel���dialogs::Logout���*�L�o�g�o�u�t�.� �A�r�e� �y�o�u� �s�u�r�e�?�������Logout. Are you sure?���dialogs::Logout����C�a�n�c�e�l�������Cancel���dialogs::PreviewUploadOverlay���<�M�e�d�i�a� �t�y�p�e�:� �%�1�
+�M�e�d�i�a� �s�i�z�e�:� �%�2�
+�������Media type: %1
+Media size: %2
+���dialogs::PreviewUploadOverlay����U�p�l�o�a�d�������Upload���dialogs::PreviewUploadOverlay����C�a�n�c�e�l�������Cancel���dialogs::ReCaptcha����C�o�n�f�i�r�m�������Confirm���dialogs::ReCaptcha���`�S�o�l�v�e� �t�h�e� �r�e�C�A�P�T�C�H�A� �a�n�d� �p�r�e�s�s� �t�h�e� �c�o�n�f�i�r�m� �b�u�t�t�o�n�������0Solve the reCAPTCHA and press the confirm button���dialogs::ReCaptcha���
+�C�l�o�s�e�������Close���dialogs::ReadReceipts����R�e�a�d� �r�e�c�e�i�p�t�s�������
Read receipts���dialogs::ReadReceipts����T�o�d�a�y� �%�1�������Today %1���dialogs::ReceiptItem����Y�e�s�t�e�r�d�a�y� �%�1�������Yesterday %1���dialogs::ReceiptItem����%�n� �m�e�m�b�e�r����%�n� �m�e�m�b�e�r�s�������%n member(s)���dialogs::RoomSettings����A�l�l� �F�i�l�e�s� �(�*�)�������
All Files (*)���dialogs::RoomSettings����A�l�l� �m�e�s�s�a�g�e�s�������All messages���dialogs::RoomSettings���T�A�n�y�o�n�e� �w�h�o� �k�n�o�w�s� �t�h�e� �r�o�o�m� �l�i�n�k� �(�n�o� �g�u�e�s�t�s�)�������Anyone���dialogs::RoomSettings���"�A�n�y�o�n�e� �a�n�d� �g�u�e�s�t�s�������Anyone and guests���dialogs::RoomSettings����E�n�c�r�y�p�t�i�o�n�������
+Encryption���dialogs::RoomSettings���E�n�c�r�y�p�t�i�o�n� �i�s� �c�u�r�r�e�n�t�l�y� �e�x�p�e�r�i�m�e�n�t�a�l� �a�n�d� �t�h�i�n�g�s� �m�i�g�h�t� �b�r�e�a�k� �u�n�e�x�p�e�c�t�e�d�l�y�.� �<�b�r�>�P�l�e�a�s�e� �t�a�k�e� �n�o�t�e� �t�h�a�t� �i�t� �c�a�n�'�t� �b�e� �d�i�s�a�b�l�e�d� �a�f�t�e�r�w�a�r�d�s�.�������„Encryption is currently experimental and things might break unexpectedly. <br>Please take note that it can't be disabled afterwards.���dialogs::RoomSettings���*�E�n�d�-�t�o�-�E�n�d� �E�n�c�r�y�p�t�i�o�n�������End-to-End Encryption���dialogs::RoomSettings���8�E�r�r�o�r� �w�h�i�l�e� �r�e�a�d�i�n�g� �f�i�l�e�:� �%�1�������Error while reading file: %1���dialogs::RoomSettings���>�F�a�i�l�e�d� �t�o� �e�n�a�b�l�e� �e�n�c�r�y�p�t�i�o�n�:� �%�1�������Failed to enable encryption: %1���dialogs::RoomSettings���4�F�a�i�l�e�d� �t�o� �u�p�l�o�a�d� �i�m�a�g�e�:� �%�s�������Failed to upload image: %s���dialogs::RoomSettings����I�n�f�o�������Info���dialogs::RoomSettings����I�n�t�e�r�n�a�l� �I�D�������Internal ID���dialogs::RoomSettings����I�n�v�i�t�e�d� �u�s�e�r�s�������
Invited users���dialogs::RoomSettings����M�e�n�t�i�o�n�s� �o�n�l�y�������
Mentions only���dialogs::RoomSettings���
+�M�u�t�e�d�������Muted���dialogs::RoomSettings����N�o�t�i�f�i�c�a�t�i�o�n�s�������
Notifications���dialogs::RoomSettings���.�R�e�s�p�o�n�d� �t�o� �k�e�y� �r�e�q�u�e�s�t�s�������Respond to key requests���dialogs::RoomSettings����R�o�o�m� �V�e�r�s�i�o�n�������Room Version���dialogs::RoomSettings����R�o�o�m� �a�c�c�e�s�s�������Room access���dialogs::RoomSettings��� �S�e�l�e�c�t� �a�n� �a�v�a�t�a�r�������Select an avatar���dialogs::RoomSettings����S�e�t�t�i�n�g�s�������Settings���dialogs::RoomSettings���B�T�h�e� �s�e�l�e�c�t�e�d� �f�i�l�e� �i�s� �n�o�t� �a�n� �i�m�a�g�e�������!The selected file is not an image���dialogs::RoomSettings��¢�W�h�e�t�h�e�r� �o�r� �n�o�t� �t�h�e� �c�l�i�e�n�t� �s�h�o�u�l�d� �r�e�s�p�o�n�d� �a�u�t�o�m�a�t�i�c�a�l�l�y� �w�i�t�h� �t�h�e� �s�e�s�s�i�o�n� �k�e�y�s�
+� �u�p�o�n� �r�e�q�u�e�s�t�.� �U�s�e� �w�i�t�h� �c�a�u�t�i�o�n�,� �t�h�i�s� �i�s� �a� �t�e�m�p�o�r�a�r�y� �m�e�a�s�u�r�e� �t�o� �t�e�s�t� �t�h�e�
+� �E�2�E� �i�m�p�l�e�m�e�n�t�a�t�i�o�n� �u�n�t�i�l� �d�e�v�i�c�e� �v�e�r�i�f�i�c�a�t�i�o�n� �i�s� �c�o�m�p�l�e�t�e�d�.�������ÑWhether or not the client should respond automatically with the session keys
+ upon request. Use with caution, this is a temporary measure to test the
+ E2E implementation until device verification is completed.���dialogs::RoomSettings���4�B�a�n� �t�h�e� �u�s�e�r� �f�r�o�m� �t�h�e� �r�o�o�m�������Ban the user from the room���dialogs::UserProfile����D�e�v�i�c�e�s�������Devices���dialogs::UserProfile���<�I�g�n�o�r�e� �m�e�s�s�a�g�e�s� �f�r�o�m� �t�h�i�s� �u�s�e�r�������Ignore messages from this user���dialogs::UserProfile���6�K�i�c�k� �t�h�e� �u�s�e�r� �f�r�o�m� �t�h�e� �r�o�o�m�������Kick the user from the room���dialogs::UserProfile���(�S�t�a�r�t� �a� �c�o�n�v�e�r�s�a�t�i�o�n�������Start a conversation���dialogs::UserProfile����A�c�t�i�v�i�t�y�������Activity���emoji::Panel��� �A�n�i�m�a�l�s� �&� �N�a�t�u�r�e�������Animals & Nature���emoji::Panel���
+�F�l�a�g�s�������Flags���emoji::Panel����F�o�o�d� �&� �D�r�i�n�k�������Food & Drink���emoji::Panel����O�b�j�e�c�t�s�������Objects���emoji::Panel��� �S�m�i�l�e�y�s� �&� �P�e�o�p�l�e�������Smileys & People���emoji::Panel����S�y�m�b�o�l�s�������Symbols���emoji::Panel����T�r�a�v�e�l� �&� �P�l�a�c�e�s�������Travel & Places���emoji::Panel����%�1� �s�e�n�t� �a� �f�i�l�e�������%1 sent a file���message-description sent:���,�%�1� �s�e�n�t� �a� �n�o�t�i�f�i�c�a�t�i�o�n�������%1 sent a notification���message-description sent:���"�%�1� �s�e�n�t� �a� �s�t�i�c�k�e�r�������%1 sent a sticker���message-description sent:����%�1� �s�e�n�t� �a� �v�i�d�e�o�������%1 sent a video���message-description sent:���*�%�1� �s�e�n�t� �a�n� �a�u�d�i�o� �c�l�i�p�������%1 sent an audio clip���message-description sent:���8�%�1� �s�e�n�t� �a�n� �e�n�c�r�y�p�t�e�d� �m�e�s�s�a�g�e�������%1 sent an encrypted message���message-description sent:��� �%�1� �s�e�n�t� �a�n� �i�m�a�g�e�������%1 sent an image���message-description sent:����%�1�:� �%�2�������%1: %2���message-description sent:����Y�o�u� �s�e�n�t� �a� �f�i�l�e�������You sent a file���message-description sent:���.�Y�o�u� �s�e�n�t� �a� �n�o�t�i�f�i�c�a�t�i�o�n�������You sent a notification���message-description sent:���$�Y�o�u� �s�e�n�t� �a� �s�t�i�c�k�e�r�������You sent a sticker���message-description sent:��� �Y�o�u� �s�e�n�t� �a� �v�i�d�e�o�������You sent a video���message-description sent:���,�Y�o�u� �s�e�n�t� �a�n� �a�u�d�i�o� �c�l�i�p�������You sent an audio clip���message-description sent:���:�Y�o�u� �s�e�n�t� �a�n� �e�n�c�r�y�p�t�e�d� �m�e�s�s�a�g�e�������You sent an encrypted message���message-description sent:���"�Y�o�u� �s�e�n�t� �a�n� �i�m�a�g�e�������You sent an image���message-description sent:����Y�o�u�:� �%�1�������You: %1���message-description sent:����A�l�l� �R�o�o�m�s�������	All Rooms���popups::UserMentions����T�h�i�s� �R�o�o�m�������	This Room���popups::UserMentions���(�U�n�k�n�o�w�n� �M�e�s�s�a�g�e� �T�y�p�e�������Unknown Message Type���utilsˆ���
\ No newline at end of file
diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts
index 10295fcfcd0a0e83f3c45509cdd1956da1cbb60e..e76314627ac7ca0106823dde3d76a96feaf3cdfa 100644
--- a/resources/langs/nheko_en.ts
+++ b/resources/langs/nheko_en.ts
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="en">
+<context>
+    <name>Cache</name>
+    <message>
+        <location filename="../../src/Cache.cpp" line="+1341"/>
+        <source>You joined this room.</source>
+        <translation>You joined this room.</translation>
+    </message>
+</context>
 <context>
     <name>ChatPage</name>
     <message>
@@ -10,12 +18,22 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+888"/>
+        <location line="+892"/>
         <source>Invited user: %1</source>
         <translation>Invited user: %1</translation>
     </message>
     <message>
-        <location line="-5"/>
+        <location line="-463"/>
+        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
+        <translation>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</translation>
+    </message>
+    <message>
+        <location line="+428"/>
+        <source>Room %1 created.</source>
+        <translation>Room %1 created.</translation>
+    </message>
+    <message>
+        <location line="+30"/>
         <source>Failed to invite %1 to %2: %3</source>
         <translation>Failed to invite %1 to %2: %3</translation>
     </message>
@@ -50,29 +68,24 @@
         <translation>Unbanned user: %1</translation>
     </message>
     <message>
-        <location line="-813"/>
+        <location line="-817"/>
         <source>Failed to upload media. Please try again.</source>
         <translation>Failed to upload media. Please try again.</translation>
     </message>
     <message>
         <location line="+296"/>
         <source>Cache migration failed!</source>
-        <translation type="unfinished"></translation>
+        <translation>Cache migration failed!</translation>
     </message>
     <message>
-        <location line="+1"/>
-        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+12"/>
+        <location line="+13"/>
         <source>Incompatible cache version</source>
-        <translation type="unfinished"></translation>
+        <translation>Incompatible cache version</translation>
     </message>
     <message>
         <location line="+1"/>
         <source>The cache on your disk is newer than this version of Nheko supports. Please update or clear your cache.</source>
-        <translation type="unfinished"></translation>
+        <translation>The cache on your disk is newer than this version of Nheko supports. Please update or clear your cache.</translation>
     </message>
     <message>
         <location line="+111"/>
@@ -91,7 +104,7 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+215"/>
+        <location line="+219"/>
         <source>Please try to login again: %1</source>
         <translation>Please try to login again: %1</translation>
     </message>
@@ -116,12 +129,7 @@
         <translation>Room creation failed: %1</translation>
     </message>
     <message>
-        <location line="+5"/>
-        <source>Room %1 created</source>
-        <translation>Room %1 created.</translation>
-    </message>
-    <message>
-        <location line="+11"/>
+        <location line="+16"/>
         <source>Failed to leave room: %1</source>
         <translation>Failed to leave room: %1</translation>
     </message>
@@ -197,7 +205,7 @@
 <context>
     <name>LoginPage</name>
     <message>
-        <location filename="../../src/LoginPage.cpp" line="+82"/>
+        <location filename="../../src/LoginPage.cpp" line="+89"/>
         <source>Matrix ID</source>
         <translation>Matrix ID</translation>
     </message>
@@ -207,22 +215,46 @@
         <translation>e.g @joe:matrix.org</translation>
     </message>
     <message>
-        <location line="+15"/>
+        <location line="+2"/>
+        <source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
+You can also put your homeserver address there, if your server doesn&apos;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.</source>
+        <translation>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
+You can also put your homeserver address there, if your server doesn&apos;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.</translation>
+    </message>
+    <message>
+        <location line="+21"/>
         <source>Password</source>
         <translation>Password</translation>
     </message>
     <message>
-        <location line="+4"/>
+        <location line="+5"/>
         <source>Device name</source>
         <translation>Device name</translation>
     </message>
     <message>
-        <location line="+19"/>
+        <location line="+2"/>
+        <source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
+        <translation>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The address that can be used to contact you homeservers client API.
+Example: https://server.my:8787</source>
+        <translation>The address that can be used to contact you homeservers client API.
+Example: https://server.my:8787</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <location line="+185"/>
         <source>LOGIN</source>
         <translation>LOGIN</translation>
     </message>
     <message>
-        <location line="+85"/>
+        <location line="-100"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Autodiscovery failed. Received malformed response.</translation>
     </message>
@@ -232,7 +264,7 @@
         <translation>Autodiscovery failed. Unknown error while requesting .well-known.</translation>
     </message>
     <message>
-        <location line="+24"/>
+        <location line="+25"/>
         <source>The required endpoints were not found. Possibly not a Matrix server.</source>
         <translation>The required endpoints were not found. Possibly not a Matrix server.</translation>
     </message>
@@ -247,10 +279,20 @@
         <translation>An unknown error occured. Make sure the homeserver domain is valid.</translation>
     </message>
     <message>
-        <location line="+60"/>
+        <location line="+55"/>
+        <source>SSO LOGIN</source>
+        <translation>SSO LOGIN</translation>
+    </message>
+    <message>
+        <location line="+25"/>
         <source>Empty password</source>
         <translation>Empty password</translation>
     </message>
+    <message>
+        <location line="+52"/>
+        <source>SSO login failed</source>
+        <translation>SSO login failed</translation>
+    </message>
 </context>
 <context>
     <name>MemberList</name>
@@ -328,9 +370,19 @@
     </message>
     <message>
         <location line="+3"/>
+        <source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
+        <translation>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Password</source>
         <translation>Password</translation>
     </message>
+    <message>
+        <location line="+2"/>
+        <source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
+        <translation>Please choose a secure password. The exact requirements for password strength may depend on your server.</translation>
+    </message>
     <message>
         <location line="+4"/>
         <source>Password confirmation</source>
@@ -338,11 +390,16 @@
     </message>
     <message>
         <location line="+4"/>
-        <source>Home Server</source>
-        <translation>Home Server</translation>
+        <source>Homeserver</source>
+        <translation>Homeserver</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+2"/>
+        <source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
+        <translation>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</translation>
+    </message>
+    <message>
+        <location line="+17"/>
         <source>REGISTER</source>
         <translation>REGISTER</translation>
     </message>
@@ -375,7 +432,7 @@
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2213"/>
+        <location filename="../../src/Cache.cpp" line="+939"/>
         <source>no version stored</source>
         <translation>no version stored</translation>
     </message>
@@ -491,7 +548,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+773"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+844"/>
         <source>-- Decryption Error (failed to communicate with DB) --</source>
         <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
         <translation>-- Decryption Error (failed to communicate with DB) --</translation>
@@ -550,8 +607,8 @@
         <source>%1 and %2 are typing.</source>
         <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
         <translation>
-            <numerusform>%1%2 is typing</numerusform>
-            <numerusform>%1 and %2 are typing</numerusform>
+            <numerusform>%1%2 is typing.</numerusform>
+            <numerusform>%1 and %2 are typing.</numerusform>
         </translation>
     </message>
     <message>
@@ -660,7 +717,12 @@
         <translation>%1 redacted their knock.</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-1238"/>
+        <source>You joined this room.</source>
+        <translation>You joined this room.</translation>
+    </message>
+    <message>
+        <location line="+1240"/>
         <source>Rejected the knock from %1.</source>
         <translation>Rejected the knock from %1.</translation>
     </message>
@@ -684,7 +746,7 @@
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+83"/>
+        <location filename="../qml/TimelineRow.qml" line="+87"/>
         <source>Reply</source>
         <translation>Reply</translation>
     </message>
@@ -697,7 +759,7 @@
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+52"/>
+        <location filename="../qml/TimelineView.qml" line="+53"/>
         <source>Reply</source>
         <translation>Reply</translation>
     </message>
@@ -719,7 +781,7 @@
     <message>
         <location line="+6"/>
         <source>View decrypted raw message</source>
-        <translation type="unfinished"></translation>
+        <translation>View decrypted raw message</translation>
     </message>
     <message>
         <location line="+4"/>
@@ -737,7 +799,7 @@
         <translation>No room open</translation>
     </message>
     <message>
-        <location line="+239"/>
+        <location line="+254"/>
         <source>Close</source>
         <translation>Close</translation>
     </message>
@@ -821,7 +883,7 @@
     <message>
         <location line="+2"/>
         <source>Decrypt messages in sidebar</source>
-        <translation type="unfinished"></translation>
+        <translation>Decrypt messages in sidebar</translation>
     </message>
     <message>
         <location line="+1"/>
diff --git a/resources/langs/nheko_fi.ts b/resources/langs/nheko_fi.ts
index 0f0cf1ac533252e9328448b3a01766a9229c6605..01b9d75d6f9e8283ff1a0194aeb93e4e0d2c98e2 100644
--- a/resources/langs/nheko_fi.ts
+++ b/resources/langs/nheko_fi.ts
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="fi">
+<context>
+    <name>Cache</name>
+    <message>
+        <location filename="../../src/Cache.cpp" line="+1341"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>ChatPage</name>
     <message>
@@ -10,12 +18,22 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+888"/>
+        <location line="+892"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-5"/>
+        <location line="-463"/>
+        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+428"/>
+        <source>Room %1 created.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+30"/>
         <source>Failed to invite %1 to %2: %3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -50,7 +68,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-813"/>
+        <location line="-817"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -60,12 +78,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+1"/>
-        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+12"/>
+        <location line="+13"/>
         <source>Incompatible cache version</source>
         <translation type="unfinished"></translation>
     </message>
@@ -91,7 +104,7 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+215"/>
+        <location line="+219"/>
         <source>Please try to login again: %1</source>
         <translation>Ole hyvä ja yritä kirjautua sisään uudelleen: %1</translation>
     </message>
@@ -116,12 +129,7 @@
         <translation>Huoneen luominen epäonnistui: %1</translation>
     </message>
     <message>
-        <location line="+5"/>
-        <source>Room %1 created</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+11"/>
+        <location line="+16"/>
         <source>Failed to leave room: %1</source>
         <translation>Huoneesta poistuminen epäonnistui: %1</translation>
     </message>
@@ -197,7 +205,7 @@
 <context>
     <name>LoginPage</name>
     <message>
-        <location filename="../../src/LoginPage.cpp" line="+82"/>
+        <location filename="../../src/LoginPage.cpp" line="+89"/>
         <source>Matrix ID</source>
         <translation>Matrix-tunnus</translation>
     </message>
@@ -207,22 +215,42 @@
         <translation>esim. @joe:matrix.org</translation>
     </message>
     <message>
-        <location line="+15"/>
+        <location line="+2"/>
+        <source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
+You can also put your homeserver address there, if your server doesn&apos;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.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+21"/>
         <source>Password</source>
         <translation>Salasana</translation>
     </message>
     <message>
-        <location line="+4"/>
+        <location line="+5"/>
         <source>Device name</source>
         <translation>Laitteen nimi</translation>
     </message>
     <message>
-        <location line="+19"/>
+        <location line="+2"/>
+        <source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The address that can be used to contact you homeservers client API.
+Example: https://server.my:8787</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <location line="+185"/>
         <source>LOGIN</source>
         <translation>KIRJAUDU</translation>
     </message>
     <message>
-        <location line="+85"/>
+        <location line="-100"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>Palvelimen tietojen hakeminen epäonnistui: virheellinen vastaus.</translation>
     </message>
@@ -232,7 +260,7 @@
         <translation>Palvelimen tietojen hakeminen epäonnistui: tuntematon virhe hakiessa .well-known -tiedostoa.</translation>
     </message>
     <message>
-        <location line="+24"/>
+        <location line="+25"/>
         <source>The required endpoints were not found. Possibly not a Matrix server.</source>
         <translation>Vaadittuja päätepisteitä ei löydetty. Mahdollisesti ei Matrix-palvelin.</translation>
     </message>
@@ -247,10 +275,20 @@
         <translation>Tapahtui tuntematon virhe. Varmista, että kotipalvelimen osoite on pätevä.</translation>
     </message>
     <message>
-        <location line="+60"/>
+        <location line="+55"/>
+        <source>SSO LOGIN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+25"/>
         <source>Empty password</source>
         <translation>Tyhjä salasana</translation>
     </message>
+    <message>
+        <location line="+52"/>
+        <source>SSO login failed</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberList</name>
@@ -328,9 +366,19 @@
     </message>
     <message>
         <location line="+3"/>
+        <source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Password</source>
         <translation>Salasana</translation>
     </message>
+    <message>
+        <location line="+2"/>
+        <source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
         <location line="+4"/>
         <source>Password confirmation</source>
@@ -338,11 +386,16 @@
     </message>
     <message>
         <location line="+4"/>
-        <source>Home Server</source>
-        <translation>Kotipalvelin</translation>
+        <source>Homeserver</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+2"/>
+        <source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+17"/>
         <source>REGISTER</source>
         <translation>REKISTERÖIDY</translation>
     </message>
@@ -375,7 +428,7 @@
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2213"/>
+        <location filename="../../src/Cache.cpp" line="+939"/>
         <source>no version stored</source>
         <translation>ei tallennettua versiota</translation>
     </message>
@@ -491,7 +544,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+773"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+844"/>
         <source>-- Decryption Error (failed to communicate with DB) --</source>
         <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
         <translation type="unfinished">-- Virhe purkaessa salausta (tietokannan kanssa kommunikointi epäonnistui) --</translation>
@@ -660,7 +713,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-1238"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1240"/>
         <source>Rejected the knock from %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -684,7 +742,7 @@
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+83"/>
+        <location filename="../qml/TimelineRow.qml" line="+87"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -697,7 +755,7 @@
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+52"/>
+        <location filename="../qml/TimelineView.qml" line="+53"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -737,7 +795,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+239"/>
+        <location line="+254"/>
         <source>Close</source>
         <translation type="unfinished">Sulje</translation>
     </message>
diff --git a/resources/langs/nheko_fr.ts b/resources/langs/nheko_fr.ts
index 3668e53ef8d22997afeaf10a4e57125e51a3fd0c..9e47702bfb2eb72fd8116d220e75bf44d73d5800 100644
--- a/resources/langs/nheko_fr.ts
+++ b/resources/langs/nheko_fr.ts
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="fr">
+<context>
+    <name>Cache</name>
+    <message>
+        <location filename="../../src/Cache.cpp" line="+1341"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>ChatPage</name>
     <message>
@@ -10,12 +18,22 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+888"/>
+        <location line="+892"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-5"/>
+        <location line="-463"/>
+        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+428"/>
+        <source>Room %1 created.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+30"/>
         <source>Failed to invite %1 to %2: %3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -50,7 +68,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-813"/>
+        <location line="-817"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -60,12 +78,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+1"/>
-        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+12"/>
+        <location line="+13"/>
         <source>Incompatible cache version</source>
         <translation type="unfinished"></translation>
     </message>
@@ -91,7 +104,7 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+215"/>
+        <location line="+219"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -116,12 +129,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+5"/>
-        <source>Room %1 created</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+11"/>
+        <location line="+16"/>
         <source>Failed to leave room: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -197,7 +205,7 @@
 <context>
     <name>LoginPage</name>
     <message>
-        <location filename="../../src/LoginPage.cpp" line="+82"/>
+        <location filename="../../src/LoginPage.cpp" line="+89"/>
         <source>Matrix ID</source>
         <translation>Identifiant Matrix</translation>
     </message>
@@ -207,22 +215,42 @@
         <translation>ex : @joe:matrix.org</translation>
     </message>
     <message>
-        <location line="+15"/>
+        <location line="+2"/>
+        <source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
+You can also put your homeserver address there, if your server doesn&apos;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.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+21"/>
         <source>Password</source>
         <translation>Mot de passe</translation>
     </message>
     <message>
-        <location line="+4"/>
+        <location line="+5"/>
         <source>Device name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+19"/>
+        <location line="+2"/>
+        <source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The address that can be used to contact you homeservers client API.
+Example: https://server.my:8787</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <location line="+185"/>
         <source>LOGIN</source>
         <translation>CONNEXION</translation>
     </message>
     <message>
-        <location line="+85"/>
+        <location line="-100"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -232,7 +260,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+24"/>
+        <location line="+25"/>
         <source>The required endpoints were not found. Possibly not a Matrix server.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -247,10 +275,20 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+60"/>
+        <location line="+55"/>
+        <source>SSO LOGIN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+25"/>
         <source>Empty password</source>
         <translation>Mot de passe vide</translation>
     </message>
+    <message>
+        <location line="+52"/>
+        <source>SSO login failed</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberList</name>
@@ -328,9 +366,19 @@
     </message>
     <message>
         <location line="+3"/>
+        <source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Password</source>
         <translation>Mot de passe</translation>
     </message>
+    <message>
+        <location line="+2"/>
+        <source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
         <location line="+4"/>
         <source>Password confirmation</source>
@@ -338,12 +386,16 @@
     </message>
     <message>
         <location line="+4"/>
-        <source>Home Server</source>
-        <translatorcomment>À affiner...</translatorcomment>
-        <translation>Serveur Matrix</translation>
+        <source>Homeserver</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+2"/>
+        <source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+17"/>
         <source>REGISTER</source>
         <translation>S&apos;ENREGISTRER</translation>
     </message>
@@ -376,7 +428,7 @@
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2213"/>
+        <location filename="../../src/Cache.cpp" line="+939"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -492,7 +544,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+773"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+844"/>
         <source>-- Decryption Error (failed to communicate with DB) --</source>
         <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
         <translation type="unfinished"></translation>
@@ -661,7 +713,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-1238"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1240"/>
         <source>Rejected the knock from %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -685,7 +742,7 @@
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+83"/>
+        <location filename="../qml/TimelineRow.qml" line="+87"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -698,7 +755,7 @@
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+52"/>
+        <location filename="../qml/TimelineView.qml" line="+53"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -738,7 +795,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+239"/>
+        <location line="+254"/>
         <source>Close</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/resources/langs/nheko_ja.ts b/resources/langs/nheko_ja.ts
index c6f38fedbd29d67b8b85160b9d0a8b0757bd7a03..049c41890a7c8f8408debc917d0e98e9d9a8940f 100644
--- a/resources/langs/nheko_ja.ts
+++ b/resources/langs/nheko_ja.ts
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="ja_JP">
+<context>
+    <name>Cache</name>
+    <message>
+        <location filename="../../src/Cache.cpp" line="+1341"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>ChatPage</name>
     <message>
@@ -10,12 +18,22 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+888"/>
+        <location line="+892"/>
         <source>Invited user: %1</source>
         <translation>招待されたユーザー: %1</translation>
     </message>
     <message>
-        <location line="-5"/>
+        <location line="-463"/>
+        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+428"/>
+        <source>Room %1 created.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+30"/>
         <source>Failed to invite %1 to %2: %3</source>
         <translation>%2に%1を招待できませんでした: %3</translation>
     </message>
@@ -50,7 +68,7 @@
         <translation>永久追放を解除されたユーザー: %1</translation>
     </message>
     <message>
-        <location line="-813"/>
+        <location line="-817"/>
         <source>Failed to upload media. Please try again.</source>
         <translation>メディアをアップロードできませんでした。やり直して下さい。</translation>
     </message>
@@ -60,12 +78,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+1"/>
-        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+12"/>
+        <location line="+13"/>
         <source>Incompatible cache version</source>
         <translation type="unfinished"></translation>
     </message>
@@ -91,7 +104,7 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+215"/>
+        <location line="+219"/>
         <source>Please try to login again: %1</source>
         <translation>もう一度ログインしてみて下さい: %1</translation>
     </message>
@@ -116,12 +129,7 @@
         <translation>部屋を作成できませんでした: %1</translation>
     </message>
     <message>
-        <location line="+5"/>
-        <source>Room %1 created</source>
-        <translation>部屋 %1 を作成しました</translation>
-    </message>
-    <message>
-        <location line="+11"/>
+        <location line="+16"/>
         <source>Failed to leave room: %1</source>
         <translation>部屋から出られませんでした: %1</translation>
     </message>
@@ -197,7 +205,7 @@
 <context>
     <name>LoginPage</name>
     <message>
-        <location filename="../../src/LoginPage.cpp" line="+82"/>
+        <location filename="../../src/LoginPage.cpp" line="+89"/>
         <source>Matrix ID</source>
         <translation>Matrix ID</translation>
     </message>
@@ -207,22 +215,42 @@
         <translation>例 @joe:matrix.org</translation>
     </message>
     <message>
-        <location line="+15"/>
+        <location line="+2"/>
+        <source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
+You can also put your homeserver address there, if your server doesn&apos;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.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+21"/>
         <source>Password</source>
         <translation>パスワード</translation>
     </message>
     <message>
-        <location line="+4"/>
+        <location line="+5"/>
         <source>Device name</source>
         <translation>デバイス名</translation>
     </message>
     <message>
-        <location line="+19"/>
+        <location line="+2"/>
+        <source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The address that can be used to contact you homeservers client API.
+Example: https://server.my:8787</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <location line="+185"/>
         <source>LOGIN</source>
         <translation>ログイン</translation>
     </message>
     <message>
-        <location line="+85"/>
+        <location line="-100"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation>自動検出できませんでした。不正な形式の応答を受信しました。</translation>
     </message>
@@ -232,7 +260,7 @@
         <translation>自動検出できませんでした。.well-known要求時の不明なエラー。</translation>
     </message>
     <message>
-        <location line="+24"/>
+        <location line="+25"/>
         <source>The required endpoints were not found. Possibly not a Matrix server.</source>
         <translation>必要な端点が見つかりません。Matrixサーバーではないかもしれません。</translation>
     </message>
@@ -247,10 +275,20 @@
         <translation>不明なエラーが発生しました。ホームサーバーのドメイン名が有効であるかを確認して下さい。</translation>
     </message>
     <message>
-        <location line="+60"/>
+        <location line="+55"/>
+        <source>SSO LOGIN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+25"/>
         <source>Empty password</source>
         <translation>パスワードが入力されていません</translation>
     </message>
+    <message>
+        <location line="+52"/>
+        <source>SSO login failed</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberList</name>
@@ -328,9 +366,19 @@
     </message>
     <message>
         <location line="+3"/>
+        <source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Password</source>
         <translation>パスワード</translation>
     </message>
+    <message>
+        <location line="+2"/>
+        <source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
         <location line="+4"/>
         <source>Password confirmation</source>
@@ -338,11 +386,16 @@
     </message>
     <message>
         <location line="+4"/>
-        <source>Home Server</source>
-        <translation>ホームサーバー</translation>
+        <source>Homeserver</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+2"/>
+        <source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+17"/>
         <source>REGISTER</source>
         <translation>登録</translation>
     </message>
@@ -375,7 +428,7 @@
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2213"/>
+        <location filename="../../src/Cache.cpp" line="+939"/>
         <source>no version stored</source>
         <translation>バージョンが保存されていません</translation>
     </message>
@@ -491,7 +544,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+773"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+844"/>
         <source>-- Decryption Error (failed to communicate with DB) --</source>
         <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
         <translation>-- 復号エラー (データベースと通信できませんでした) --</translation>
@@ -659,7 +712,12 @@
         <translation>%1がノックを編集しました。</translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-1238"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1240"/>
         <source>Rejected the knock from %1.</source>
         <translation>%1からのノックを拒否しました。</translation>
     </message>
@@ -683,7 +741,7 @@
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+83"/>
+        <location filename="../qml/TimelineRow.qml" line="+87"/>
         <source>Reply</source>
         <translation>返信</translation>
     </message>
@@ -696,7 +754,7 @@
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+52"/>
+        <location filename="../qml/TimelineView.qml" line="+53"/>
         <source>Reply</source>
         <translation type="unfinished">返信</translation>
     </message>
@@ -736,7 +794,7 @@
         <translation>部屋が開いていません</translation>
     </message>
     <message>
-        <location line="+239"/>
+        <location line="+254"/>
         <source>Close</source>
         <translation>閉じる</translation>
     </message>
diff --git a/resources/langs/nheko_nl.ts b/resources/langs/nheko_nl.ts
index f70e1fefc9d56027540a9c21eb0dbed91515950e..205de98624d327079ae54a21f26edb4f926d9a0e 100644
--- a/resources/langs/nheko_nl.ts
+++ b/resources/langs/nheko_nl.ts
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="nl_NL">
+<context>
+    <name>Cache</name>
+    <message>
+        <location filename="../../src/Cache.cpp" line="+1341"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>ChatPage</name>
     <message>
@@ -10,12 +18,22 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+888"/>
+        <location line="+892"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-5"/>
+        <location line="-463"/>
+        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+428"/>
+        <source>Room %1 created.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+30"/>
         <source>Failed to invite %1 to %2: %3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -50,7 +68,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-813"/>
+        <location line="-817"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -60,12 +78,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+1"/>
-        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+12"/>
+        <location line="+13"/>
         <source>Incompatible cache version</source>
         <translation type="unfinished"></translation>
     </message>
@@ -91,7 +104,7 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+215"/>
+        <location line="+219"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -116,12 +129,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+5"/>
-        <source>Room %1 created</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+11"/>
+        <location line="+16"/>
         <source>Failed to leave room: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -197,7 +205,7 @@
 <context>
     <name>LoginPage</name>
     <message>
-        <location filename="../../src/LoginPage.cpp" line="+82"/>
+        <location filename="../../src/LoginPage.cpp" line="+89"/>
         <source>Matrix ID</source>
         <translation>Matrix-id</translation>
     </message>
@@ -207,22 +215,42 @@
         <translation>b.v @jan:matrix.org&lt;</translation>
     </message>
     <message>
-        <location line="+15"/>
+        <location line="+2"/>
+        <source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
+You can also put your homeserver address there, if your server doesn&apos;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.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+21"/>
         <source>Password</source>
         <translation>Wachtwoord</translation>
     </message>
     <message>
-        <location line="+4"/>
+        <location line="+5"/>
         <source>Device name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+19"/>
+        <location line="+2"/>
+        <source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The address that can be used to contact you homeservers client API.
+Example: https://server.my:8787</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <location line="+185"/>
         <source>LOGIN</source>
         <translation>INLOGGEN</translation>
     </message>
     <message>
-        <location line="+85"/>
+        <location line="-100"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -232,7 +260,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+24"/>
+        <location line="+25"/>
         <source>The required endpoints were not found. Possibly not a Matrix server.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -247,10 +275,20 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+60"/>
+        <location line="+55"/>
+        <source>SSO LOGIN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+25"/>
         <source>Empty password</source>
         <translation>Leeg wachtwoord</translation>
     </message>
+    <message>
+        <location line="+52"/>
+        <source>SSO login failed</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberList</name>
@@ -328,9 +366,19 @@
     </message>
     <message>
         <location line="+3"/>
+        <source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Password</source>
         <translation>Wachtwoord</translation>
     </message>
+    <message>
+        <location line="+2"/>
+        <source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
         <location line="+4"/>
         <source>Password confirmation</source>
@@ -338,11 +386,16 @@
     </message>
     <message>
         <location line="+4"/>
-        <source>Home Server</source>
-        <translation>Thuisserver</translation>
+        <source>Homeserver</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+2"/>
+        <source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+17"/>
         <source>REGISTER</source>
         <translation>REGISTREREN</translation>
     </message>
@@ -375,7 +428,7 @@
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2213"/>
+        <location filename="../../src/Cache.cpp" line="+939"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -491,7 +544,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+773"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+844"/>
         <source>-- Decryption Error (failed to communicate with DB) --</source>
         <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
         <translation type="unfinished"></translation>
@@ -660,7 +713,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-1238"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1240"/>
         <source>Rejected the knock from %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -684,7 +742,7 @@
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+83"/>
+        <location filename="../qml/TimelineRow.qml" line="+87"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -697,7 +755,7 @@
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+52"/>
+        <location filename="../qml/TimelineView.qml" line="+53"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -737,7 +795,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+239"/>
+        <location line="+254"/>
         <source>Close</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/resources/langs/nheko_pl.ts b/resources/langs/nheko_pl.ts
index 07ecf4a4c46a41edff66ccc3074ed4044f2eaebb..c089a5b436958f5300a6a3a20255bced6e9670d5 100644
--- a/resources/langs/nheko_pl.ts
+++ b/resources/langs/nheko_pl.ts
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="pl">
+<context>
+    <name>Cache</name>
+    <message>
+        <location filename="../../src/Cache.cpp" line="+1341"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>ChatPage</name>
     <message>
@@ -10,12 +18,22 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+888"/>
+        <location line="+892"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-5"/>
+        <location line="-463"/>
+        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+428"/>
+        <source>Room %1 created.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+30"/>
         <source>Failed to invite %1 to %2: %3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -50,7 +68,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-813"/>
+        <location line="-817"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -60,12 +78,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+1"/>
-        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+12"/>
+        <location line="+13"/>
         <source>Incompatible cache version</source>
         <translation type="unfinished"></translation>
     </message>
@@ -91,7 +104,7 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+215"/>
+        <location line="+219"/>
         <source>Please try to login again: %1</source>
         <translation>Spróbuj zalogować się ponownie: %1</translation>
     </message>
@@ -116,12 +129,7 @@
         <translation>Tworzenie pokoju nie powiodło się: %1</translation>
     </message>
     <message>
-        <location line="+5"/>
-        <source>Room %1 created</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+11"/>
+        <location line="+16"/>
         <source>Failed to leave room: %1</source>
         <translation>Nie udało się opuścić pokoju: %1</translation>
     </message>
@@ -197,7 +205,7 @@
 <context>
     <name>LoginPage</name>
     <message>
-        <location filename="../../src/LoginPage.cpp" line="+82"/>
+        <location filename="../../src/LoginPage.cpp" line="+89"/>
         <source>Matrix ID</source>
         <translation>ID Matrixa</translation>
     </message>
@@ -207,22 +215,42 @@
         <translation>np. @joe:matrix.org</translation>
     </message>
     <message>
-        <location line="+15"/>
+        <location line="+2"/>
+        <source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
+You can also put your homeserver address there, if your server doesn&apos;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.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+21"/>
         <source>Password</source>
         <translation>Hasło</translation>
     </message>
     <message>
-        <location line="+4"/>
+        <location line="+5"/>
         <source>Device name</source>
         <translation>Nazwa urzÄ…dzenia</translation>
     </message>
     <message>
-        <location line="+19"/>
+        <location line="+2"/>
+        <source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The address that can be used to contact you homeservers client API.
+Example: https://server.my:8787</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <location line="+185"/>
         <source>LOGIN</source>
         <translation>ZALOGUJ</translation>
     </message>
     <message>
-        <location line="+85"/>
+        <location line="-100"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -232,7 +260,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+24"/>
+        <location line="+25"/>
         <source>The required endpoints were not found. Possibly not a Matrix server.</source>
         <translation>Nie odnaleziono wymaganych punktów końcowych. To może nie być serwer Matriksa.</translation>
     </message>
@@ -247,10 +275,20 @@
         <translation>Wystąpił nieznany błąd. Upewnij się, że domena serwera domowego jest prawidłowa.</translation>
     </message>
     <message>
-        <location line="+60"/>
+        <location line="+55"/>
+        <source>SSO LOGIN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+25"/>
         <source>Empty password</source>
         <translation>Puste hasło</translation>
     </message>
+    <message>
+        <location line="+52"/>
+        <source>SSO login failed</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberList</name>
@@ -328,9 +366,19 @@
     </message>
     <message>
         <location line="+3"/>
+        <source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Password</source>
         <translation>Hasło</translation>
     </message>
+    <message>
+        <location line="+2"/>
+        <source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
         <location line="+4"/>
         <source>Password confirmation</source>
@@ -338,11 +386,16 @@
     </message>
     <message>
         <location line="+4"/>
-        <source>Home Server</source>
-        <translation>Serwer domowy</translation>
+        <source>Homeserver</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+2"/>
+        <source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+17"/>
         <source>REGISTER</source>
         <translation>ZAREJESTRUJ</translation>
     </message>
@@ -375,7 +428,7 @@
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2213"/>
+        <location filename="../../src/Cache.cpp" line="+939"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -491,7 +544,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+773"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+844"/>
         <source>-- Decryption Error (failed to communicate with DB) --</source>
         <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
         <translation type="unfinished"></translation>
@@ -661,7 +714,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-1238"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1240"/>
         <source>Rejected the knock from %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -685,7 +743,7 @@
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+83"/>
+        <location filename="../qml/TimelineRow.qml" line="+87"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -698,7 +756,7 @@
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+52"/>
+        <location filename="../qml/TimelineView.qml" line="+53"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -738,7 +796,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+239"/>
+        <location line="+254"/>
         <source>Close</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/resources/langs/nheko_ru.ts b/resources/langs/nheko_ru.ts
index 25abbe40a35b70dfce6d1fd3b6a5c0ebb3097ab3..761110f08d16b0a2604d4cfd8a3726ea26ba923e 100644
--- a/resources/langs/nheko_ru.ts
+++ b/resources/langs/nheko_ru.ts
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="ru">
+<context>
+    <name>Cache</name>
+    <message>
+        <location filename="../../src/Cache.cpp" line="+1341"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>ChatPage</name>
     <message>
@@ -10,12 +18,22 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+888"/>
+        <location line="+892"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-5"/>
+        <location line="-463"/>
+        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+428"/>
+        <source>Room %1 created.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+30"/>
         <source>Failed to invite %1 to %2: %3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -50,7 +68,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-813"/>
+        <location line="-817"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -60,12 +78,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+1"/>
-        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+12"/>
+        <location line="+13"/>
         <source>Incompatible cache version</source>
         <translation type="unfinished"></translation>
     </message>
@@ -91,7 +104,7 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+215"/>
+        <location line="+219"/>
         <source>Please try to login again: %1</source>
         <translation>Повторите попытку входа: %1</translation>
     </message>
@@ -116,12 +129,7 @@
         <translation>Не удалось создать комнату: %1</translation>
     </message>
     <message>
-        <location line="+5"/>
-        <source>Room %1 created</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+11"/>
+        <location line="+16"/>
         <source>Failed to leave room: %1</source>
         <translation>Не удалось покинуть комнату: %1</translation>
     </message>
@@ -197,7 +205,7 @@
 <context>
     <name>LoginPage</name>
     <message>
-        <location filename="../../src/LoginPage.cpp" line="+82"/>
+        <location filename="../../src/LoginPage.cpp" line="+89"/>
         <source>Matrix ID</source>
         <translation>Идентификатор Matrix</translation>
     </message>
@@ -207,22 +215,42 @@
         <translation>Пример: @joe:matrix.org</translation>
     </message>
     <message>
-        <location line="+15"/>
+        <location line="+2"/>
+        <source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
+You can also put your homeserver address there, if your server doesn&apos;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.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+21"/>
         <source>Password</source>
         <translation>Пароль</translation>
     </message>
     <message>
-        <location line="+4"/>
+        <location line="+5"/>
         <source>Device name</source>
         <translation>Имя устройства</translation>
     </message>
     <message>
-        <location line="+19"/>
+        <location line="+2"/>
+        <source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The address that can be used to contact you homeservers client API.
+Example: https://server.my:8787</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <location line="+185"/>
         <source>LOGIN</source>
         <translation>ВОЙТИ</translation>
     </message>
     <message>
-        <location line="+85"/>
+        <location line="-100"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -232,7 +260,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+24"/>
+        <location line="+25"/>
         <source>The required endpoints were not found. Possibly not a Matrix server.</source>
         <translation>Необходимые конечные точки не найдены. Возможно, это не сервер Matrix.</translation>
     </message>
@@ -247,10 +275,20 @@
         <translation>Произошла неизвестная ошибка. Убедитесь, что домен homeserver действителен.</translation>
     </message>
     <message>
-        <location line="+60"/>
+        <location line="+55"/>
+        <source>SSO LOGIN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+25"/>
         <source>Empty password</source>
         <translation>Пустой пароль</translation>
     </message>
+    <message>
+        <location line="+52"/>
+        <source>SSO login failed</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberList</name>
@@ -328,9 +366,19 @@
     </message>
     <message>
         <location line="+3"/>
+        <source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Password</source>
         <translation>Пароль</translation>
     </message>
+    <message>
+        <location line="+2"/>
+        <source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
         <location line="+4"/>
         <source>Password confirmation</source>
@@ -338,11 +386,16 @@
     </message>
     <message>
         <location line="+4"/>
-        <source>Home Server</source>
-        <translation>Домашний сервер</translation>
+        <source>Homeserver</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+2"/>
+        <source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+17"/>
         <source>REGISTER</source>
         <translation>РЕГИСТРАЦИЯ</translation>
     </message>
@@ -375,7 +428,7 @@
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2213"/>
+        <location filename="../../src/Cache.cpp" line="+939"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -491,7 +544,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+773"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+844"/>
         <source>-- Decryption Error (failed to communicate with DB) --</source>
         <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
         <translation type="unfinished"></translation>
@@ -661,7 +714,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-1238"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1240"/>
         <source>Rejected the knock from %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -685,7 +743,7 @@
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+83"/>
+        <location filename="../qml/TimelineRow.qml" line="+87"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -698,7 +756,7 @@
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+52"/>
+        <location filename="../qml/TimelineView.qml" line="+53"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -738,7 +796,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+239"/>
+        <location line="+254"/>
         <source>Close</source>
         <translation type="unfinished">Закрыть</translation>
     </message>
diff --git a/resources/langs/nheko_zh_CN.ts b/resources/langs/nheko_zh_CN.ts
index ddd8c01739e3a98d064f97300ba5ed769b6e1b36..5b080b74d3aec3190c1fd55f5e0ad303051718a7 100644
--- a/resources/langs/nheko_zh_CN.ts
+++ b/resources/langs/nheko_zh_CN.ts
@@ -1,6 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="zh_CN">
+<context>
+    <name>Cache</name>
+    <message>
+        <location filename="../../src/Cache.cpp" line="+1341"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>ChatPage</name>
     <message>
@@ -10,12 +18,22 @@
     </message>
     <message>
         <location line="+4"/>
-        <location line="+888"/>
+        <location line="+892"/>
         <source>Invited user: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-5"/>
+        <location line="-463"/>
+        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+428"/>
+        <source>Room %1 created.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+30"/>
         <source>Failed to invite %1 to %2: %3</source>
         <translation type="unfinished"></translation>
     </message>
@@ -50,7 +68,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-813"/>
+        <location line="-817"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -60,12 +78,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+1"/>
-        <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+12"/>
+        <location line="+13"/>
         <source>Incompatible cache version</source>
         <translation type="unfinished"></translation>
     </message>
@@ -91,7 +104,7 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+215"/>
+        <location line="+219"/>
         <source>Please try to login again: %1</source>
         <translation>请尝试再次登录:%1</translation>
     </message>
@@ -116,12 +129,7 @@
         <translation>创建聊天室失败:%1</translation>
     </message>
     <message>
-        <location line="+5"/>
-        <source>Room %1 created</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+11"/>
+        <location line="+16"/>
         <source>Failed to leave room: %1</source>
         <translation>离开聊天室失败:%1</translation>
     </message>
@@ -197,7 +205,7 @@
 <context>
     <name>LoginPage</name>
     <message>
-        <location filename="../../src/LoginPage.cpp" line="+82"/>
+        <location filename="../../src/LoginPage.cpp" line="+89"/>
         <source>Matrix ID</source>
         <translation></translation>
     </message>
@@ -207,22 +215,42 @@
         <translation>例如 @joe:matrix.org</translation>
     </message>
     <message>
-        <location line="+15"/>
+        <location line="+2"/>
+        <source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
+You can also put your homeserver address there, if your server doesn&apos;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.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+21"/>
         <source>Password</source>
         <translation>密码</translation>
     </message>
     <message>
-        <location line="+4"/>
+        <location line="+5"/>
         <source>Device name</source>
         <translation>设备名</translation>
     </message>
     <message>
-        <location line="+19"/>
+        <location line="+2"/>
+        <source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The address that can be used to contact you homeservers client API.
+Example: https://server.my:8787</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <location line="+185"/>
         <source>LOGIN</source>
         <translation>登录</translation>
     </message>
     <message>
-        <location line="+85"/>
+        <location line="-100"/>
         <source>Autodiscovery failed. Received malformed response.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -232,7 +260,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+24"/>
+        <location line="+25"/>
         <source>The required endpoints were not found. Possibly not a Matrix server.</source>
         <translation>没找到要求的终端。可能不是一个 Matrix 服务器。</translation>
     </message>
@@ -247,10 +275,20 @@
         <translation>发生了一个未知错误。请确认服务器域名合法。</translation>
     </message>
     <message>
-        <location line="+60"/>
+        <location line="+55"/>
+        <source>SSO LOGIN</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+25"/>
         <source>Empty password</source>
         <translation>空密码</translation>
     </message>
+    <message>
+        <location line="+52"/>
+        <source>SSO login failed</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MemberList</name>
@@ -328,9 +366,19 @@
     </message>
     <message>
         <location line="+3"/>
+        <source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
         <source>Password</source>
         <translation>密码</translation>
     </message>
+    <message>
+        <location line="+2"/>
+        <source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
         <location line="+4"/>
         <source>Password confirmation</source>
@@ -338,11 +386,16 @@
     </message>
     <message>
         <location line="+4"/>
-        <source>Home Server</source>
-        <translation>服务器</translation>
+        <source>Homeserver</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+2"/>
+        <source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+17"/>
         <source>REGISTER</source>
         <translation>注册</translation>
     </message>
@@ -375,7 +428,7 @@
 <context>
     <name>RoomInfo</name>
     <message>
-        <location filename="../../src/Cache.cpp" line="+2213"/>
+        <location filename="../../src/Cache.cpp" line="+939"/>
         <source>no version stored</source>
         <translation type="unfinished"></translation>
     </message>
@@ -491,7 +544,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+773"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+844"/>
         <source>-- Decryption Error (failed to communicate with DB) --</source>
         <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
         <translation type="unfinished"></translation>
@@ -659,7 +712,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
+        <location line="-1238"/>
+        <source>You joined this room.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+1240"/>
         <source>Rejected the knock from %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -683,7 +741,7 @@
 <context>
     <name>TimelineRow</name>
     <message>
-        <location filename="../qml/TimelineRow.qml" line="+83"/>
+        <location filename="../qml/TimelineRow.qml" line="+87"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -696,7 +754,7 @@
 <context>
     <name>TimelineView</name>
     <message>
-        <location filename="../qml/TimelineView.qml" line="+52"/>
+        <location filename="../qml/TimelineView.qml" line="+53"/>
         <source>Reply</source>
         <translation type="unfinished"></translation>
     </message>
@@ -736,7 +794,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+239"/>
+        <location line="+254"/>
         <source>Close</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/src/Cache.cpp b/src/Cache.cpp
index 8cfc4b55ed518e8d0e8ea1e2066cb04ff73ce09f..3a388bb97d3348b970ef6b656b81bebbb17ce455 100644
--- a/src/Cache.cpp
+++ b/src/Cache.cpp
@@ -1338,7 +1338,7 @@ Cache::getLastMessageInfo(lmdb::txn &txn, const std::string &room_id)
                         auto time    = QDateTime::fromMSecsSinceEpoch(ts);
                         fallbackDesc = DescInfo{QString::fromStdString(obj["event"]["event_id"]),
                                                 local_user,
-                                                tr("You joined this room"),
+                                                tr("You joined this room."),
                                                 utils::descriptiveTime(time),
                                                 ts,
                                                 time};
diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp
index 7c4aac7716297d0f13fcec2a41024d73bef47de5..4043fdf5bcf09d206d41e8cc42800c02e030c66b 100644
--- a/src/ChatPage.cpp
+++ b/src/ChatPage.cpp
@@ -660,7 +660,7 @@ ChatPage::bootstrap(QString userid, QString homeserver, QString token)
                                              "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"));
+                                             "manually."));
                                         QCoreApplication::quit();
                                 }
                                 loadStateFromCache();
@@ -1084,7 +1084,7 @@ ChatPage::createRoom(const mtx::requests::CreateRoom &req)
                   }
 
                   emit showNotification(
-                    tr("Room %1 created").arg(QString::fromStdString(res.room_id.to_string())));
+                    tr("Room %1 created.").arg(QString::fromStdString(res.room_id.to_string())));
           });
 }
 
diff --git a/src/RegisterPage.cpp b/src/RegisterPage.cpp
index a01f21401085c373964f8cb0792b52a23f214b36..03e9ab34cba12ca67fb09c858ea3cda166f1f940 100644
--- a/src/RegisterPage.cpp
+++ b/src/RegisterPage.cpp
@@ -94,7 +94,7 @@ RegisterPage::RegisterPage(QWidget *parent)
         password_input_->setLabel(tr("Password"));
         password_input_->setEchoMode(QLineEdit::Password);
         password_input_->setToolTip(tr("Please choose a secure password. The exact requirements "
-                                       "for password strength may depend on your server"));
+                                       "for password strength may depend on your server."));
 
         password_confirmation_ = new TextField();
         password_confirmation_->setLabel(tr("Password confirmation"));
diff --git a/src/SSOHandler.cpp b/src/SSOHandler.cpp
index 0ee2fc17d3b8bb4ad4091aedc5a52c2ae1612b89..cacbbaa92c6fad64d73fc82cc58762d44580e97c 100644
--- a/src/SSOHandler.cpp
+++ b/src/SSOHandler.cpp
@@ -30,7 +30,6 @@ SSOHandler::SSOHandler(QObject *)
         std::thread t([this]() {
                 this->port = svr.bind_to_any_port("localhost");
                 svr.listen_after_bind();
-
         });
         t.detach();
 
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 388a58428968e0d8b721935db2393fe4b099e230..99656d1910bec1b0760bc7b300dc0858a6583a44 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -566,7 +566,7 @@ TimelineModel::updateLastMessage()
                           room_id_,
                           DescInfo{QString::fromStdString(mtx::accessors::event_id(event)),
                                    QString::fromStdString(http::client()->user_id().to_string()),
-                                   tr("You joined this room"),
+                                   tr("You joined this room."),
                                    utils::descriptiveTime(time),
                                    ts,
                                    time});