diff --git a/README.md b/README.md
index 87ed7f8b..9904ebd8 100644
--- a/README.md
+++ b/README.md
@@ -114,6 +114,15 @@ with [homebrew](https://brew.sh/):
```sh
brew install --cask nheko
```
+
+#### Windows
+
+with [Chocolatey](https://chocolatey.org/):
+
+```posh
+choco install nheko-reborn
+```
+
### FAQ
##
diff --git a/io.github.NhekoReborn.Nheko.yaml b/io.github.NhekoReborn.Nheko.yaml
index d8ea05dc..2661ea6f 100644
--- a/io.github.NhekoReborn.Nheko.yaml
+++ b/io.github.NhekoReborn.Nheko.yaml
@@ -16,7 +16,9 @@ finish-args:
- --socket=wayland
- --socket=x11
- --talk-name=org.freedesktop.Notifications
- - --talk-name=org.kde.StatusNotifierWatcher
+ - --talk-name=org.freedesktop.secrets
+ - --talk-name=org.freedesktop.StatusNotifierItem
+ - --talk-name=org.kde.*
cleanup:
- /include
- /bin/mdb*
diff --git a/resources/langs/nheko_de.ts b/resources/langs/nheko_de.ts
index 40cabcbe..8265b546 100644
--- a/resources/langs/nheko_de.ts
+++ b/resources/langs/nheko_de.ts
@@ -17,22 +17,22 @@
- Du hast deinen Bildschirm freigegeben
+ Du teilst deinen Bildschirm
- Bild in Bild anzeigen/verstecken
+ Bild-in-Bild Teilen/Verstecken
- Stummschaltung aufheben
+ Stummschaltung Aufheben
- Mikrophon stummschalten
+ Mikrofon stumm schalten
@@ -151,12 +151,12 @@
- Beitreten bestätigen
+ Beitritt bestätigen
- Willst du wirklich %1 betreten?
+ Möchtest du wirklich %1 beitreten?
@@ -172,7 +172,7 @@
- Willst du wirklich %1 (%2) einladen?
+ Nutzer %1 (%2) wirklich einladen?
@@ -187,12 +187,12 @@
- Willst du wirklich %1 (%2) kicken?
+ Nutzer %1 (%2) wirklich kicken?
- %1 wurde gekickt.
+ Gekickter Benutzer: %1
@@ -202,7 +202,7 @@
- Willst du wirklich %1 (%2) aus dem Raum verbannen?
+ Nutzer %1 (%2) wirklich bannen?
@@ -212,7 +212,7 @@
- %1 wurde gebannt.
+ Gebannter Nutzer: %1
@@ -222,7 +222,7 @@
- Willst du wirklich den Bann von %1 (%2) zurückziehen?
+ Bann des Nutzers %1 (%2) wirklich aufheben?
@@ -232,7 +232,7 @@
- Verbannung von %1 wurde aufgehoben.
+ Verbannung aufgehoben: %1
@@ -247,7 +247,7 @@
- Inkompatible Cacheversion
+ Inkompatible Version des Caches
@@ -283,7 +283,7 @@
- Du bist dem Raum beigetreten.
+ Du hast den Raum betreten
@@ -506,12 +506,12 @@
-
+ Von einem unverifizierten Gerät verschlüsselt, Sie haben dem Nutzer jedoch früher schon vertraut.
-
+ Von einem unverifizierten Gerät verschlüsselt
@@ -598,7 +598,7 @@
-
+ Nachricht weiterleiten
@@ -645,10 +645,10 @@
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.
- 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.
+ Dein Anmeldename sollte mit einem @ anfangen, gefolgt von deinem Benutzernamen. Nach deinem Benutzernamen sollte ein Doppelpunkt (:) und der Servername folgen.
+Nach dem Doppelpunkt kann alternativ die Serveradresse (mit oder ohne Port) angegeben werden, wenn der Server nicht via .well-known auffindbar ist.
Beispiel: @benutzer:dein.server
-Wenn Nheko deinen Server nicht automatisch erkennen kann, wird es dich nach dem Server fragen.
+Wenn Nheko deinen Server nicht automatisch erkennen kann, bekommst du eine Eingabemaske gezeigt in die du die Serverdaten manuell eintragen kannst.
@@ -668,7 +668,7 @@ Wenn Nheko deinen Server nicht automatisch erkennen kann, wird es dich nach dem
- Ein Name für dieses Gerät. Dieser wird der anderen Seite gezeigt, wenn das Gerät verifiziert wird. Wenn nichts angeben wurde, wird einer generiert.
+ Ein Name für dieses Gerät, das der anderen Seite gezeigt wird, wenn das Gerät verifiziert wird. Wird nichts angegeben, wird einer generiert.
@@ -785,7 +785,7 @@ Beispiel: https://mein.server:8787
- Raumthema wurde entfernt
+ Thema wurde entfernt
@@ -1124,7 +1124,7 @@ Beispiel: https://mein.server:8787
- Editieren abbrechen
+ Bearbeiten abbrechen
@@ -1266,7 +1266,7 @@ Beispiel: https://mein.server:8787
- Verschlüsselung ist aktuell experimentell und kann in verschiedenen Fällen zu Fehlern führen.<br>Verschlüsselung kann nachträglich nicht deaktiviert werden.
+ Verschlüsselung ist derzeit experimentell und könnte unerwartete Probleme verursachen.<br>Bitte beachte, dass dies später nicht mehr deaktiviert werden kann.
@@ -1278,9 +1278,7 @@ Beispiel: https://mein.server:8787
- Ob Nheko automatisch auf Schlüsselanfragen antwortet. Dies ist ein temporärer
-Workaround um, solange die Ende-zu-Ende Verschlüsselung unvollständig ist, um
-Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.
+ Soll der Client automatisch mit den Sitzungsschlüsseln auf Anfragen antworten oder nicht? Bitte mit Vorsicht benutzen, dies ist eine vorübergehende Maßnahme, um die Ende-zu-Ende-Implementierung zu testen, bis die Geräteverifizierung abgeschlossen ist.
@@ -1325,13 +1323,13 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.
- Fehler beim Lesen der DateI: %1
+ Fehler beim Lesen der Datei: %1
- Hochladen der Bilddatei fehlgeschlagen: %s
+ Hochladen des Bildes fehlgeschlagen: %s
@@ -1349,23 +1347,23 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.
- Wiederholungsrate:
+ Bildrate:
- Eigene Kamera als Bild-im-Bild anzeigen
+ Deine Kamera Bild-in-Bild anzeigen
- Kamera der Gegenstelle anfragen
+ Entfernte Kamera anfragen
- Zeige die Kamera des Angerufen wie in einem normalen Videoanruf an
+ Die Kamera Ihres Gesprächspartners wie bei einem normalen Videoanruf betrachten
@@ -1649,12 +1647,12 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.
-
+ Kopieren
-
+ Link kopieren
@@ -1679,7 +1677,7 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.
-
+ Weiterleiten
@@ -1714,7 +1712,7 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.
-
+ Link zu Event kopieren
@@ -1871,7 +1869,7 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.
- Wähle einen Avatar
+ Avatar wählen
@@ -1993,13 +1991,12 @@ Betrifft nur Nachrichten in verschlüsselten Chats.
- Verliert das Fenster den Fokus, werden die Nachrichten
-verschwommen angezeigt.
+ Die Zeitliste wird unscharf, wenn das Fenster den Fokus verliert.
- Zeit bis Blickschutz aktiv wird (in Sekunden [0 - 3600])
+ Sichtschutz-Zeitbegrenzung (in Sekunden [0 - 3600])
diff --git a/resources/langs/nheko_eo.ts b/resources/langs/nheko_eo.ts
index b0740534..c8a5ae27 100644
--- a/resources/langs/nheko_eo.ts
+++ b/resources/langs/nheko_eo.ts
@@ -6,18 +6,18 @@
-
+ Vokante…
-
+ Konektante…
-
+ Vi vidigas vian ekranon
@@ -27,12 +27,12 @@
-
+ Malsilentigi mikrofonon
-
+ Silentigi mikrofonon
@@ -40,17 +40,17 @@
-
+ Atendante konfirmon
-
+ Atendante kontrolon venontan de la alia flanko.
-
+ Nuligi
@@ -66,12 +66,12 @@
-
+ Vidvoko
-
+ Voĉvoko
@@ -84,37 +84,37 @@
-
+ Vidvoko
-
+ Voĉvoko
-
+ Aparatoj
-
+ Akcepti
-
+ Nekonata mikrofono: %1
-
+ Nekonata filmilo: %1
-
+ Rifuzi
@@ -127,7 +127,7 @@
-
+ Tuta ekrano
@@ -135,13 +135,13 @@
-
+ Malsukcesis inviti uzanton: %1
-
+ Invitita uzanto: %1
@@ -151,12 +151,12 @@
-
+ Konfirmu aliĝon
-
+ Ĉu vi certe volas aliĝi al %1?
@@ -168,77 +168,77 @@
-
+ Konfirmu inviton
-
+ Ĉu vi certe volas inviti uzanton %1 (%2)?
-
+ Malsukcesis inviti uzanton %1 al %2: %3
-
+ Konfirmu forpelon
-
+ Ĉu vi certe volas forpeli uzanton %1 (%2)?
-
+ Forpelis uzanton: %1
-
+ Konfirmu forbaron
-
+ Ĉu vi certe volas forbari uzanton %1 (%2)?
-
+ Malsukcesis forbari uzanton %1 en %2: %3
-
+ Forbaris uzanton: %1
-
+ Konfirmu malforbaron
-
+ Ĉu vi certe volas malforbari uzanton %1 (%2)?
-
+ Malsukcesis malforbari uzanton %1 en %2: %3
-
+ Malforbaris uzanton: %1
-
+ Ĉu vi certe volas komenci privatan babilon kun %1?
@@ -274,12 +274,12 @@
-
+ Bonvolu provi resaluti: %1
-
+ Malsukcesis aliĝi al ĉambro: %1
@@ -289,22 +289,22 @@
-
+ Malsukcesis forigi inviton: %1
-
+ Malsukcesis krei ĉambron: %1
-
+ Malsukcesis eliri el ĉambro: %1
-
+ Malsukcesis forpeli uzanton %1 de %2: %3
@@ -312,7 +312,7 @@
-
+ Kaŝi ĉambrojn kun ĉi tiu etikedo aŭ de ĉi tiu komunumo
@@ -339,12 +339,12 @@
-
+ (etikedo)
-
+ (komunumo)
@@ -352,12 +352,12 @@
-
+ Malĉifri sekretojn
-
+ Enigu vian rehavan ŝlosilon aŭ pasfrazon por malĉifri viajn sekretojn:
@@ -367,12 +367,12 @@
-
+ Malsukcesis malĉifrado
-
+ Malsukcesis malĉifri sekretojn per la donitaj rehava ŝlosilo aŭ pasfrazo
@@ -380,22 +380,22 @@
-
+ Kontrolkodo
-
+ Bonvolu kontroli la sekvantajn ciferojn. Vi devus vidi la samajn numerojn ambaŭflanke. Se ili malsamas, bonvolu premi «Ili ne akordas!» por nuligi la kontrolon!
-
+ Ili ne akordas!
-
+ Ili akordas!
@@ -403,12 +403,12 @@
-
+ Apliki
-
+ Nuligi
@@ -418,7 +418,7 @@
-
+ Temo
@@ -426,7 +426,7 @@
- Trovu
+ Serĉu
@@ -474,22 +474,22 @@
-
+ Kontrolkodo
-
+ Bonvolu kontroli per la jenaj bildosignoj. Vi devus vidi la samajn bildosignojn ambaŭflanke. Se ili malsamas, bonvolu premi «Ili ne akordas!» por nuligi la kontrolon!
-
+ Ili ne akordas!
-
+ Ili akordas!
@@ -497,12 +497,12 @@
-
+ Ĉi tiu mesaĝo ne estas ĉifrita!
-
+ Ĉifrita de kontrolita aparato
@@ -512,7 +512,7 @@
-
+ Ĉifrita de nekontrolita aparato
@@ -565,33 +565,33 @@
-
+ Malsukcesis kontrolo
-
+ Alia kliento ne subtenas nian kontrolan protokolon.
-
+ Troviĝis malakordo de ŝlosiloj!
-
+ Trafiĝis tempolimo de aparata kontrolo.
-
+ Aliulo nuligis la kontrolon.
-
+ Fermi
@@ -612,7 +612,7 @@
- Ĉiuj dosieroj (*)
+ Ĉiuj dosieroj (*)
@@ -625,7 +625,7 @@
-
+ Forigi
@@ -633,12 +633,12 @@
-
+ Identigilo de Matrikso
-
+ ekz. @tacuo:matrix.org
@@ -646,17 +646,19 @@
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.
- Via ensaluta nomo.
+ Via saluta nomo. Identigilo de Matrikso devus komenciĝi per @ sekvata de la identigilo de uzanto. Post la identigilo, vi devas meti retnomon post :. Vi ankaŭ povas enmeti adreson de via hejmservilo, se via servilo ne subtenas bone-konatan trovmanieron.
+Ekzemplo: @uzanto:servilo.mia
+Se Nheko malsukcesas trovi vian hejmservilon, ĝi montros kampon por ĝia permana aldono.
- Pasvorto
+ Pasvorto
-
+ Via pasvorto.
@@ -667,31 +669,31 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
Wow, I had to use dictionaries a lot to get this, so there may be a number of mistakes :P
- Nomo por ĉi tiu aparato, montrot al aliaj, kiam kontrolant viajn aparatojn. Se neniom provizitis, defaŭlto uzit.
+ Nomo por ĉi tiu aparato, montrota al aliuloj, kiam oni kontrolos viajn aparatojn. Se vi neniun donos, uziĝos nomo implicita.
-
+ Adreso de hejmservilo
-
+ servilo.mia:8787
API should be valid for the EO translation of application programming interface.
- La adreso tiu uzeblas kontakti la klienta API de via hejmservisto.
-Ekzemplo: https://servisto.mia:8787
+ La adreso per kiu kontakteblas la klienta API de via hejmservilo.
+Ekzemplo: https://servilo.mia:8787
Maybe shouldn't be imperative?
- ENSALUTU
+ SALUTI
@@ -699,7 +701,7 @@ Ekzemplo: https://servisto.mia:8787
-
+ Vi enigis nevalidan identigilon de Matrikso ekz. @tacuo:matrix.org
@@ -729,7 +731,7 @@ Ekzemplo: https://servisto.mia:8787
- SSO ENSALUTU
+ UNUNURA SALUTO
@@ -761,7 +763,7 @@ Ekzemplo: https://servisto.mia:8787
-
+ forigita
@@ -796,32 +798,32 @@ Ekzemplo: https://servisto.mia:8787
-
+ %1 metis voĉvokon.
-
+ %1 metis vidvokon.
-
+ %1 metis vokon.
-
+ %1 respondis la vokon.
-
+ %1 finis la vokon.
-
+ Traktante vokon…
@@ -834,7 +836,7 @@ Ekzemplo: https://servisto.mia:8787
-
+ Voki
@@ -844,22 +846,22 @@ Ekzemplo: https://servisto.mia:8787
- Skribu mesaĝon...
+ Skribu mesaĝon…
-
+ Bildosignoj
- Sendu
+ Sendi
-
+ Vi ne rajtas sendi mesaĝojn en ĉi tiu ĉambro
@@ -867,22 +869,22 @@ Ekzemplo: https://servisto.mia:8787
-
+ Redakti
- Reagu
+ Reagi
- Respondu
+ Respondi
- Ebloj
+ Elektebloj
@@ -890,57 +892,57 @@ Ekzemplo: https://servisto.mia:8787
-
+ Sendi kontrolpeton
-
+ Ricevita kontrolpeto
-
+ Por vidigi al aliuloj, kiuj viaj aparatoj vere apartenas al vi, vi povas ilin kontroli. Tio ankaŭ funkciigus memagan savkopiadon de ŝlosiloj. Ĉu vi volas kontroli aparaton %1 nun?
-
+ Por certigi, ke neniu malica uzanto subaŭskultas vian ĉifritan komunikadon, vi povas kontroli la kunparolanton.
-
+ %1 petis kontrolon de sia aparato %2.
-
+ %1 petis kontrolon per la aparato %2.
-
+ Via aparato (%1) petis kontrolon.
-
+ Nuligi
-
+ Rifuzi
-
+ Komenci kontrolon
-
+ Akcepti
@@ -950,41 +952,41 @@ Ekzemplo: https://servisto.mia:8787
-
+ %1 sendis ĉifritan mesaĝon
Format an emote message in a notification, %1 is the sender, %2 the message
-
+ * %1 %2
Format a reply in a notification. %1 is the sender, %2 the message
-
+ %1 respondis: %2
Format a normal message in a notification. %1 is the sender, %2 the message
- %1: %2
+ %1: %2
-
+ %1 respondis per ĉifrita mesaĝo
-
+ %1 respondis al mesaĝo
-
+ %1 sendis mesaĝon
@@ -992,7 +994,7 @@ Ekzemplo: https://servisto.mia:8787
-
+ Ĉu voki al %1?
@@ -1002,22 +1004,22 @@ Ekzemplo: https://servisto.mia:8787
-
+ Voĉe
-
+ Vide
-
+ Ekrane
-
+ Nuligi
@@ -1025,7 +1027,7 @@ Ekzemplo: https://servisto.mia:8787
-
+ neprogramita okazo:
@@ -1038,12 +1040,12 @@ Ekzemplo: https://servisto.mia:8787
-
+ profilo
-
+ nomo de profilo
@@ -1051,13 +1053,13 @@ Ekzemplo: https://servisto.mia:8787
- Uzantnomo
+ Uzantonomo
-
+ La uzantonomo devas ne esti malplena, kaj devas enhavi nur la signojn a–z, 0–9, ., _, =, -, kaj /.
@@ -1067,7 +1069,7 @@ Ekzemplo: https://servisto.mia:8787
-
+ Bonvolu elekti sekuran pasvorton. Precizaj postuloj por ĝia fortikeco povus dependi de via servilo.
@@ -1077,42 +1079,42 @@ Ekzemplo: https://servisto.mia:8787
-
+ Hejmservilo
-
+ Servilo, kiu permesas registriĝon. Ĉar Matrikso estas federa, vi bezonas unue trovi servilon, kie vi povus registriĝi, aŭ gastigi vian propran.
- REGISTRU
+ REGISTRIĜI
-
+ Neniuj subtenataj manieroj de registriĝo!
-
+ Unu aŭ pliaj kampoj havas nevalidajn enigojn. Bonvolu korekti la problemojn kaj reprovi.
-
+ Pasvorto nesufiĉe longas (almenaŭ 8 signoj)
-
+ Pasvortoj ne akordas
-
+ Nevalida nomo de servilo
@@ -1120,12 +1122,12 @@ Ekzemplo: https://servisto.mia:8787
-
+ Fermi
-
+ Nuligi redakton
@@ -1141,12 +1143,12 @@ Ekzemplo: https://servisto.mia:8787
- Eliru ĉambro
+ Eliri el ĉambro
-
+ Etikedi ĉambron:
@@ -1158,25 +1160,25 @@ Ekzemplo: https://servisto.mia:8787
Standard matrix tag for low priority rooms
-
+ Malalta prioritato
Standard matrix tag for server notices
-
+ Servila avizo
WhatsThis hint for tag menu actions
-
+ Aldonas aŭ forigas la donitan etikedon.
Add a new tag to the room
- Nova etikedo...
+ Nova etikedo…
@@ -1193,12 +1195,12 @@ Ekzemplo: https://servisto.mia:8787
-
+ Akcepti
-
+ Rifuzi
@@ -1206,73 +1208,73 @@ Ekzemplo: https://servisto.mia:8787
-
+ Agordoj de ĉambro
-
+ %1 ĉambrano(j)
-
+ AGORDOJ
-
+ Sciigoj
-
+ Neniuj
-
+ Nur mencioj
-
+ Ĉiuj mesaĝoj
-
+ Ĉiu ajn, inkluzive gastojn
-
+ Ĉiu ajn
-
+ Invititoj
-
+ Ĉifrado
-
+ Tutvoja ĉifrado
-
+ Ĉifrado nun estas eksperimenta kaj povus rompiĝi neatendite.<br>Bonvole sciu, ke ne eblas ĝin malŝalti poste.
-
+ Respondi al petoj de ŝlosiloj
@@ -1284,32 +1286,32 @@ Ekzemplo: https://servisto.mia:8787
-
+ INFORMOJ
-
+ Interna identigilo
-
+ Versio de ĉambro
- Bone
+ Bone
-
+ Malsukcesis ŝalti ĉifradon: %1
-
+ Elektu bildon de ĉambro
@@ -1319,18 +1321,18 @@ Ekzemplo: https://servisto.mia:8787
-
+ La elektita dosiero ne estas bildo
-
+ Eraris legado de dosiero: %1
-
+ Malsukcesis alŝuti bildon: %s
@@ -1338,17 +1340,17 @@ Ekzemplo: https://servisto.mia:8787
-
+ Ĉu montri la labortablon al %1?
-
+ Fenestro:
-
+ Filmerrapido:
@@ -1369,7 +1371,7 @@ Ekzemplo: https://servisto.mia:8787
-
+ Kaŝi musmontrilon
@@ -1384,7 +1386,7 @@ Ekzemplo: https://servisto.mia:8787
-
+ Nuligi
@@ -1392,22 +1394,22 @@ Ekzemplo: https://servisto.mia:8787
- Uzanta agordoj
+ Agordoj de uzanto
- Faru novan ĉambron
+ Fari novan ĉambron
- Aliĝu ĉambron
+ Aliĝi ĉambron
- Komencu novan babilon
+ Komenci novan babilon
@@ -1437,7 +1439,7 @@ Ekzemplo: https://servisto.mia:8787
Could this simply be "lega"?
- Estas lega
+ Estas legita
@@ -1474,22 +1476,22 @@ Ekzemplo: https://servisto.mia:8787
-
+ Konservi bildon
-
+ Konservi filmon
-
+ Konservi sonon
-
+ Konservi dosieron
@@ -1503,42 +1505,42 @@ Ekzemplo: https://servisto.mia:8787
-
+ %1 malfermis la ĉambron al publiko.
-
+ %1 ekpostulis inviton por aliĝoj al la ĉamrbo.
-
+ %1 malfermis la ĉambron al gastoj.
-
+ %1 fermis la ĉambron al gastoj.
-
+ %1 legebligis historion de la ĉambro al ĉiu ajn. Okazoj nun legeblos al nealiĝintoj.
-
+ %1 videbligis historion de la ĉambro al ĉiuj ĉambranoj ekde nun.
-
+ %1 videbligis historion de la ĉambro al ĉambranoj ekde ties invito.
-
+ %1 videbligis historion de la ĉambro al ĉambranoj ekde ties aliĝo.
@@ -1549,13 +1551,13 @@ Ekzemplo: https://servisto.mia:8787
%1 estis invitata.
-
+ %1 estis invitita.
%1 ŝanĝis sian avataron.
-
+ %1 ŝanĝis sian profilbildon.
@@ -1580,7 +1582,7 @@ Ekzemplo: https://servisto.mia:8787
- %1 eliris la ĉambro.
+ %1 eliris el la ĉambro.
@@ -1626,7 +1628,7 @@ Ekzemplo: https://servisto.mia:8787
This is a leave event after the user already left and shouldn't happen apart from state resets
- %1 eliris post ili jam eliris!
+ %1 eliris jam elirinte!
@@ -1644,7 +1646,7 @@ Ekzemplo: https://servisto.mia:8787
-
+ Redaktita
@@ -1652,72 +1654,72 @@ Ekzemplo: https://servisto.mia:8787
-
+ Kopii
-
+ Kopii celon de ligilo
- Reagu
+ Reagi
- Respondu
+ Respondi
-
+ Redakti
-
+ Kvitancoj
-
+ Plusendi
-
+ Marki legita
-
+ Vidi krudan mesaĝon
-
+ Vidi malĉifritan krudan mesaĝon
-
+ Forigi mesaĝon
-
+ Konservi kiel
-
+ Malfermi per ekstera programo
-
+ Kopii ligilon al okazo
@@ -1764,12 +1766,12 @@ Ekzemplo: https://servisto.mia:8787
- Eliru ĉambro
+ Eliri el ĉambro
- Agordoj
+ Agordoj
@@ -1777,7 +1779,7 @@ Ekzemplo: https://servisto.mia:8787
- Montru
+ Montri
@@ -1790,7 +1792,7 @@ Ekzemplo: https://servisto.mia:8787
- Elsalutu
+ Adiaŭi
@@ -1874,7 +1876,7 @@ Ekzemplo: https://servisto.mia:8787
-
+ Elektu profilbildon
@@ -1884,12 +1886,12 @@ Ekzemplo: https://servisto.mia:8787
-
+ La elektita dosiero ne estas bildo
-
+ Eraris legado de dosiero: %1
@@ -1936,7 +1938,7 @@ Ekzemplo: https://servisto.mia:8787
-
+ VOKOJ
@@ -1946,142 +1948,159 @@ Ekzemplo: https://servisto.mia:8787
-
+ PETI
-
+ ELŜUTI
-
+ Daŭrigi la aplikaĵon fone post fermo de la klienta fenestro.
-
+ Ekigi la aplikaĵon fone sen montro de la klienta fenestro.
-
+ Ŝanĝas la aspekton de profilbildoj de uzantoj en babilujo.
+NE – kvadrataj, JES – rondaj.
-
+ Montras kolumnon kun grupoj kaj etikedoj apud la listo de ĉambroj.
-
+ Malĉifri mesaĝojn en flanka breto
-
+ Malĉifras mesaĝojn montratajn en la flanka breto.
+Influas nur sur mesaĝoj en ĉifritaj babiloj.
-
+ Privateca ŝirmilo
-
+ Kiam la fenestro ne estos fokusata, la historio
+malklariĝos.
-
+ Atendo ĝis privateca ŝirmilo (0–3600 sekundoj)
-
+ Tempo de atendo (en sekundoj) ekde senfokusiĝo
+de la fenestro, post kiu la enhavo malklariĝos.
+Agordu al 0 por malklarigi enhavon tuj post senfokusiĝo.
+Maksimuma valoro estas 1 horo (3600 sekundoj).
-
+ Montri butonojn en historio
-
+ Montras butonojn apud ĉiu mesaĝo, por rapide respondi, reagi,
+aŭ meti aliajn elekteblojn.
-
+ Limigi larĝecon de historio
-
+ Agordas maksimuman larĝecon por mesaĝoj en la historio (en bilderoj).
+Tio povas helpi legeblecon sur larĝaj ekranoj, kiam la fenestro de Nheko grandas.
-
+ Sciigoj pri tajpado
-
+ Montri, kiu tajpas en ĉambro.
+Ĉi tio ankaŭ ŝaltos sciigadon pri via tajpado al aliaj.
-
+ Ordigi ĉambrojn laŭ nelegiteco
-
+ Montras ĉambrojn kun novaj mesaĝoj kiel la unuajn.
+Kun ĉi tio malŝaltita, la listo de ĉambroj ordiĝos nur laŭ
+tempo de la lasta mesaĝo en ĉambro.
+Kun ĉi tio ŝaltita, ĉambroj kun aktivaj sciigoj (eta cirklo
+kun nombro skribita ene) estos ordigitaj plej supre. Ĉambroj,
+kiujn vi silentigis, ankoraŭ estos ordigitaj laŭ tempo, ĉar vi
+probable ne pensas ilin same gravaj kiel la aliaj ĉambroj.
-
+ Kvitancoj
-
+ Montras, ĉu via mesaĝo estis legita.
+Stato estas montrita apud tempindikoj.
-
+ Sendi mesaĝojn Markdaŭne
-
+ Permesas uzon de Markdaŭno en mesaĝoj.
+Kun ĉi tio malŝaltita, ĉiuj mesaĝoj sendiĝas en plata teksto.
-
+ Labortablaj sciigoj
-
+ Sciigi pri ricevitaj mesaĝoj kiam la kliento ne estas fokusata.
@@ -2302,7 +2321,7 @@ This usually causes the application icon in the task bar to animate in some fash
- Ĉiuj dosieroj (*)
+ Ĉiuj dosieroj (*)
@@ -2381,7 +2400,7 @@ This usually causes the application icon in the task bar to animate in some fash
Should "Matrico" be "Matrica"? (I don't think so)
- Bonvenon al nheko! La labortabla kliento por la Matrico protokolo.
+ Bonvenon al nheko! La labortabla kliento por la protokolo Matrikso.
@@ -2396,7 +2415,7 @@ This usually causes the application icon in the task bar to animate in some fash
- ENSALUTU
+ SALUTI
@@ -2412,7 +2431,7 @@ This usually causes the application icon in the task bar to animate in some fash
- Faru ĉambron
+ Fari ĉambron
@@ -2491,7 +2510,7 @@ This usually causes the application icon in the task bar to animate in some fash
- Aliĝu
+ Aliĝi
@@ -2527,7 +2546,7 @@ This usually causes the application icon in the task bar to animate in some fash
- Elsalutu. Ĉu vi certas?
+ Adiaŭi. Ĉu vi certas?
@@ -2629,22 +2648,22 @@ Media size: %2
- Vi sendis videon
+ Vi sendis filmon
- %1 sendis videon
+ %1 sendis filmon
- Vi sendis pegatinan
+ Vi sendis glumarkon
- %1 sendis pegatinan
+ %1 sendis glumarkon
diff --git a/resources/langs/nheko_es.ts b/resources/langs/nheko_es.ts
index 7e9fc4c6..988e464c 100644
--- a/resources/langs/nheko_es.ts
+++ b/resources/langs/nheko_es.ts
@@ -146,7 +146,7 @@
-
+ La migración de la caché a la versión actual ha fallado. Esto puede deberse a distintos motivos. Por favor, reporte el incidente y mientras tanto intente usar una versión anterior. También puede probar a borrar la caché manualmente.
@@ -161,13 +161,13 @@
-
+ Sala %1 creada.
-
+ Confirmar invitación
@@ -182,7 +182,7 @@
-
+ Confirmar expulsión
@@ -192,7 +192,7 @@
-
+ Se ha expulsado a %1
diff --git a/resources/langs/nheko_et.ts b/resources/langs/nheko_et.ts
index c95cb1a5..dada82a7 100644
--- a/resources/langs/nheko_et.ts
+++ b/resources/langs/nheko_et.ts
@@ -501,17 +501,17 @@
-
+ Krüptitud verifitseeritud seadmes
-
+ Krüptitud verifitseerimata seadmes, aga sa oled selle kasutajat seni usaldanud.
-
+ Krüptitud verifitseerimata seadmes
@@ -598,7 +598,7 @@
-
+ Suuna sõnum edasi
@@ -858,7 +858,7 @@ Näiteks: https://server.minu:8787
-
+ Sul puuduvad selles jututoas õigused sõnumite saatmiseks
@@ -1607,12 +1607,12 @@ testimiseks seni, kuni terviklik seadmete verifitseerimine on implementeeritud.<
-
+ %1 muutis oma tunnuspilti ja seadistas uueks kuvatavaks nimeks %2.
-
+ %1 seadistas uueks kuvatavaks nimeks %2.
@@ -1649,12 +1649,12 @@ testimiseks seni, kuni terviklik seadmete verifitseerimine on implementeeritud.<
-
+ Kopeeri
-
+ Kopeeri lingi asukoht
@@ -1679,7 +1679,7 @@ testimiseks seni, kuni terviklik seadmete verifitseerimine on implementeeritud.<
-
+ Edasta
@@ -1714,7 +1714,7 @@ testimiseks seni, kuni terviklik seadmete verifitseerimine on implementeeritud.<
-
+ Kopeeri sündmuse link
diff --git a/resources/langs/nheko_fi.ts b/resources/langs/nheko_fi.ts
index d12b1515..93513fc7 100644
--- a/resources/langs/nheko_fi.ts
+++ b/resources/langs/nheko_fi.ts
@@ -17,7 +17,7 @@
-
+ Olet jakamassa näyttöä
@@ -58,7 +58,7 @@
-
+ Sinä liityit tähän huoneeseen.
@@ -66,17 +66,17 @@
-
+ Videopuhelu
-
+ Äänipuhelu
-
+ Mikrofonia ei löydy.
@@ -84,12 +84,12 @@
-
+ Videopuhelu
-
+ Äänipuhelu
@@ -104,12 +104,12 @@
-
+ Tuntematon mikrofoni: %1
-
+ Tuntematon kamera: %1
@@ -119,7 +119,7 @@
-
+ Mikrofonia ei löydy.
@@ -141,7 +141,7 @@
-
+ Kutsuttu käyttäjä: %1
@@ -151,12 +151,12 @@
-
+ Vahvista liittyminen
-
+ Haluatko todella liittyä huoneeseen %1?
@@ -278,12 +278,12 @@
-
+ Huoneeseen liittyminen epäonnistui: %1
-
+ Sinä liityit huoneeseen
@@ -425,22 +425,22 @@
-
+ Hae
-
+ Ihmiset
-
+ Luonto
-
+ Ruoka
@@ -450,7 +450,7 @@
-
+ Matkustaminen
@@ -496,7 +496,7 @@
-
+ Tätä viestiä ei ole salattu!
@@ -598,7 +598,7 @@
-
+ Välitä viesti
@@ -655,7 +655,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
-
+ Salasanasi.
@@ -670,7 +670,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
-
+ Kotipalvelimen osoite
@@ -761,12 +761,12 @@ Example: https://server.my:8787
-
+ Salaus on käytössä
-
+ huoneen nimi muutettu: %1
@@ -862,22 +862,22 @@ Example: https://server.my:8787
-
+ Muokkaa
-
+ Reagoi
-
+ Vastaa
-
+ Asetukset
@@ -945,7 +945,7 @@ Example: https://server.my:8787
- %1 lähetti salatun viestin
+ %1 lähetti salatun viestin
@@ -957,29 +957,29 @@ Example: https://server.my:8787
Format a reply in a notification. %1 is the sender, %2 the message
-
+ %1 vastasi: %2
Format a normal message in a notification. %1 is the sender, %2 the message
- %1: %2
+ %1: %2
-
+ %1 vastasi salatulla viestillä
-
+ %1 vastasi viestiin
-
+ %1 lähetti viestin
@@ -992,7 +992,7 @@ Example: https://server.my:8787
-
+ Mikrofonia ei löydy.
@@ -1052,7 +1052,7 @@ Example: https://server.my:8787
-
+ Käyttäjätunnus ei saa olla tyhjä, ja se saa sisältää vain merkkejä a-z, 0-9, ., _, =, - ja /.
@@ -1072,7 +1072,7 @@ Example: https://server.my:8787
-
+ Kotipalvelin
@@ -1120,7 +1120,7 @@ Example: https://server.my:8787
-
+ Peruuta muokkaus
@@ -1251,12 +1251,12 @@ Example: https://server.my:8787
-
+ Salaus
- Päästä-päähän-salaus
+ Päästä-päähän-salaus
@@ -1289,43 +1289,43 @@ Example: https://server.my:8787
-
+ Huoneen versio
- OK
+ OK
- Salauksen aktivointi epäonnistui: %1
+ Salauksen aktivointi epäonnistui: %1
- Valitse profiilikuva
+ Valitse profiilikuva
- Kaikki Tiedostot (*)
+ Kaikki Tiedostot (*)
- Valittu tiedosto ei ole kuva
+ Valittu tiedosto ei ole kuva
- Virhe lukiessa tiedostoa: %1
+ Virhe lukiessa tiedostoa: %1
- Kuvan lähetys epäonnistui: %s
+ Kuvan lähetys epäonnistui: %s
@@ -1364,7 +1364,7 @@ Example: https://server.my:8787
-
+ Piilota hiiren kursori
@@ -1379,7 +1379,7 @@ Example: https://server.my:8787
- Peruuta
+ Peruuta
@@ -1472,17 +1472,17 @@ Example: https://server.my:8787
-
+ Tallenna video
-
+ Tallenna äänitiedosto
-
+ Tallenna tiedosto
@@ -1556,7 +1556,7 @@ Example: https://server.my:8787
-
+ %1 liittyi.
@@ -1571,7 +1571,7 @@ Example: https://server.my:8787
-
+ %1 poistui huoneesta.
@@ -1596,7 +1596,7 @@ Example: https://server.my:8787
-
+ Sinä liityit tähän huoneeseen.
@@ -1622,7 +1622,7 @@ Example: https://server.my:8787
-
+ Perustelu: %1
@@ -1635,7 +1635,7 @@ Example: https://server.my:8787
-
+ Muokattu
@@ -1643,27 +1643,27 @@ Example: https://server.my:8787
-
+ Kopioi
-
+ Kopioi linkin sijainti
-
+ Reagoi
-
+ Vastaa
-
+ Muokkaa
@@ -1673,12 +1673,12 @@ Example: https://server.my:8787
-
+ Lähetä viesti eteenpäin
-
+ Merkitse luetuksi
@@ -1693,12 +1693,12 @@ Example: https://server.my:8787
-
+ Poista viesti
-
+ Tallenna nimellä
@@ -2148,7 +2148,7 @@ This usually causes the application icon in the task bar to animate in some fash
-
+ Soittoääni
@@ -2158,12 +2158,12 @@ This usually causes the application icon in the task bar to animate in some fash
-
+ Mikrofoni
-
+ Kamera
diff --git a/resources/langs/nheko_it.ts b/resources/langs/nheko_it.ts
index 7fe04e1b..ae727b08 100644
--- a/resources/langs/nheko_it.ts
+++ b/resources/langs/nheko_it.ts
@@ -6,33 +6,33 @@
-
+ Sto chiamando
-
+ Connessione in corso...
-
+ Stai condividendo il tuo schermo
-
+ Nascondi/Mostra Picture-in-Picture
-
+ Attiva Microfono
-
+ Silenzia Microfono
@@ -40,12 +40,12 @@
-
+ In attesa di conferma
-
+ In attesa della conferma dall'altra parte per la verifica.
@@ -66,17 +66,17 @@
-
+ Chiamata video
-
+ Chiamata vocale
-
+ Nessun microfono trovato.
@@ -84,22 +84,22 @@
-
+ Chiamata Video
-
+ Chiamata audio
- Dispositivi
+ Dispositivi
- Accetta
+ Accetta
@@ -114,12 +114,12 @@
- Rifiuta
+ Rifiuta
-
+ Nessun microfono trovato.
@@ -151,12 +151,12 @@
-
+ Conferma collegamento
-
+ Vuoi davvero collegarti a %1?
@@ -167,12 +167,12 @@
-
+ Conferma Invito
-
+ Vuoi davvero inviare %1 (%2)?
@@ -182,12 +182,12 @@
-
+ Conferma l'allontanamento
-
+ Vuoi davvero allontanare %1 (%2)?
@@ -197,12 +197,12 @@
-
+ Conferma ban
-
+ Vuoi veramente bannare %1 (%2)?
@@ -217,12 +217,12 @@
-
+ Conferma reintegro
-
+ Vuoi veramente reintegrare %1 (%2)?
@@ -303,7 +303,7 @@
-
+ Fallita l'espulsione di %1 da %2: %3
@@ -311,7 +311,7 @@
-
+ Nascondi stanze con questo tag o di questa comunità
@@ -332,7 +332,7 @@
Tag translation for m.server_notice
-
+ Notifiche del server
@@ -351,27 +351,27 @@
-
+ Decifra i segreti
-
+ Inserisci la chiave di recupero o la parola chiave per decriptare i tuoi segreti:
-
+ Inserisci la tua chiave di recupero o la parola chiave chiamata %1 per decifrare i tuoi segreti:
-
+ Decrittazione fallita
-
+ Fallita la decrittazione usando la chiave di recupero o la parola chiave fornita
@@ -379,22 +379,22 @@
-
+ Codice di verifica
-
+ Verificare i seguenti numeri. Dovresti vedere gli stessi numeri da entrambi i lati. Se differiscono, premi 'Sono diversi!' per annullare la verifica!
-
+ Non corrispondono!
-
+ Corrispondono!
@@ -425,7 +425,7 @@
-
+ Cerca
@@ -435,7 +435,7 @@
-
+ Natura
@@ -445,27 +445,27 @@
- Attività
+ Attività
-
+ Viaggi
- Oggetti
+ Oggetti
- Simboli
+ Simboli
- Bandiere
+ Bandiere
@@ -473,7 +473,7 @@
-
+ Codice di Verifica
@@ -483,12 +483,12 @@
-
+ Non corrispondono!
-
+ Corrispondono!
@@ -496,22 +496,22 @@
- Questo messaggio è in chiaro!
+ Questo messaggio non è crittato!
-
+ Criptato da un dispositivo verificato
-
+ Criptato da un dispositivo non verificato ma hai già verificato questo utente.
-
+ Criptato da un dispositivo non verificato
@@ -520,13 +520,13 @@
Placeholder, when the message was not decrypted yet or can't be decrypted.
- -- Evento Criptato (Chiavi per la decriptazione non trovate) --
+ -- Evento Criptato (Nessuna chiave privata per la decriptazione) --
Placeholder, when the message can't be decrypted with this key since it is not valid for this index
-
+ -- Evento Criptato (Chiave non valida per questo indice) --
@@ -1024,7 +1024,7 @@ Esempio: https://server.mio:8787
- event non implementato:
+ evento non implementato:
@@ -1157,7 +1157,7 @@ Esempio: https://server.mio:8787
Standard matrix tag for low priority rooms
- bassa priorità
+ Tag matrix standard per stanze a bassa priorità
@@ -1181,7 +1181,7 @@ Esempio: https://server.mio:8787
Tag name prompt title
-
+ Nome del tag
@@ -1520,12 +1520,12 @@ Esempio: https://server.mio:8787
- %1 ha reso la cronologia della stanza leggibile da tutti. Gli eventi adesso possono essere letti da persone esterne.
+ %1 ha reso la cronologia della stanza leggibile da tutti. Gli eventi adesso possono essere letti da persone esterne.
- %1 ha reso la cronologia della stanza visibile ai membri da questo momento in poi.
+ %1 ha reso la cronologia della stanza visibile ai membri da questo momento in poi.
@@ -2449,7 +2449,7 @@ This usually causes the application icon in the task bar to animate in some fash
- Apertura di Ripiego nel Browser
+ Apertura di Ripiego nel Browser
diff --git a/resources/langs/nheko_pt_BR.ts b/resources/langs/nheko_pt_BR.ts
new file mode 100644
index 00000000..5c4e9611
--- /dev/null
+++ b/resources/langs/nheko_pt_BR.ts
@@ -0,0 +1,2721 @@
+
+
+
+
+ ActiveCallBar
+
+
+
+ Ligando...
+
+
+
+
+
+ Conectando...
+
+
+
+
+ Você está compartilhando sua tela
+
+
+
+
+ Esconder/Mostrar Picture-in-Picture
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AwaitingVerificationConfirmation
+
+
+
+
+
+
+
+
+ Esperando o outro lado completar a verificação.
+
+
+
+
+ Cancelar
+
+
+
+ Cache
+
+
+
+ Você entrou nessa sala.
+
+
+
+ CallInvite
+
+
+
+ Chamada de Vídeo
+
+
+
+
+ Chamada de Voz
+
+
+
+
+ Nenhum microfone encontrado.
+
+
+
+ CallInviteBar
+
+
+
+ Chamada de Vídeo
+
+
+
+
+ Chamada de Voz
+
+
+
+
+ Dispositivos
+
+
+
+
+ Aceitar
+
+
+
+
+ Microfone desconhecido: %1
+
+
+
+
+ Câmera desconhecida: %1
+
+
+
+
+ Rejeitar
+
+
+
+
+ Nenhum microfone encontrado.
+
+
+
+ CallManager
+
+
+
+ Tela Inteira
+
+
+
+ ChatPage
+
+
+
+ Falha ao convidar usuário: %1
+
+
+
+
+
+ Usuário convidado: %1
+
+
+
+
+
+
+
+
+
+ Confirmar entrada
+
+
+
+
+
+
+
+
+
+ Sala %1 criada.
+
+
+
+
+
+ Confirmar convite
+
+
+
+
+
+
+
+
+
+ Falha ao convidar %1 para %2: %3
+
+
+
+
+ Confirmar expulsão
+
+
+
+
+
+
+
+
+
+ Usuário expulso: %1
+
+
+
+
+ Confirmar banimento
+
+
+
+
+
+
+
+
+
+ Falha ao banir %1 em %2: %3
+
+
+
+
+ Usuário banido: %1
+
+
+
+
+ Confirmar desbanimento
+
+
+
+
+
+
+
+
+
+ Falha ao desbanir %1 em %2: %3
+
+
+
+
+ Usuário desbanido: %1
+
+
+
+
+
+
+
+
+
+ Migração do cache falhou!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Falha ao restaurar conta OLM. Por favor faça login novamente.
+
+
+
+
+ Falha ao restaurar dados salvos. Por favor faça login novamente.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CommunitiesListItem
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tag translation for m.server_notice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CrossSigningSecrets
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DigitVerification
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EditModal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EmojiPicker
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EmojiVerification
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EncryptionIndicator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EventStore
+
+
+
+ Placeholder, when the message was not decrypted yet or can't be decrypted.
+
+
+
+
+
+ Placeholder, when the message can't be decrypted with this key since it is not valid for this index
+
+
+
+
+
+
+ Placeholder, when the message can't be decrypted, because the DB access failed.
+
+
+
+
+
+
+ Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1.
+
+
+
+
+
+ Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Failed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ForwardCompleter
+
+
+
+
+
+
+
+ InputBar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InviteeItem
+
+
+
+
+
+
+
+ LoginPage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MemberList
+
+
+
+
+
+
+
+
+
+
+
+
+ MessageDelegate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MessageInput
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MessageView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NewVerificationRequest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NotificationsManager
+
+
+
+
+
+
+
+
+
+
+ Format an emote message in a notification, %1 is the sender, %2 the message
+
+
+
+
+
+ Format a reply in a notification. %1 is the sender, %2 the message
+
+
+
+
+
+ Format a normal message in a notification. %1 is the sender, %2 the message
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PlaceCall
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Placeholder
+
+
+
+
+
+
+
+ QCoreApplication
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RegisterPage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ReplyPopup
+
+
+
+
+
+
+
+
+
+
+
+
+ RoomInfo
+
+
+
+
+
+
+
+ RoomInfoListItem
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standard matrix tag for favourites
+
+
+
+
+
+ Standard matrix tag for low priority rooms
+
+
+
+
+
+ Standard matrix tag for server notices
+
+
+
+
+
+ WhatsThis hint for tag menu actions
+
+
+
+
+
+ Add a new tag to the room
+
+
+
+
+
+ Tag name prompt title
+
+
+
+
+
+ Tag name prompt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RoomSettings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ScreenShare
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SideBarActions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ StatusIndicator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Success
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TimelineModel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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.)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is a leave event after the user already left and shouldn't happen apart from state resets
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TimelineRow
+
+
+
+
+
+
+
+ TimelineView
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TimelineViewManager
+
+
+
+
+
+
+
+ TopBar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TrayIcon
+
+
+
+
+
+
+
+
+
+
+
+
+ UserInfoWidget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UserProfile
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UserSettings
+
+
+
+
+
+
+
+
+ UserSettingsPage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Waiting
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WelcomePage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ descriptiveTime
+
+
+
+
+
+
+
+ dialogs::CreateRoom
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ dialogs::FallbackAuth
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ dialogs::InviteUsers
+
+
+
+
+
+
+
+
+
+
+
+
+ dialogs::JoinRoom
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ dialogs::LeaveRoom
+
+
+
+
+
+
+
+
+
+
+
+
+ dialogs::Logout
+
+
+
+
+
+
+
+
+
+
+
+
+ dialogs::PreviewUploadOverlay
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ dialogs::ReCaptcha
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ dialogs::ReadReceipts
+
+
+
+
+
+
+
+
+
+
+
+
+ dialogs::ReceiptItem
+
+
+
+
+
+
+
+
+
+
+
+
+ message-description sent:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ popups::UserMentions
+
+
+
+
+
+
+
+
+
+
+
+
+ utils
+
+
+
+
+
+
+
diff --git a/resources/langs/nheko_ru.ts b/resources/langs/nheko_ru.ts
index 3ff6088c..4f9d406e 100644
--- a/resources/langs/nheko_ru.ts
+++ b/resources/langs/nheko_ru.ts
@@ -17,12 +17,12 @@
-
+ Вы демонстрируете экран
-
+ Убрать/Показать Картинку-в-Картинке
@@ -84,42 +84,42 @@
- Видео Звонок
+ Видео Звонок
- Голосовой Звонок
+ Голосовой Звонок
- Устройства
+ Устройства
- Принять
+ Принять
-
+ Неизвестный микрофон: %1
-
+ Неизвестная камера: %1
- Отказаться
+ Отказаться
- Микрофон не найден.
+ Микрофон не найден.
@@ -127,7 +127,7 @@
-
+ Весь экран
@@ -151,12 +151,12 @@
-
+ Подтвердить вход
-
+ Вы действительно хотите присоединиться?
@@ -237,7 +237,7 @@
-
+ Вы действительно хотите начать личную переписку с %1?
@@ -303,7 +303,7 @@
-
+ Не удалось выгнать %1 из %2: %3
@@ -351,27 +351,27 @@
-
+ Расшифровать секреты
-
+ Введите свой ключ восстановления или пароль для расшифровки секретов:
-
+ Введите свой ключ восстановления или пароль названный %1 для расшифровки Ваших секретов:
-
+ Расшифровка не удалась
-
+ Не удалось расшифровать секреты с помощью предоставленного ключа восстановления или пароля.
@@ -501,17 +501,17 @@
-
+ Зашифровано верефицированым устройством
-
+ Зашифрованно неверефицированым устройством, но Вы все еще доверяете этому пользователю.
-
+ Зашифровано неверифицированым устройства
@@ -520,20 +520,20 @@
Placeholder, when the message was not decrypted yet or can't be decrypted.
- -- Зашифрованное событие (Нет найдено ключей для дешифрования) --
+ -- Зашифрованное событие (Не найдено ключей для дешифрования) --
Placeholder, when the message can't be decrypted with this key since it is not valid for this index
-
+ -- Зашифрованное событие(Не найдено ключей для дешифрования) --
Placeholder, when the message can't be decrypted, because the DB access failed.
- -- Ошибка дешифрования (Не удалось получить megolm-ключи для бд) --
+ -- Ошибка дешифрования (Не удалось получить megolm-ключи из бд) --
@@ -598,7 +598,7 @@
-
+ Переслать Сообщение
@@ -658,7 +658,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
-
+ Ваш пароль.
@@ -673,12 +673,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
-
+ Адрес домашнего сервера
-
+ server.my:8787
@@ -698,7 +698,7 @@ Example: https://server.my:8787
-
+ Вы ввели не правильный Matrix ID, @joe:matrix.org
@@ -858,7 +858,7 @@ Example: https://server.my:8787
-
+ У вас нет прав для отправления сообщений в этой комнате
@@ -866,22 +866,22 @@ Example: https://server.my:8787
-
+ Редактировать
- Отреагировать
+ Реакция
- Ответить
+ Ответить
- Опции
+ Опции
@@ -889,12 +889,12 @@ Example: https://server.my:8787
-
+ Отправить Запрос Верификации
-
+ Получен Запрос Верификации
@@ -949,7 +949,7 @@ Example: https://server.my:8787
- %1 отправил зашифрованное сообщение
+ %1 отправил зашифрованное сообщение
@@ -973,17 +973,17 @@ Example: https://server.my:8787
-
+ %1 ответил зашифрованным сообщением
-
+ %1 ответил на сообщение
-
+ %1 отправил сообщениe
@@ -991,32 +991,32 @@ Example: https://server.my:8787
-
+ Позвонить %1?
- Микрофон не найден.
+ Микрофон не найден.
-
+ Голос
-
+ Видео
-
+ Экран
-
+ Отмена
@@ -1124,7 +1124,7 @@ Example: https://server.my:8787
-
+ Отменить редактирование
@@ -1205,62 +1205,62 @@ Example: https://server.my:8787
-
+ Настройки комнаты
-
+ %1 участник(ов)
-
+ НАЙСТРОЙКИ
-
+ Уведомления
-
+ Заглушен
-
+ Упоминания только
-
+ Все сообщения
-
+ Каждый и гости
-
+ Каждый
-
+ Приглашённые пользователи
-
+ Шифрование
- Сквозное шифрование
+ Оконечное шифрование
@@ -1271,7 +1271,7 @@ Example: https://server.my:8787
-
+ Отвечать на запрос ключей
@@ -1283,53 +1283,53 @@ Example: https://server.my:8787
-
+ ИНФОРМАЦИЯ
-
+ Внутренний ID
-
+ Версия Комнаты
- ОК
+ ОК
- Не удалось включить шифрование: %1
+ Не удалось включить шифрование: %1
- Выберите аватар
+ Выберите аватар
- Все файлы (*)
+ Все файлы (*)
- Выбранный файл не является картинкой
+ Выбранный файл не является картинкой
- Ошибка во время прочтения файла: %1
+ Ошибка во время прочтения файла: %1
- Не удалось загрузить изображение: %s
+ Не удалось загрузить изображение: %s
@@ -1337,27 +1337,27 @@ Example: https://server.my:8787
-
+ Поделиться экраном с %1?
-
+ Окно:
-
+ Частота кадров:
-
+ Включить Вашу камеру в режиме картинка-в-картинке
-
+ Запросить удалённую камеру
@@ -1368,22 +1368,22 @@ Example: https://server.my:8787
-
+ Спрятать курсор мыши
-
+ Поделиться
-
+ Предпросмотр
-
+ Отмена
@@ -1640,7 +1640,7 @@ Example: https://server.my:8787
-
+ Изменено
@@ -1648,12 +1648,12 @@ Example: https://server.my:8787
-
+ Копировать
-
+ Скопировать ссылку
@@ -1668,7 +1668,7 @@ Example: https://server.my:8787
-
+ Редактировать
@@ -1678,7 +1678,7 @@ Example: https://server.my:8787
-
+ Переслать
@@ -1708,12 +1708,12 @@ Example: https://server.my:8787
-
+ Открыть вo сторонней программе
-
+ Скопировать ссылку на событие
@@ -1806,7 +1806,7 @@ Example: https://server.my:8787
-
+ Настройки пользовательского профиля
@@ -1834,12 +1834,12 @@ Example: https://server.my:8787
-
+ Глобальный Пользовательский Профиль
-
+ Поользовательский Профиль в Комнате
@@ -1865,27 +1865,27 @@ Example: https://server.my:8787
-
+ Отменить Верификацию
- Выберите аватар
+ Выберите аватар
- Все файлы (*)
+ Все файлы (*)
- Выбранный файл не является картинкой
+ Выбранный файл не является картинкой
- Ошибка во время прочтения файла: %1
+ Ошибка во время прочтения файла: %1
@@ -1894,7 +1894,7 @@ Example: https://server.my:8787
-
+ По умолчанию
@@ -1927,7 +1927,7 @@ Example: https://server.my:8787
-
+ По умолчанию
@@ -1942,12 +1942,12 @@ Example: https://server.my:8787
-
+ ЗАПРОС
-
+ СКАЧАТЬ
@@ -1984,7 +1984,7 @@ Only affects messages in encrypted chats.
-
+ Приватное Окно
@@ -2123,12 +2123,12 @@ This usually causes the application icon in the task bar to animate in some fash
-
+ Закешировано
-
+ НЕ ЗАКЕШИРОВАНО
@@ -2288,7 +2288,7 @@ This usually causes the application icon in the task bar to animate in some fash
-
+ Ключ восстановления
diff --git a/resources/qml/MessageView.qml b/resources/qml/MessageView.qml
index 176905db..c936c638 100644
--- a/resources/qml/MessageView.qml
+++ b/resources/qml/MessageView.qml
@@ -448,14 +448,14 @@ ScrollView {
Platform.MenuItem {
visible: messageContextMenu.text
enabled: visible
- text: qsTr("Copy")
+ text: qsTr("&Copy")
onTriggered: Clipboard.text = messageContextMenu.text
}
Platform.MenuItem {
visible: messageContextMenu.link
enabled: visible
- text: qsTr("Copy link location")
+ text: qsTr("Copy &link location")
onTriggered: Clipboard.text = messageContextMenu.link
}
@@ -463,7 +463,7 @@ ScrollView {
id: reactionOption
visible: room ? room.permissions.canSend(MtxEvent.Reaction) : false
- text: qsTr("React")
+ text: qsTr("Re&act")
onTriggered: emojiPopup.show(null, function(emoji) {
room.input.reaction(messageContextMenu.eventId, emoji);
})
@@ -471,25 +471,25 @@ ScrollView {
Platform.MenuItem {
visible: room ? room.permissions.canSend(MtxEvent.TextMessage) : false
- text: qsTr("Reply")
+ text: qsTr("Repl&y")
onTriggered: room.replyAction(messageContextMenu.eventId)
}
Platform.MenuItem {
visible: messageContextMenu.isEditable && (room ? room.permissions.canSend(MtxEvent.TextMessage) : false)
enabled: visible
- text: qsTr("Edit")
+ text: qsTr("&Edit")
onTriggered: room.editAction(messageContextMenu.eventId)
}
Platform.MenuItem {
- text: qsTr("Read receipts")
+ text: qsTr("Read receip&ts")
onTriggered: room.readReceiptsAction(messageContextMenu.eventId)
}
Platform.MenuItem {
visible: messageContextMenu.eventType == MtxEvent.ImageMessage || messageContextMenu.eventType == MtxEvent.VideoMessage || messageContextMenu.eventType == MtxEvent.AudioMessage || messageContextMenu.eventType == MtxEvent.FileMessage || messageContextMenu.eventType == MtxEvent.Sticker || messageContextMenu.eventType == MtxEvent.TextMessage || messageContextMenu.eventType == MtxEvent.LocationMessage || messageContextMenu.eventType == MtxEvent.EmoteMessage || messageContextMenu.eventType == MtxEvent.NoticeMessage
- text: qsTr("Forward")
+ text: qsTr("&Forward")
onTriggered: {
var forwardMess = forwardCompleterComponent.createObject(timelineRoot);
forwardMess.setMessageEventId(messageContextMenu.eventId);
@@ -498,7 +498,7 @@ ScrollView {
}
Platform.MenuItem {
- text: qsTr("Mark as read")
+ text: qsTr("&Mark as read")
}
Platform.MenuItem {
@@ -516,28 +516,28 @@ ScrollView {
Platform.MenuItem {
visible: (room ? room.permissions.canRedact() : false) || messageContextMenu.isSender
- text: qsTr("Remove message")
+ text: qsTr("Remo&ve message")
onTriggered: room.redactEvent(messageContextMenu.eventId)
}
Platform.MenuItem {
visible: messageContextMenu.eventType == MtxEvent.ImageMessage || messageContextMenu.eventType == MtxEvent.VideoMessage || messageContextMenu.eventType == MtxEvent.AudioMessage || messageContextMenu.eventType == MtxEvent.FileMessage || messageContextMenu.eventType == MtxEvent.Sticker
enabled: visible
- text: qsTr("Save as")
+ text: qsTr("&Save as")
onTriggered: room.saveMedia(messageContextMenu.eventId)
}
Platform.MenuItem {
visible: messageContextMenu.eventType == MtxEvent.ImageMessage || messageContextMenu.eventType == MtxEvent.VideoMessage || messageContextMenu.eventType == MtxEvent.AudioMessage || messageContextMenu.eventType == MtxEvent.FileMessage || messageContextMenu.eventType == MtxEvent.Sticker
enabled: visible
- text: qsTr("Open in external program")
+ text: qsTr("&Open in external program")
onTriggered: room.openMedia(messageContextMenu.eventId)
}
Platform.MenuItem {
visible: messageContextMenu.eventId
enabled: visible
- text: qsTr("Copy link to event")
+ text: qsTr("Copy link to eve&nt")
onTriggered: room.copyLinkToEvent(messageContextMenu.eventId)
}
diff --git a/src/RegisterPage.cpp b/src/RegisterPage.cpp
index 5c5545ec..36fd71a8 100644
--- a/src/RegisterPage.cpp
+++ b/src/RegisterPage.cpp
@@ -11,6 +11,7 @@
#include
#include
+#include
#include "Config.h"
#include "Logging.h"
@@ -108,6 +109,10 @@ RegisterPage::RegisterPage(QWidget *parent)
error_password_confirmation_label_->setWordWrap(true);
error_password_confirmation_label_->hide();
+ error_server_label_ = new QLabel(this);
+ error_server_label_->setWordWrap(true);
+ error_server_label_->hide();
+
form_layout_->addWidget(username_input_, Qt::AlignHCenter);
form_layout_->addWidget(error_username_label_, Qt::AlignHCenter);
form_layout_->addWidget(password_input_, Qt::AlignHCenter);
@@ -115,6 +120,7 @@ RegisterPage::RegisterPage(QWidget *parent)
form_layout_->addWidget(password_confirmation_, Qt::AlignHCenter);
form_layout_->addWidget(error_password_confirmation_label_, Qt::AlignHCenter);
form_layout_->addWidget(server_input_, Qt::AlignHCenter);
+ form_layout_->addWidget(error_server_label_, Qt::AlignHCenter);
button_layout_ = new QHBoxLayout();
button_layout_->setSpacing(0);
@@ -140,6 +146,17 @@ RegisterPage::RegisterPage(QWidget *parent)
top_layout_->addWidget(error_label_, 0, Qt::AlignHCenter);
top_layout_->addStretch(1);
+ connect(
+ this,
+ &RegisterPage::versionErrorCb,
+ this,
+ [this](const QString &msg) {
+ error_server_label_->show();
+ server_input_->setValid(false);
+ showError(error_server_label_, msg);
+ },
+ Qt::QueuedConnection);
+
connect(back_button_, SIGNAL(clicked()), this, SLOT(onBackButtonClicked()));
connect(register_button_, SIGNAL(clicked()), this, SLOT(onRegisterButtonClicked()));
@@ -351,10 +368,12 @@ RegisterPage::checkFields()
error_username_label_->setText("");
error_password_label_->setText("");
error_password_confirmation_label_->setText("");
+ error_server_label_->setText("");
error_username_label_->hide();
error_password_label_->hide();
error_password_confirmation_label_->hide();
+ error_server_label_->hide();
password_confirmation_->setValid(true);
server_input_->setValid(true);
@@ -379,7 +398,8 @@ RegisterPage::checkFields()
all_fields_good = false;
} else if (server_input_->isModified() &&
(!server_input_->hasAcceptableInput() || server_input_->text().isEmpty())) {
- showError(tr("Invalid server name"));
+ error_server_label_->show();
+ showError(error_server_label_, tr("Invalid server name"));
server_input_->setValid(false);
all_fields_good = false;
}
@@ -406,51 +426,113 @@ RegisterPage::onRegisterButtonClicked()
http::client()->set_server(server);
http::client()->verify_certificates(
!UserSettings::instance()->disableCertificateValidation());
- http::client()->registration(
- username,
- password,
- [this, username, password](const mtx::responses::Register &res,
+
+ http::client()->well_known(
+ [this, username, password](const mtx::responses::WellKnown &res,
mtx::http::RequestErr err) {
- if (!err) {
- http::client()->set_user(res.user_id);
- http::client()->set_access_token(res.access_token);
+ if (err) {
+ using namespace boost::beast::http;
- emit registerOk();
- return;
- }
-
- // The server requires registration flows.
- if (err->status_code == boost::beast::http::status::unauthorized) {
- if (err->matrix_error.unauthorized.flows.empty()) {
- nhlog::net()->warn(
- "failed to retrieve registration flows1: ({}) "
- "{}",
- static_cast(err->status_code),
- err->matrix_error.error);
- emit errorOccurred();
- emit registerErrorCb(
- QString::fromStdString(err->matrix_error.error));
+ if (err->status_code == status::not_found) {
+ nhlog::net()->info("Autodiscovery: No .well-known.");
+ checkVersionAndRegister(username, password);
return;
}
- emit registrationFlow(
- username, password, err->matrix_error.unauthorized);
+ if (!err->parse_error.empty()) {
+ emit versionErrorCb(tr(
+ "Autodiscovery failed. Received malformed response."));
+ nhlog::net()->error(
+ "Autodiscovery failed. Received malformed response.");
+ return;
+ }
+
+ emit versionErrorCb(tr("Autodiscovery failed. Unknown error when "
+ "requesting .well-known."));
+ nhlog::net()->error("Autodiscovery failed. Unknown error when "
+ "requesting .well-known. {}",
+ err->error_code.message());
return;
}
- nhlog::net()->error(
- "failed to register: status_code ({}), matrix_error({})",
- static_cast(err->status_code),
- err->matrix_error.error);
-
- emit registerErrorCb(QString::fromStdString(err->matrix_error.error));
- emit errorOccurred();
+ nhlog::net()->info("Autodiscovery: Discovered '" +
+ res.homeserver.base_url + "'");
+ http::client()->set_server(res.homeserver.base_url);
+ checkVersionAndRegister(username, password);
});
emit registering();
}
}
+void
+RegisterPage::checkVersionAndRegister(const std::string &username, const std::string &password)
+{
+ http::client()->versions(
+ [this, username, password](const mtx::responses::Versions &, mtx::http::RequestErr err) {
+ if (err) {
+ using namespace boost::beast::http;
+
+ if (err->status_code == status::not_found) {
+ emit versionErrorCb(tr("The required endpoints were not found. "
+ "Possibly not a Matrix server."));
+ return;
+ }
+
+ if (!err->parse_error.empty()) {
+ emit versionErrorCb(tr("Received malformed response. Make sure "
+ "the homeserver domain is valid."));
+ return;
+ }
+
+ emit versionErrorCb(tr(
+ "An unknown error occured. Make sure the homeserver domain is valid."));
+ return;
+ }
+
+ http::client()->registration(
+ username,
+ password,
+ [this, username, password](const mtx::responses::Register &res,
+ mtx::http::RequestErr err) {
+ if (!err) {
+ http::client()->set_user(res.user_id);
+ http::client()->set_access_token(res.access_token);
+
+ emit registerOk();
+ return;
+ }
+
+ // The server requires registration flows.
+ if (err->status_code == boost::beast::http::status::unauthorized) {
+ if (err->matrix_error.unauthorized.flows.empty()) {
+ nhlog::net()->warn(
+ "failed to retrieve registration flows1: ({}) "
+ "{}",
+ static_cast(err->status_code),
+ err->matrix_error.error);
+ emit errorOccurred();
+ emit registerErrorCb(
+ QString::fromStdString(err->matrix_error.error));
+ return;
+ }
+
+ emit registrationFlow(
+ username, password, err->matrix_error.unauthorized);
+ return;
+ }
+
+ nhlog::net()->error(
+ "failed to register: status_code ({}), matrix_error({})",
+ static_cast(err->status_code),
+ err->matrix_error.error);
+
+ emit registerErrorCb(QString::fromStdString(err->matrix_error.error));
+ emit errorOccurred();
+ });
+ });
+}
+
void
RegisterPage::paintEvent(QPaintEvent *)
{
diff --git a/src/RegisterPage.h b/src/RegisterPage.h
index 2f05d04c..0e4a45d0 100644
--- a/src/RegisterPage.h
+++ b/src/RegisterPage.h
@@ -31,6 +31,10 @@ protected:
signals:
void backButtonClicked();
void errorOccurred();
+
+ //! Used to trigger the corresponding slot outside of the main thread.
+ void versionErrorCb(const QString &err);
+
void registering();
void registerOk();
void registerErrorCb(const QString &msg);
@@ -52,6 +56,7 @@ private:
bool checkOneField(QLabel *label, const TextField *t_field, const QString &msg);
bool checkFields();
void showError(QLabel *label, const QString &msg);
+ void checkVersionAndRegister(const std::string &username, const std::string &password);
QVBoxLayout *top_layout_;
QHBoxLayout *back_layout_;
@@ -63,6 +68,7 @@ private:
QLabel *error_username_label_;
QLabel *error_password_label_;
QLabel *error_password_confirmation_label_;
+ QLabel *error_server_label_;
FlatButton *back_button_;
RaisedButton *register_button_;
diff --git a/src/Utils.cpp b/src/Utils.cpp
index c110aa18..562b94fd 100644
--- a/src/Utils.cpp
+++ b/src/Utils.cpp
@@ -679,11 +679,10 @@ utils::hashQString(const QString &input)
return hash;
}
-QString
-utils::generateContrastingHexColor(const QString &input, const QString &background)
+QColor
+utils::generateContrastingHexColor(const QString &input, const QColor &backgroundCol)
{
- const QColor backgroundCol(background);
- const qreal backgroundLum = luminance(background);
+ const qreal backgroundLum = luminance(backgroundCol);
// Create a color for the input
auto hash = hashQString(input);
diff --git a/src/Utils.h b/src/Utils.h
index e976cf81..1d48e2c7 100644
--- a/src/Utils.h
+++ b/src/Utils.h
@@ -301,8 +301,8 @@ hashQString(const QString &input);
//! Generate a color (matching #RRGGBB) that has an acceptable contrast to background that is based
//! on the input string.
-QString
-generateContrastingHexColor(const QString &input, const QString &background);
+QColor
+generateContrastingHexColor(const QString &input, const QColor &background);
//! Given two luminance values, compute the contrast ratio between them.
qreal
diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp
index a6947f99..a45294d1 100644
--- a/src/timeline/TimelineViewManager.cpp
+++ b/src/timeline/TimelineViewManager.cpp
@@ -107,8 +107,7 @@ QColor
TimelineViewManager::userColor(QString id, QColor background)
{
if (!userColors.contains(id))
- userColors.insert(
- id, QColor(utils::generateContrastingHexColor(id, background.name())));
+ userColors.insert(id, QColor(utils::generateContrastingHexColor(id, background)));
return userColors.value(id);
}