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 @@
You are screen sharing
- Du hast deinen Bildschirm freigegeben
+ Du teilst deinen BildschirmHide/Show Picture-in-Picture
- Bild in Bild anzeigen/verstecken
+ Bild-in-Bild Teilen/VersteckenUnmute Mic
- Stummschaltung aufheben
+ Stummschaltung AufhebenMute Mic
- Mikrophon stummschalten
+ Mikrofon stumm schalten
@@ -151,12 +151,12 @@
Confirm join
- Beitreten bestätigen
+ Beitritt bestätigenDo you really want to join %1?
- Willst du wirklich %1 betreten?
+ Möchtest du wirklich %1 beitreten?
@@ -172,7 +172,7 @@
Do you really want to invite %1 (%2)?
- Willst du wirklich %1 (%2) einladen?
+ Nutzer %1 (%2) wirklich einladen?
@@ -187,12 +187,12 @@
Do you really want to kick %1 (%2)?
- Willst du wirklich %1 (%2) kicken?
+ Nutzer %1 (%2) wirklich kicken?Kicked user: %1
- %1 wurde gekickt.
+ Gekickter Benutzer: %1
@@ -202,7 +202,7 @@
Do you really want to ban %1 (%2)?
- Willst du wirklich %1 (%2) aus dem Raum verbannen?
+ Nutzer %1 (%2) wirklich bannen?
@@ -212,7 +212,7 @@
Banned user: %1
- %1 wurde gebannt.
+ Gebannter Nutzer: %1
@@ -222,7 +222,7 @@
Do you really want to unban %1 (%2)?
- Willst du wirklich den Bann von %1 (%2) zurückziehen?
+ Bann des Nutzers %1 (%2) wirklich aufheben?
@@ -232,7 +232,7 @@
Unbanned user: %1
- Verbannung von %1 wurde aufgehoben.
+ Verbannung aufgehoben: %1
@@ -247,7 +247,7 @@
Incompatible cache version
- Inkompatible Cacheversion
+ Inkompatible Version des Caches
@@ -283,7 +283,7 @@
You joined the room
- Du bist dem Raum beigetreten.
+ Du hast den Raum betreten
@@ -506,12 +506,12 @@
Encrypted by an unverified device, but you have trusted that user so far.
-
+ Von einem unverifizierten Gerät verschlüsselt, Sie haben dem Nutzer jedoch früher schon vertraut.Encrypted by an unverified device
-
+ Von einem unverifizierten Gerät verschlüsselt
@@ -598,7 +598,7 @@
Forward Message
-
+ 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
A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.
- 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
removed topic
- Raumthema wurde entfernt
+ Thema wurde entfernt
@@ -1124,7 +1124,7 @@ Beispiel: https://mein.server:8787
Cancel edit
- Editieren abbrechen
+ Bearbeiten abbrechen
@@ -1266,7 +1266,7 @@ Beispiel: https://mein.server:8787
Encryption is currently experimental and things might break unexpectedly. <br>
Please take note that it can't be disabled afterwards.
- 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
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.
- 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.
Error while reading file: %1
- Fehler beim Lesen der DateI: %1
+ Fehler beim Lesen der Datei: %1Failed to upload image: %s
- 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.
Frame rate:
- Wiederholungsrate:
+ Bildrate:Include your camera picture-in-picture
- Eigene Kamera als Bild-im-Bild anzeigen
+ Deine Kamera Bild-in-Bild anzeigenRequest remote camera
- Kamera der Gegenstelle anfragen
+ Entfernte Kamera anfragenView your callee's camera like a regular video call
- 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.
Copy
-
+ KopierenCopy link location
-
+ Link kopieren
@@ -1679,7 +1677,7 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.
Forward
-
+ Weiterleiten
@@ -1714,7 +1712,7 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.
Copy link to event
-
+ Link zu Event kopieren
@@ -1871,7 +1869,7 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.
Select an avatar
- Wähle einen Avatar
+ Avatar wählen
@@ -1993,13 +1991,12 @@ Betrifft nur Nachrichten in verschlüsselten Chats.
When the window loses focus, the timeline will
be blurred.
- Verliert das Fenster den Fokus, werden die Nachrichten
-verschwommen angezeigt.
+ Die Zeitliste wird unscharf, wenn das Fenster den Fokus verliert.Privacy screen timeout (in seconds [0 - 3600])
- 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 @@
Calling...
-
+ Vokante…Connecting...
-
+ Konektante…You are screen sharing
-
+ Vi vidigas vian ekranon
@@ -27,12 +27,12 @@
Unmute Mic
-
+ Malsilentigi mikrofononMute Mic
-
+ Silentigi mikrofonon
@@ -40,17 +40,17 @@
Awaiting Confirmation
-
+ Atendante konfirmonWaiting for other side to complete verification.
-
+ Atendante kontrolon venontan de la alia flanko.Cancel
-
+ Nuligi
@@ -66,12 +66,12 @@
Video Call
-
+ VidvokoVoice Call
-
+ Voĉvoko
@@ -84,37 +84,37 @@
Video Call
-
+ VidvokoVoice Call
-
+ VoĉvokoDevices
-
+ AparatojAccept
-
+ AkceptiUnknown microphone: %1
-
+ Nekonata mikrofono: %1Unknown camera: %1
-
+ Nekonata filmilo: %1Decline
-
+ Rifuzi
@@ -127,7 +127,7 @@
Entire screen
-
+ Tuta ekrano
@@ -135,13 +135,13 @@
Failed to invite user: %1
-
+ Malsukcesis inviti uzanton: %1Invited user: %1
-
+ Invitita uzanto: %1
@@ -151,12 +151,12 @@
Confirm join
-
+ Konfirmu aliĝonDo you really want to join %1?
-
+ Ĉu vi certe volas aliĝi al %1?
@@ -168,77 +168,77 @@
Confirm invite
-
+ Konfirmu invitonDo you really want to invite %1 (%2)?
-
+ Ĉu vi certe volas inviti uzanton %1 (%2)?Failed to invite %1 to %2: %3
-
+ Malsukcesis inviti uzanton %1 al %2: %3Confirm kick
-
+ Konfirmu forpelonDo you really want to kick %1 (%2)?
-
+ Ĉu vi certe volas forpeli uzanton %1 (%2)?Kicked user: %1
-
+ Forpelis uzanton: %1Confirm ban
-
+ Konfirmu forbaronDo you really want to ban %1 (%2)?
-
+ Ĉu vi certe volas forbari uzanton %1 (%2)?Failed to ban %1 in %2: %3
-
+ Malsukcesis forbari uzanton %1 en %2: %3Banned user: %1
-
+ Forbaris uzanton: %1Confirm unban
-
+ Konfirmu malforbaronDo you really want to unban %1 (%2)?
-
+ Ĉu vi certe volas malforbari uzanton %1 (%2)?Failed to unban %1 in %2: %3
-
+ Malsukcesis malforbari uzanton %1 en %2: %3Unbanned user: %1
-
+ Malforbaris uzanton: %1Do you really want to start a private chat with %1?
-
+ Ĉu vi certe volas komenci privatan babilon kun %1?
@@ -274,12 +274,12 @@
Please try to login again: %1
-
+ Bonvolu provi resaluti: %1Failed to join room: %1
-
+ Malsukcesis aliĝi al ĉambro: %1
@@ -289,22 +289,22 @@
Failed to remove invite: %1
-
+ Malsukcesis forigi inviton: %1Room creation failed: %1
-
+ Malsukcesis krei ĉambron: %1Failed to leave room: %1
-
+ Malsukcesis eliri el ĉambro: %1Failed to kick %1 from %2: %3
-
+ Malsukcesis forpeli uzanton %1 de %2: %3
@@ -312,7 +312,7 @@
Hide rooms with this tag or from this community
-
+ Kaŝi ĉambrojn kun ĉi tiu etikedo aŭ de ĉi tiu komunumo
@@ -339,12 +339,12 @@
(tag)
-
+ (etikedo) (community)
-
+ (komunumo)
@@ -352,12 +352,12 @@
Decrypt secrets
-
+ Malĉifri sekretojnEnter your recovery key or passphrase to decrypt your secrets:
-
+ Enigu vian rehavan ŝlosilon aŭ pasfrazon por malĉifri viajn sekretojn:
@@ -367,12 +367,12 @@
Decryption failed
-
+ Malsukcesis malĉifradoFailed to decrypt secrets with the provided recovery key or passphrase
-
+ Malsukcesis malĉifri sekretojn per la donitaj rehava ŝlosilo aŭ pasfrazo
@@ -380,22 +380,22 @@
Verification Code
-
+ KontrolkodoPlease verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification!
-
+ 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!They do not match!
-
+ Ili ne akordas!They match!
-
+ Ili akordas!
@@ -403,12 +403,12 @@
Apply
-
+ AplikiCancel
-
+ Nuligi
@@ -418,7 +418,7 @@
Topic
-
+ Temo
@@ -426,7 +426,7 @@
Search
- Trovu
+ Serĉu
@@ -474,22 +474,22 @@
Verification Code
-
+ KontrolkodoPlease verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification!
-
+ 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!They do not match!
-
+ Ili ne akordas!They match!
-
+ Ili akordas!
@@ -497,12 +497,12 @@
This message is not encrypted!
-
+ Ĉi tiu mesaĝo ne estas ĉifrita!Encrypted by a verified device
-
+ Ĉifrita de kontrolita aparato
@@ -512,7 +512,7 @@
Encrypted by an unverified device
-
+ Ĉifrita de nekontrolita aparato
@@ -565,33 +565,33 @@
Verification failed
-
+ Malsukcesis kontroloOther client does not support our verification protocol.
-
+ Alia kliento ne subtenas nian kontrolan protokolon.Key mismatch detected!
-
+ Troviĝis malakordo de ŝlosiloj!Device verification timed out.
-
+ Trafiĝis tempolimo de aparata kontrolo.Other party canceled the verification.
-
+ Aliulo nuligis la kontrolon.Close
-
+ Fermi
@@ -612,7 +612,7 @@
All Files (*)
- Ĉiuj dosieroj (*)
+ Ĉiuj dosieroj (*)
@@ -625,7 +625,7 @@
Remove
-
+ Forigi
@@ -633,12 +633,12 @@
Matrix ID
-
+ Identigilo de Matriksoe.g @joe:matrix.org
-
+ 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.Password
- Pasvorto
+ PasvortoYour password.
-
+ Via pasvorto.
@@ -667,31 +669,31 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.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.Homeserver address
-
+ Adreso de hejmserviloserver.my:8787
-
+ servilo.mia:8787The address that can be used to contact you homeservers client API.
Example: https://server.my:8787API 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:8787LOGINMaybe shouldn't be imperative?
- ENSALUTU
+ SALUTI
@@ -699,7 +701,7 @@ Ekzemplo: https://servisto.mia:8787
You have entered an invalid Matrix ID e.g @joe:matrix.org
-
+ Vi enigis nevalidan identigilon de Matrikso ekz. @tacuo:matrix.org
@@ -729,7 +731,7 @@ Ekzemplo: https://servisto.mia:8787
SSO LOGIN
- SSO ENSALUTU
+ UNUNURA SALUTO
@@ -761,7 +763,7 @@ Ekzemplo: https://servisto.mia:8787
removed
-
+ forigita
@@ -796,32 +798,32 @@ Ekzemplo: https://servisto.mia:8787
%1 placed a voice call.
-
+ %1 metis voĉvokon.%1 placed a video call.
-
+ %1 metis vidvokon.%1 placed a call.
-
+ %1 metis vokon.%1 answered the call.
-
+ %1 respondis la vokon.%1 ended the call.
-
+ %1 finis la vokon.Negotiating call...
-
+ Traktante vokon…
@@ -834,7 +836,7 @@ Ekzemplo: https://servisto.mia:8787
Place a call
-
+ Voki
@@ -844,22 +846,22 @@ Ekzemplo: https://servisto.mia:8787
Write a message...
- Skribu mesaĝon...
+ Skribu mesaĝon…Emoji
-
+ BildosignojSend
- Sendu
+ SendiYou don't have permission to send messages in this room
-
+ Vi ne rajtas sendi mesaĝojn en ĉi tiu ĉambro
@@ -867,22 +869,22 @@ Ekzemplo: https://servisto.mia:8787
Edit
-
+ RedaktiReact
- Reagu
+ ReagiReply
- Respondu
+ RespondiOptions
- Ebloj
+ Elektebloj
@@ -890,57 +892,57 @@ Ekzemplo: https://servisto.mia:8787
Send Verification Request
-
+ Sendi kontrolpetonReceived Verification Request
-
+ Ricevita kontrolpetoTo allow other users to see, which of your devices actually belong to you, you can verify them. This also allows key backup to work automatically. Verify %1 now?
-
+ 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?To ensure that no malicious user can eavesdrop on your encrypted communications you can verify the other party.
-
+ Por certigi, ke neniu malica uzanto subaŭskultas vian ĉifritan komunikadon, vi povas kontroli la kunparolanton.%1 has requested to verify their device %2.
-
+ %1 petis kontrolon de sia aparato %2.%1 using the device %2 has requested to be verified.
-
+ %1 petis kontrolon per la aparato %2.Your device (%1) has requested to be verified.
-
+ Via aparato (%1) petis kontrolon.Cancel
-
+ NuligiDeny
-
+ RifuziStart verification
-
+ Komenci kontrolonAccept
-
+ Akcepti
@@ -950,41 +952,41 @@ Ekzemplo: https://servisto.mia:8787
%1 sent an encrypted message
-
+ %1 sendis ĉifritan mesaĝon* %1 %2Format an emote message in a notification, %1 is the sender, %2 the message
-
+ * %1 %2%1 replied: %2Format a reply in a notification. %1 is the sender, %2 the message
-
+ %1 respondis: %2%1: %2Format a normal message in a notification. %1 is the sender, %2 the message
- %1: %2
+ %1: %2%1 replied with an encrypted message
-
+ %1 respondis per ĉifrita mesaĝo%1 replied to a message
-
+ %1 respondis al mesaĝo%1 sent a message
-
+ %1 sendis mesaĝon
@@ -992,7 +994,7 @@ Ekzemplo: https://servisto.mia:8787
Place a call to %1?
-
+ Ĉu voki al %1?
@@ -1002,22 +1004,22 @@ Ekzemplo: https://servisto.mia:8787
Voice
-
+ VoĉeVideo
-
+ VideScreen
-
+ EkraneCancel
-
+ Nuligi
@@ -1025,7 +1027,7 @@ Ekzemplo: https://servisto.mia:8787
unimplemented event:
-
+ neprogramita okazo:
@@ -1038,12 +1040,12 @@ Ekzemplo: https://servisto.mia:8787
profile
-
+ profiloprofile name
-
+ nomo de profilo
@@ -1051,13 +1053,13 @@ Ekzemplo: https://servisto.mia:8787
Username
- Uzantnomo
+ UzantonomoThe username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.
-
+ 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
Please choose a secure password. The exact requirements for password strength may depend on your server.
-
+ Bonvolu elekti sekuran pasvorton. Precizaj postuloj por ĝia fortikeco povus dependi de via servilo.
@@ -1077,42 +1079,42 @@ Ekzemplo: https://servisto.mia:8787
Homeserver
-
+ HejmserviloA server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.
-
+ Servilo, kiu permesas registriĝon. Ĉar Matrikso estas federa, vi bezonas unue trovi servilon, kie vi povus registriĝi, aŭ gastigi vian propran.REGISTER
- REGISTRU
+ REGISTRIĜINo supported registration flows!
-
+ Neniuj subtenataj manieroj de registriĝo!One or more fields have invalid inputs. Please correct those issues and try again.
-
+ Unu aŭ pliaj kampoj havas nevalidajn enigojn. Bonvolu korekti la problemojn kaj reprovi.Password is not long enough (min 8 chars)
-
+ Pasvorto nesufiĉe longas (almenaŭ 8 signoj)Passwords don't match
-
+ Pasvortoj ne akordasInvalid server name
-
+ Nevalida nomo de servilo
@@ -1120,12 +1122,12 @@ Ekzemplo: https://servisto.mia:8787
Close
-
+ FermiCancel edit
-
+ Nuligi redakton
@@ -1141,12 +1143,12 @@ Ekzemplo: https://servisto.mia:8787
Leave room
- Eliru ĉambro
+ Eliri el ĉambroTag room as:
-
+ Etikedi ĉambron:
@@ -1158,25 +1160,25 @@ Ekzemplo: https://servisto.mia:8787
Low PriorityStandard matrix tag for low priority rooms
-
+ Malalta prioritatoServer NoticeStandard matrix tag for server notices
-
+ Servila avizoAdds or removes the specified tag.WhatsThis hint for tag menu actions
-
+ Aldonas aŭ forigas la donitan etikedon.New tag...Add a new tag to the room
- Nova etikedo...
+ Nova etikedo…
@@ -1193,12 +1195,12 @@ Ekzemplo: https://servisto.mia:8787
Accept
-
+ AkceptiDecline
-
+ Rifuzi
@@ -1206,73 +1208,73 @@ Ekzemplo: https://servisto.mia:8787
Room Settings
-
+ Agordoj de ĉambro%1 member(s)
-
+ %1 ĉambrano(j)SETTINGS
-
+ AGORDOJNotifications
-
+ SciigojMuted
-
+ NeniujMentions only
-
+ Nur menciojAll messages
-
+ Ĉiuj mesaĝojAnyone and guests
-
+ Ĉiu ajn, inkluzive gastojnAnyone
-
+ Ĉiu ajnInvited users
-
+ InvititojEncryption
-
+ ĈifradoEnd-to-End Encryption
-
+ Tutvoja ĉifradoEncryption is currently experimental and things might break unexpectedly. <br>
Please take note that it can't be disabled afterwards.
-
+ Ĉifrado nun estas eksperimenta kaj povus rompiĝi neatendite.<br>Bonvole sciu, ke ne eblas ĝin malŝalti poste.Respond to key requests
-
+ Respondi al petoj de ŝlosiloj
@@ -1284,32 +1286,32 @@ Ekzemplo: https://servisto.mia:8787
INFO
-
+ INFORMOJInternal ID
-
+ Interna identigiloRoom Version
-
+ Versio de ĉambroOK
- Bone
+ BoneFailed to enable encryption: %1
-
+ Malsukcesis ŝalti ĉifradon: %1Select an avatar
-
+ Elektu bildon de ĉambro
@@ -1319,18 +1321,18 @@ Ekzemplo: https://servisto.mia:8787
The selected file is not an image
-
+ La elektita dosiero ne estas bildoError while reading file: %1
-
+ Eraris legado de dosiero: %1Failed to upload image: %s
-
+ Malsukcesis alŝuti bildon: %s
@@ -1338,17 +1340,17 @@ Ekzemplo: https://servisto.mia:8787
Share desktop with %1?
-
+ Ĉu montri la labortablon al %1?Window:
-
+ Fenestro:Frame rate:
-
+ Filmerrapido:
@@ -1369,7 +1371,7 @@ Ekzemplo: https://servisto.mia:8787
Hide mouse cursor
-
+ Kaŝi musmontrilon
@@ -1384,7 +1386,7 @@ Ekzemplo: https://servisto.mia:8787
Cancel
-
+ Nuligi
@@ -1392,22 +1394,22 @@ Ekzemplo: https://servisto.mia:8787
User settings
- Uzanta agordoj
+ Agordoj de uzantoCreate new room
- Faru novan ĉambron
+ Fari novan ĉambronJoin a room
- Aliĝu ĉambron
+ Aliĝi ĉambronStart a new chat
- Komencu novan babilon
+ Komenci novan babilon
@@ -1437,7 +1439,7 @@ Ekzemplo: https://servisto.mia:8787
ReadCould this simply be "lega"?
- Estas lega
+ Estas legita
@@ -1474,22 +1476,22 @@ Ekzemplo: https://servisto.mia:8787
Save image
-
+ Konservi bildonSave video
-
+ Konservi filmonSave audio
-
+ Konservi sononSave file
-
+ Konservi dosieron
@@ -1503,42 +1505,42 @@ Ekzemplo: https://servisto.mia:8787
%1 opened the room to the public.
-
+ %1 malfermis la ĉambron al publiko.%1 made this room require and invitation to join.
-
+ %1 ekpostulis inviton por aliĝoj al la ĉamrbo.%1 made the room open to guests.
-
+ %1 malfermis la ĉambron al gastoj.%1 has closed the room to guest access.
-
+ %1 fermis la ĉambron al gastoj.%1 made the room history world readable. Events may be now read by non-joined people.
-
+ %1 legebligis historion de la ĉambro al ĉiu ajn. Okazoj nun legeblos al nealiĝintoj.%1 set the room history visible to members from this point on.
-
+ %1 videbligis historion de la ĉambro al ĉiuj ĉambranoj ekde nun.%1 set the room history visible to members since they were invited.
-
+ %1 videbligis historion de la ĉambro al ĉambranoj ekde ties invito.%1 set the room history visible to members since they joined the room.
-
+ %1 videbligis historion de la ĉambro al ĉambranoj ekde ties aliĝo.
@@ -1549,13 +1551,13 @@ Ekzemplo: https://servisto.mia:8787
%1 was invited.%1 estis invitata.
-
+ %1 estis invitita.%1 changed their avatar.%1 ŝanĝis sian avataron.
-
+ %1 ŝanĝis sian profilbildon.
@@ -1580,7 +1582,7 @@ Ekzemplo: https://servisto.mia:8787
%1 left the room.
- %1 eliris la ĉambro.
+ %1 eliris el la ĉambro.
@@ -1626,7 +1628,7 @@ Ekzemplo: https://servisto.mia:8787
%1 left after having already left!This is a leave event after the user already left and shouldn't happen apart from state resets
- %1 eliris post ili jam eliris!
+ %1 eliris jam elirinte!
@@ -1644,7 +1646,7 @@ Ekzemplo: https://servisto.mia:8787
Edited
-
+ Redaktita
@@ -1652,72 +1654,72 @@ Ekzemplo: https://servisto.mia:8787
Copy
-
+ KopiiCopy link location
-
+ Kopii celon de ligiloReact
- Reagu
+ ReagiReply
- Respondu
+ RespondiEdit
-
+ RedaktiRead receipts
-
+ KvitancojForward
-
+ PlusendiMark as read
-
+ Marki legitaView raw message
-
+ Vidi krudan mesaĝonView decrypted raw message
-
+ Vidi malĉifritan krudan mesaĝonRemove message
-
+ Forigi mesaĝonSave as
-
+ Konservi kielOpen in external program
-
+ Malfermi per ekstera programoCopy link to event
-
+ Kopii ligilon al okazo
@@ -1764,12 +1766,12 @@ Ekzemplo: https://servisto.mia:8787
Leave room
- Eliru ĉambro
+ Eliri el ĉambroSettings
- Agordoj
+ Agordoj
@@ -1777,7 +1779,7 @@ Ekzemplo: https://servisto.mia:8787
Show
- Montru
+ Montri
@@ -1790,7 +1792,7 @@ Ekzemplo: https://servisto.mia:8787
Logout
- Elsalutu
+ Adiaŭi
@@ -1874,7 +1876,7 @@ Ekzemplo: https://servisto.mia:8787
Select an avatar
-
+ Elektu profilbildon
@@ -1884,12 +1886,12 @@ Ekzemplo: https://servisto.mia:8787
The selected file is not an image
-
+ La elektita dosiero ne estas bildoError while reading file: %1
-
+ Eraris legado de dosiero: %1
@@ -1936,7 +1938,7 @@ Ekzemplo: https://servisto.mia:8787
CALLS
-
+ VOKOJ
@@ -1946,142 +1948,159 @@ Ekzemplo: https://servisto.mia:8787
REQUEST
-
+ PETIDOWNLOAD
-
+ ELŜUTIKeep the application running in the background after closing the client window.
-
+ Daŭrigi la aplikaĵon fone post fermo de la klienta fenestro.Start the application in the background without showing the client window.
-
+ Ekigi la aplikaĵon fone sen montro de la klienta fenestro.Change the appearance of user avatars in chats.
OFF - square, ON - Circle.
-
+ Ŝanĝas la aspekton de profilbildoj de uzantoj en babilujo.
+NE – kvadrataj, JES – rondaj.Show a column containing groups and tags next to the room list.
-
+ Montras kolumnon kun grupoj kaj etikedoj apud la listo de ĉambroj.Decrypt messages in sidebar
-
+ Malĉifri mesaĝojn en flanka bretoDecrypt the messages shown in the sidebar.
Only affects messages in encrypted chats.
-
+ Malĉifras mesaĝojn montratajn en la flanka breto.
+Influas nur sur mesaĝoj en ĉifritaj babiloj.Privacy Screen
-
+ Privateca ŝirmiloWhen the window loses focus, the timeline will
be blurred.
-
+ Kiam la fenestro ne estos fokusata, la historio
+malklariĝos.Privacy screen timeout (in seconds [0 - 3600])
-
+ Atendo ĝis privateca ŝirmilo (0–3600 sekundoj)Set timeout (in seconds) for how long after window loses
focus before the screen will be blurred.
Set to 0 to blur immediately after focus loss. Max value of 1 hour (3600 seconds)
-
+ 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).Show buttons in timeline
-
+ Montri butonojn en historioShow buttons to quickly reply, react or access additional options next to each message.
-
+ Montras butonojn apud ĉiu mesaĝo, por rapide respondi, reagi,
+aŭ meti aliajn elekteblojn.Limit width of timeline
-
+ Limigi larĝecon de historioSet the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised
-
+ 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.Typing notifications
-
+ Sciigoj pri tajpadoShow who is typing in a room.
This will also enable or disable sending typing notifications to others.
-
+ Montri, kiu tajpas en ĉambro.
+Ĉi tio ankaŭ ŝaltos sciigadon pri via tajpado al aliaj.Sort rooms by unreads
-
+ Ordigi ĉambrojn laŭ nelegitecoDisplay rooms with new messages first.
If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don't seem to consider them as important as the other rooms.
-
+ 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.Read receipts
-
+ KvitancojShow if your message was read.
Status is displayed next to timestamps.
-
+ Montras, ĉu via mesaĝo estis legita.
+Stato estas montrita apud tempindikoj.Send messages as Markdown
-
+ Sendi mesaĝojn MarkdaŭneAllow using markdown in messages.
When disabled, all messages are sent as a plain text.
-
+ Permesas uzon de Markdaŭno en mesaĝoj.
+Kun ĉi tio malŝaltita, ĉiuj mesaĝoj sendiĝas en plata teksto.Desktop notifications
-
+ Labortablaj sciigojNotify about received message when the client is not currently focused.
-
+ 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
All Files (*)
- Ĉiuj dosieroj (*)
+ Ĉiuj dosieroj (*)
@@ -2381,7 +2400,7 @@ This usually causes the application icon in the task bar to animate in some fash
Welcome to nheko! The desktop client for the Matrix protocol.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
LOGIN
- ENSALUTU
+ SALUTI
@@ -2412,7 +2431,7 @@ This usually causes the application icon in the task bar to animate in some fash
Create room
- Faru ĉambron
+ Fari ĉambron
@@ -2491,7 +2510,7 @@ This usually causes the application icon in the task bar to animate in some fash
Join
- Aliĝu
+ Aliĝi
@@ -2527,7 +2546,7 @@ This usually causes the application icon in the task bar to animate in some fash
Logout. Are you sure?
- Elsalutu. Ĉu vi certas?
+ Adiaŭi. Ĉu vi certas?
@@ -2629,22 +2648,22 @@ Media size: %2
You sent a video
- Vi sendis videon
+ Vi sendis filmon%1 sent a video
- %1 sendis videon
+ %1 sendis filmonYou sent a sticker
- Vi sendis pegatinan
+ Vi sendis glumarkon%1 sent a sticker
- %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 @@
Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.
-
+ La 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 @@
Room %1 created.
-
+ Sala %1 creada.Confirm invite
-
+ Confirmar invitación
@@ -182,7 +182,7 @@
Confirm kick
-
+ Confirmar expulsión
@@ -192,7 +192,7 @@
Kicked user: %1
-
+ 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 @@
Encrypted by a verified device
-
+ Krüptitud verifitseeritud seadmesEncrypted by an unverified device, but you have trusted that user so far.
-
+ Krüptitud verifitseerimata seadmes, aga sa oled selle kasutajat seni usaldanud.Encrypted by an unverified device
-
+ Krüptitud verifitseerimata seadmes
@@ -598,7 +598,7 @@
Forward Message
-
+ Suuna sõnum edasi
@@ -858,7 +858,7 @@ Näiteks: https://server.minu:8787
You don't have permission to send messages in this room
-
+ Sul puuduvad selles jututoas õigused sõnumite saatmiseks
@@ -1607,12 +1607,12 @@ testimiseks seni, kuni terviklik seadmete verifitseerimine on implementeeritud.<
%1 has changed their avatar and changed their display name to %2.
-
+ %1 muutis oma tunnuspilti ja seadistas uueks kuvatavaks nimeks %2.%1 has changed their display name to %2.
-
+ %1 seadistas uueks kuvatavaks nimeks %2.
@@ -1649,12 +1649,12 @@ testimiseks seni, kuni terviklik seadmete verifitseerimine on implementeeritud.<
Copy
-
+ KopeeriCopy link location
-
+ Kopeeri lingi asukoht
@@ -1679,7 +1679,7 @@ testimiseks seni, kuni terviklik seadmete verifitseerimine on implementeeritud.<
Forward
-
+ Edasta
@@ -1714,7 +1714,7 @@ testimiseks seni, kuni terviklik seadmete verifitseerimine on implementeeritud.<
Copy link to event
-
+ 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 @@
You are screen sharing
-
+ Olet jakamassa näyttöä
@@ -58,7 +58,7 @@
You joined this room.
-
+ Sinä liityit tähän huoneeseen.
@@ -66,17 +66,17 @@
Video Call
-
+ VideopuheluVoice Call
-
+ ÄänipuheluNo microphone found.
-
+ Mikrofonia ei löydy.
@@ -84,12 +84,12 @@
Video Call
-
+ VideopuheluVoice Call
-
+ Äänipuhelu
@@ -104,12 +104,12 @@
Unknown microphone: %1
-
+ Tuntematon mikrofoni: %1Unknown camera: %1
-
+ Tuntematon kamera: %1
@@ -119,7 +119,7 @@
No microphone found.
-
+ Mikrofonia ei löydy.
@@ -141,7 +141,7 @@
Invited user: %1
-
+ Kutsuttu käyttäjä: %1
@@ -151,12 +151,12 @@
Confirm join
-
+ Vahvista liittyminenDo you really want to join %1?
-
+ Haluatko todella liittyä huoneeseen %1?
@@ -278,12 +278,12 @@
Failed to join room: %1
-
+ Huoneeseen liittyminen epäonnistui: %1You joined the room
-
+ Sinä liityit huoneeseen
@@ -425,22 +425,22 @@
Search
-
+ HaePeople
-
+ IhmisetNature
-
+ LuontoFood
-
+ Ruoka
@@ -450,7 +450,7 @@
Travel
-
+ Matkustaminen
@@ -496,7 +496,7 @@
This message is not encrypted!
-
+ Tätä viestiä ei ole salattu!
@@ -598,7 +598,7 @@
Forward Message
-
+ Välitä viesti
@@ -655,7 +655,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
Your password.
-
+ Salasanasi.
@@ -670,7 +670,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
Homeserver address
-
+ Kotipalvelimen osoite
@@ -761,12 +761,12 @@ Example: https://server.my:8787
Encryption enabled
-
+ Salaus on käytössäroom name changed to: %1
-
+ huoneen nimi muutettu: %1
@@ -862,22 +862,22 @@ Example: https://server.my:8787
Edit
-
+ MuokkaaReact
-
+ ReagoiReply
-
+ VastaaOptions
-
+ Asetukset
@@ -945,7 +945,7 @@ Example: https://server.my:8787
%1 sent an encrypted message
- %1 lähetti salatun viestin
+ %1 lähetti salatun viestin
@@ -957,29 +957,29 @@ Example: https://server.my:8787
%1 replied: %2Format a reply in a notification. %1 is the sender, %2 the message
-
+ %1 vastasi: %2%1: %2Format a normal message in a notification. %1 is the sender, %2 the message
- %1: %2
+ %1: %2%1 replied with an encrypted message
-
+ %1 vastasi salatulla viestillä%1 replied to a message
-
+ %1 vastasi viestiin%1 sent a message
-
+ %1 lähetti viestin
@@ -992,7 +992,7 @@ Example: https://server.my:8787
No microphone found.
-
+ Mikrofonia ei löydy.
@@ -1052,7 +1052,7 @@ Example: https://server.my:8787
The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.
-
+ 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
Homeserver
-
+ Kotipalvelin
@@ -1120,7 +1120,7 @@ Example: https://server.my:8787
Cancel edit
-
+ Peruuta muokkaus
@@ -1251,12 +1251,12 @@ Example: https://server.my:8787
Encryption
-
+ SalausEnd-to-End Encryption
- Päästä-päähän-salaus
+ Päästä-päähän-salaus
@@ -1289,43 +1289,43 @@ Example: https://server.my:8787
Room Version
-
+ Huoneen versioOK
- OK
+ OKFailed to enable encryption: %1
- Salauksen aktivointi epäonnistui: %1
+ Salauksen aktivointi epäonnistui: %1Select an avatar
- Valitse profiilikuva
+ Valitse profiilikuvaAll Files (*)
- Kaikki Tiedostot (*)
+ Kaikki Tiedostot (*)The selected file is not an image
- Valittu tiedosto ei ole kuva
+ Valittu tiedosto ei ole kuvaError while reading file: %1
- Virhe lukiessa tiedostoa: %1
+ Virhe lukiessa tiedostoa: %1Failed to upload image: %s
- Kuvan lähetys epäonnistui: %s
+ Kuvan lähetys epäonnistui: %s
@@ -1364,7 +1364,7 @@ Example: https://server.my:8787
Hide mouse cursor
-
+ Piilota hiiren kursori
@@ -1379,7 +1379,7 @@ Example: https://server.my:8787
Cancel
- Peruuta
+ Peruuta
@@ -1472,17 +1472,17 @@ Example: https://server.my:8787
Save video
-
+ Tallenna videoSave audio
-
+ Tallenna äänitiedostoSave file
-
+ Tallenna tiedosto
@@ -1556,7 +1556,7 @@ Example: https://server.my:8787
%1 joined.
-
+ %1 liittyi.
@@ -1571,7 +1571,7 @@ Example: https://server.my:8787
%1 left the room.
-
+ %1 poistui huoneesta.
@@ -1596,7 +1596,7 @@ Example: https://server.my:8787
You joined this room.
-
+ Sinä liityit tähän huoneeseen.
@@ -1622,7 +1622,7 @@ Example: https://server.my:8787
Reason: %1
-
+ Perustelu: %1
@@ -1635,7 +1635,7 @@ Example: https://server.my:8787
Edited
-
+ Muokattu
@@ -1643,27 +1643,27 @@ Example: https://server.my:8787
Copy
-
+ KopioiCopy link location
-
+ Kopioi linkin sijaintiReact
-
+ ReagoiReply
-
+ VastaaEdit
-
+ Muokkaa
@@ -1673,12 +1673,12 @@ Example: https://server.my:8787
Forward
-
+ Lähetä viesti eteenpäinMark as read
-
+ Merkitse luetuksi
@@ -1693,12 +1693,12 @@ Example: https://server.my:8787
Remove message
-
+ Poista viestiSave as
-
+ Tallenna nimellä
@@ -2148,7 +2148,7 @@ This usually causes the application icon in the task bar to animate in some fash
Ringtone
-
+ Soittoääni
@@ -2158,12 +2158,12 @@ This usually causes the application icon in the task bar to animate in some fash
Microphone
-
+ MikrofoniCamera
-
+ 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 @@
Calling...
-
+ Sto chiamandoConnecting...
-
+ Connessione in corso...You are screen sharing
-
+ Stai condividendo il tuo schermoHide/Show Picture-in-Picture
-
+ Nascondi/Mostra Picture-in-PictureUnmute Mic
-
+ Attiva MicrofonoMute Mic
-
+ Silenzia Microfono
@@ -40,12 +40,12 @@
Awaiting Confirmation
-
+ In attesa di confermaWaiting for other side to complete verification.
-
+ In attesa della conferma dall'altra parte per la verifica.
@@ -66,17 +66,17 @@
Video Call
-
+ Chiamata videoVoice Call
-
+ Chiamata vocaleNo microphone found.
-
+ Nessun microfono trovato.
@@ -84,22 +84,22 @@
Video Call
-
+ Chiamata VideoVoice Call
-
+ Chiamata audioDevices
- Dispositivi
+ DispositiviAccept
- Accetta
+ Accetta
@@ -114,12 +114,12 @@
Decline
- Rifiuta
+ RifiutaNo microphone found.
-
+ Nessun microfono trovato.
@@ -151,12 +151,12 @@
Confirm join
-
+ Conferma collegamentoDo you really want to join %1?
-
+ Vuoi davvero collegarti a %1?
@@ -167,12 +167,12 @@
Confirm invite
-
+ Conferma InvitoDo you really want to invite %1 (%2)?
-
+ Vuoi davvero inviare %1 (%2)?
@@ -182,12 +182,12 @@
Confirm kick
-
+ Conferma l'allontanamentoDo you really want to kick %1 (%2)?
-
+ Vuoi davvero allontanare %1 (%2)?
@@ -197,12 +197,12 @@
Confirm ban
-
+ Conferma banDo you really want to ban %1 (%2)?
-
+ Vuoi veramente bannare %1 (%2)?
@@ -217,12 +217,12 @@
Confirm unban
-
+ Conferma reintegroDo you really want to unban %1 (%2)?
-
+ Vuoi veramente reintegrare %1 (%2)?
@@ -303,7 +303,7 @@
Failed to kick %1 from %2: %3
-
+ Fallita l'espulsione di %1 da %2: %3
@@ -311,7 +311,7 @@
Hide rooms with this tag or from this community
-
+ Nascondi stanze con questo tag o di questa comunità
@@ -332,7 +332,7 @@
Server NoticesTag translation for m.server_notice
-
+ Notifiche del server
@@ -351,27 +351,27 @@
Decrypt secrets
-
+ Decifra i segretiEnter your recovery key or passphrase to decrypt your secrets:
-
+ Inserisci la chiave di recupero o la parola chiave per decriptare i tuoi segreti:Enter your recovery key or passphrase called %1 to decrypt your secrets:
-
+ Inserisci la tua chiave di recupero o la parola chiave chiamata %1 per decifrare i tuoi segreti:Decryption failed
-
+ Decrittazione fallitaFailed to decrypt secrets with the provided recovery key or passphrase
-
+ Fallita la decrittazione usando la chiave di recupero o la parola chiave fornita
@@ -379,22 +379,22 @@
Verification Code
-
+ Codice di verificaPlease verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification!
-
+ Verificare i seguenti numeri. Dovresti vedere gli stessi numeri da entrambi i lati. Se differiscono, premi 'Sono diversi!' per annullare la verifica!They do not match!
-
+ Non corrispondono!They match!
-
+ Corrispondono!
@@ -425,7 +425,7 @@
Search
-
+ Cerca
@@ -435,7 +435,7 @@
Nature
-
+ Natura
@@ -445,27 +445,27 @@
Activity
- Attività
+ AttivitàTravel
-
+ ViaggiObjects
- Oggetti
+ OggettiSymbols
- Simboli
+ SimboliFlags
- Bandiere
+ Bandiere
@@ -473,7 +473,7 @@
Verification Code
-
+ Codice di Verifica
@@ -483,12 +483,12 @@
They do not match!
-
+ Non corrispondono!They match!
-
+ Corrispondono!
@@ -496,22 +496,22 @@
This message is not encrypted!
- Questo messaggio è in chiaro!
+ Questo messaggio non è crittato!Encrypted by a verified device
-
+ Criptato da un dispositivo verificatoEncrypted by an unverified device, but you have trusted that user so far.
-
+ Criptato da un dispositivo non verificato ma hai già verificato questo utente.Encrypted by an unverified device
-
+ Criptato da un dispositivo non verificato
@@ -520,13 +520,13 @@
-- Encrypted Event (No keys found for decryption) --Placeholder, when the message was not decrypted yet or can't be decrypted.
- -- Evento Criptato (Chiavi per la decriptazione non trovate) --
+ -- Evento Criptato (Nessuna chiave privata per la decriptazione) ---- Encrypted Event (Key not valid for this index) --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
unimplemented event:
- event non implementato:
+ evento non implementato:
@@ -1157,7 +1157,7 @@ Esempio: https://server.mio:8787
Low PriorityStandard 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
New TagTag name prompt title
-
+ Nome del tag
@@ -1520,12 +1520,12 @@ Esempio: https://server.mio:8787
%1 made the room history world readable. Events may be now read by non-joined people.
- %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 set the room history visible to members from this point on.
- %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
Open Fallback in Browser
- 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
+
+
+ Calling...
+ Ligando...
+
+
+
+
+ Connecting...
+ Conectando...
+
+
+
+ You are screen sharing
+ Você está compartilhando sua tela
+
+
+
+ Hide/Show Picture-in-Picture
+ Esconder/Mostrar Picture-in-Picture
+
+
+
+ Unmute Mic
+
+
+
+
+ Mute Mic
+
+
+
+
+ AwaitingVerificationConfirmation
+
+
+ Awaiting Confirmation
+
+
+
+
+ Waiting for other side to complete verification.
+ Esperando o outro lado completar a verificação.
+
+
+
+ Cancel
+ Cancelar
+
+
+
+ Cache
+
+
+ You joined this room.
+ Você entrou nessa sala.
+
+
+
+ CallInvite
+
+
+ Video Call
+ Chamada de Vídeo
+
+
+
+ Voice Call
+ Chamada de Voz
+
+
+
+ No microphone found.
+ Nenhum microfone encontrado.
+
+
+
+ CallInviteBar
+
+
+ Video Call
+ Chamada de Vídeo
+
+
+
+ Voice Call
+ Chamada de Voz
+
+
+
+ Devices
+ Dispositivos
+
+
+
+ Accept
+ Aceitar
+
+
+
+ Unknown microphone: %1
+ Microfone desconhecido: %1
+
+
+
+ Unknown camera: %1
+ Câmera desconhecida: %1
+
+
+
+ Decline
+ Rejeitar
+
+
+
+ No microphone found.
+ Nenhum microfone encontrado.
+
+
+
+ CallManager
+
+
+ Entire screen
+ Tela Inteira
+
+
+
+ ChatPage
+
+
+ Failed to invite user: %1
+ Falha ao convidar usuário: %1
+
+
+
+
+ Invited user: %1
+ Usuário convidado: %1
+
+
+
+ Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.
+
+
+
+
+ Confirm join
+ Confirmar entrada
+
+
+
+ Do you really want to join %1?
+
+
+
+
+ Room %1 created.
+ Sala %1 criada.
+
+
+
+
+ Confirm invite
+ Confirmar convite
+
+
+
+ Do you really want to invite %1 (%2)?
+
+
+
+
+ Failed to invite %1 to %2: %3
+ Falha ao convidar %1 para %2: %3
+
+
+
+ Confirm kick
+ Confirmar expulsão
+
+
+
+ Do you really want to kick %1 (%2)?
+
+
+
+
+ Kicked user: %1
+ Usuário expulso: %1
+
+
+
+ Confirm ban
+ Confirmar banimento
+
+
+
+ Do you really want to ban %1 (%2)?
+
+
+
+
+ Failed to ban %1 in %2: %3
+ Falha ao banir %1 em %2: %3
+
+
+
+ Banned user: %1
+ Usuário banido: %1
+
+
+
+ Confirm unban
+ Confirmar desbanimento
+
+
+
+ Do you really want to unban %1 (%2)?
+
+
+
+
+ Failed to unban %1 in %2: %3
+ Falha ao desbanir %1 em %2: %3
+
+
+
+ Unbanned user: %1
+ Usuário desbanido: %1
+
+
+
+ Do you really want to start a private chat with %1?
+
+
+
+
+ Cache migration failed!
+ Migração do cache falhou!
+
+
+
+ Incompatible cache version
+
+
+
+
+ The cache on your disk is newer than this version of Nheko supports. Please update or clear your cache.
+
+
+
+
+ Failed to restore OLM account. Please login again.
+ Falha ao restaurar conta OLM. Por favor faça login novamente.
+
+
+
+ Failed to restore save data. Please login again.
+ Falha ao restaurar dados salvos. Por favor faça login novamente.
+
+
+
+ Failed to setup encryption keys. Server response: %1 %2. Please try again later.
+
+
+
+
+
+ Please try to login again: %1
+
+
+
+
+ Failed to join room: %1
+
+
+
+
+ You joined the room
+
+
+
+
+ Failed to remove invite: %1
+
+
+
+
+ Room creation failed: %1
+
+
+
+
+ Failed to leave room: %1
+
+
+
+
+ Failed to kick %1 from %2: %3
+
+
+
+
+ CommunitiesListItem
+
+
+ Hide rooms with this tag or from this community
+
+
+
+
+ All rooms
+
+
+
+
+ Favourite rooms
+
+
+
+
+ Low priority rooms
+
+
+
+
+ Server Notices
+ Tag translation for m.server_notice
+
+
+
+
+
+ (tag)
+
+
+
+
+ (community)
+
+
+
+
+ CrossSigningSecrets
+
+
+ Decrypt secrets
+
+
+
+
+ Enter your recovery key or passphrase to decrypt your secrets:
+
+
+
+
+ Enter your recovery key or passphrase called %1 to decrypt your secrets:
+
+
+
+
+ Decryption failed
+
+
+
+
+ Failed to decrypt secrets with the provided recovery key or passphrase
+
+
+
+
+ DigitVerification
+
+
+ Verification Code
+
+
+
+
+ Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification!
+
+
+
+
+ They do not match!
+
+
+
+
+ They match!
+
+
+
+
+ EditModal
+
+
+ Apply
+
+
+
+
+ Cancel
+
+
+
+
+ Name
+
+
+
+
+ Topic
+
+
+
+
+ EmojiPicker
+
+
+ Search
+
+
+
+
+ People
+
+
+
+
+ Nature
+
+
+
+
+ Food
+
+
+
+
+ Activity
+
+
+
+
+ Travel
+
+
+
+
+ Objects
+
+
+
+
+ Symbols
+
+
+
+
+ Flags
+
+
+
+
+ EmojiVerification
+
+
+ Verification Code
+
+
+
+
+ Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification!
+
+
+
+
+ They do not match!
+
+
+
+
+ They match!
+
+
+
+
+ EncryptionIndicator
+
+
+ This message is not encrypted!
+
+
+
+
+ Encrypted by a verified device
+
+
+
+
+ Encrypted by an unverified device, but you have trusted that user so far.
+
+
+
+
+ Encrypted by an unverified device
+
+
+
+
+ EventStore
+
+
+ -- Encrypted Event (No keys found for decryption) --
+ Placeholder, when the message was not decrypted yet or can't be decrypted.
+
+
+
+
+ -- Encrypted Event (Key not valid for this index) --
+ Placeholder, when the message can't be decrypted with this key since it is not valid for this index
+
+
+
+
+
+ -- Decryption Error (failed to retrieve megolm keys from db) --
+ Placeholder, when the message can't be decrypted, because the DB access failed.
+
+
+
+
+
+ -- Decryption Error (%1) --
+ Placeholder, when the message can't be decrypted. In this case, the Olm decrytion returned an error, which is passed as %1.
+
+
+
+
+ -- Encrypted Event (Unknown event type) --
+ Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet.
+
+
+
+
+ -- Replay attack! This message index was reused! --
+
+
+
+
+ -- Message by unverified device! --
+
+
+
+
+ Failed
+
+
+ Verification failed
+
+
+
+
+ Other client does not support our verification protocol.
+
+
+
+
+ Key mismatch detected!
+
+
+
+
+
+ Device verification timed out.
+
+
+
+
+ Other party canceled the verification.
+
+
+
+
+ Close
+
+
+
+
+ ForwardCompleter
+
+
+ Forward Message
+
+
+
+
+ InputBar
+
+
+ Select a file
+
+
+
+
+ All Files (*)
+
+
+
+
+ Failed to upload media. Please try again.
+
+
+
+
+ InviteeItem
+
+
+ Remove
+
+
+
+
+ LoginPage
+
+
+ Matrix ID
+
+
+
+
+ e.g @joe:matrix.org
+
+
+
+
+ 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'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.
+
+
+
+
+ Password
+
+
+
+
+ Your password.
+
+
+
+
+ Device name
+
+
+
+
+ A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.
+
+
+
+
+ Homeserver address
+
+
+
+
+ server.my:8787
+
+
+
+
+ The address that can be used to contact you homeservers client API.
+Example: https://server.my:8787
+
+
+
+
+ LOGIN
+
+
+
+
+
+
+
+ You have entered an invalid Matrix ID e.g @joe:matrix.org
+
+
+
+
+ Autodiscovery failed. Received malformed response.
+
+
+
+
+ Autodiscovery failed. Unknown error when requesting .well-known.
+
+
+
+
+ The required endpoints were not found. Possibly not a Matrix server.
+
+
+
+
+ Received malformed response. Make sure the homeserver domain is valid.
+
+
+
+
+ An unknown error occured. Make sure the homeserver domain is valid.
+
+
+
+
+ SSO LOGIN
+
+
+
+
+ Empty password
+
+
+
+
+ SSO login failed
+
+
+
+
+ MemberList
+
+
+ Room members
+
+
+
+
+ OK
+
+
+
+
+ MessageDelegate
+
+
+ Encryption enabled
+
+
+
+
+ room name changed to: %1
+
+
+
+
+ removed room name
+
+
+
+
+ topic changed to: %1
+
+
+
+
+ removed topic
+
+
+
+
+ %1 created and configured room: %2
+
+
+
+
+ %1 placed a voice call.
+
+
+
+
+ %1 placed a video call.
+
+
+
+
+ %1 placed a call.
+
+
+
+
+ Negotiating call...
+
+
+
+
+ %1 answered the call.
+
+
+
+
+
+ removed
+
+
+
+
+ %1 ended the call.
+
+
+
+
+ MessageInput
+
+
+ Hang up
+
+
+
+
+ Place a call
+
+
+
+
+ Send a file
+
+
+
+
+ Write a message...
+
+
+
+
+ Emoji
+
+
+
+
+ Send
+
+
+
+
+ You don't have permission to send messages in this room
+
+
+
+
+ MessageView
+
+
+ Edit
+
+
+
+
+ React
+
+
+
+
+ Reply
+
+
+
+
+ Options
+
+
+
+
+ NewVerificationRequest
+
+
+ Send Verification Request
+
+
+
+
+ Received Verification Request
+
+
+
+
+ To allow other users to see, which of your devices actually belong to you, you can verify them. This also allows key backup to work automatically. Verify %1 now?
+
+
+
+
+ To ensure that no malicious user can eavesdrop on your encrypted communications you can verify the other party.
+
+
+
+
+ %1 has requested to verify their device %2.
+
+
+
+
+ %1 using the device %2 has requested to be verified.
+
+
+
+
+ Your device (%1) has requested to be verified.
+
+
+
+
+ Cancel
+
+
+
+
+ Deny
+
+
+
+
+ Start verification
+
+
+
+
+ Accept
+
+
+
+
+ NotificationsManager
+
+
+
+
+ %1 sent an encrypted message
+
+
+
+
+ * %1 %2
+ Format an emote message in a notification, %1 is the sender, %2 the message
+
+
+
+
+ %1 replied: %2
+ Format a reply in a notification. %1 is the sender, %2 the message
+
+
+
+
+ %1: %2
+ Format a normal message in a notification. %1 is the sender, %2 the message
+
+
+
+
+
+ %1 replied with an encrypted message
+
+
+
+
+ %1 replied to a message
+
+
+
+
+ %1 sent a message
+
+
+
+
+ PlaceCall
+
+
+ Place a call to %1?
+
+
+
+
+ No microphone found.
+
+
+
+
+ Voice
+
+
+
+
+ Video
+
+
+
+
+ Screen
+
+
+
+
+ Cancel
+
+
+
+
+ Placeholder
+
+
+ unimplemented event:
+
+
+
+
+ QCoreApplication
+
+
+ Create a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko.
+
+
+
+
+ profile
+
+
+
+
+ profile name
+
+
+
+
+ RegisterPage
+
+
+ Username
+
+
+
+
+
+ The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.
+
+
+
+
+ Password
+
+
+
+
+ Please choose a secure password. The exact requirements for password strength may depend on your server.
+
+
+
+
+ Password confirmation
+
+
+
+
+ Homeserver
+
+
+
+
+ A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.
+
+
+
+
+ REGISTER
+
+
+
+
+ No supported registration flows!
+
+
+
+
+ One or more fields have invalid inputs. Please correct those issues and try again.
+
+
+
+
+ Password is not long enough (min 8 chars)
+
+
+
+
+ Passwords don't match
+
+
+
+
+ Invalid server name
+
+
+
+
+ ReplyPopup
+
+
+ Close
+
+
+
+
+ Cancel edit
+
+
+
+
+ RoomInfo
+
+
+ no version stored
+
+
+
+
+ RoomInfoListItem
+
+
+ Leave room
+
+
+
+
+ Tag room as:
+
+
+
+
+ Favourite
+ Standard matrix tag for favourites
+
+
+
+
+ Low Priority
+ Standard matrix tag for low priority rooms
+
+
+
+
+ Server Notice
+ Standard matrix tag for server notices
+
+
+
+
+ Adds or removes the specified tag.
+ WhatsThis hint for tag menu actions
+
+
+
+
+ New tag...
+ Add a new tag to the room
+
+
+
+
+ New Tag
+ Tag name prompt title
+
+
+
+
+ Tag:
+ Tag name prompt
+
+
+
+
+ Accept
+
+
+
+
+ Decline
+
+
+
+
+ RoomSettings
+
+
+ Room Settings
+
+
+
+
+ %1 member(s)
+
+
+
+
+ SETTINGS
+
+
+
+
+ Notifications
+
+
+
+
+ Muted
+
+
+
+
+ Mentions only
+
+
+
+
+ All messages
+
+
+
+
+ Anyone and guests
+
+
+
+
+ Anyone
+
+
+
+
+ Invited users
+
+
+
+
+ Encryption
+
+
+
+
+ End-to-End Encryption
+
+
+
+
+ Encryption is currently experimental and things might break unexpectedly. <br>
+ Please take note that it can't be disabled afterwards.
+
+
+
+
+ Respond to key requests
+
+
+
+
+ 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.
+
+
+
+
+ INFO
+
+
+
+
+ Internal ID
+
+
+
+
+ Room Version
+
+
+
+
+ OK
+
+
+
+
+ Failed to enable encryption: %1
+
+
+
+
+ Select an avatar
+
+
+
+
+ All Files (*)
+
+
+
+
+ The selected file is not an image
+
+
+
+
+ Error while reading file: %1
+
+
+
+
+
+ Failed to upload image: %s
+
+
+
+
+ ScreenShare
+
+
+ Share desktop with %1?
+
+
+
+
+ Window:
+
+
+
+
+ Frame rate:
+
+
+
+
+ Include your camera picture-in-picture
+
+
+
+
+ Request remote camera
+
+
+
+
+
+ View your callee's camera like a regular video call
+
+
+
+
+ Hide mouse cursor
+
+
+
+
+ Share
+
+
+
+
+ Preview
+
+
+
+
+ Cancel
+
+
+
+
+ SideBarActions
+
+
+ User settings
+
+
+
+
+ Create new room
+
+
+
+
+ Join a room
+
+
+
+
+ Start a new chat
+
+
+
+
+ Room directory
+
+
+
+
+ StatusIndicator
+
+
+ Failed
+
+
+
+
+ Sent
+
+
+
+
+ Received
+
+
+
+
+ Read
+
+
+
+
+ Success
+
+
+ Successful Verification
+
+
+
+
+ Verification successful! Both sides verified their devices!
+
+
+
+
+ Close
+
+
+
+
+ TimelineModel
+
+
+ Message redaction failed: %1
+
+
+
+
+
+ Failed to encrypt event, sending aborted!
+
+
+
+
+ Save image
+
+
+
+
+ Save video
+
+
+
+
+ Save audio
+
+
+
+
+ Save file
+
+
+
+
+ %1 and %2 are typing.
+ 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.)
+
+
+
+
+
+
+
+ %1 opened the room to the public.
+
+
+
+
+ %1 made this room require and invitation to join.
+
+
+
+
+ %1 made the room open to guests.
+
+
+
+
+ %1 has closed the room to guest access.
+
+
+
+
+ %1 made the room history world readable. Events may be now read by non-joined people.
+
+
+
+
+ %1 set the room history visible to members from this point on.
+
+
+
+
+ %1 set the room history visible to members since they were invited.
+
+
+
+
+ %1 set the room history visible to members since they joined the room.
+
+
+
+
+ %1 has changed the room's permissions.
+
+
+
+
+ %1 was invited.
+
+
+
+
+ %1 changed their avatar.
+
+
+
+
+ %1 changed some profile info.
+
+
+
+
+ %1 joined.
+
+
+
+
+ %1 rejected their invite.
+
+
+
+
+ Revoked the invite to %1.
+
+
+
+
+ %1 left the room.
+
+
+
+
+ Kicked %1.
+
+
+
+
+ Unbanned %1.
+
+
+
+
+ %1 was banned.
+
+
+
+
+ %1 redacted their knock.
+
+
+
+
+ You joined this room.
+
+
+
+
+ %1 has changed their avatar and changed their display name to %2.
+
+
+
+
+ %1 has changed their display name to %2.
+
+
+
+
+ Rejected the knock from %1.
+
+
+
+
+ %1 left after having already left!
+ This is a leave event after the user already left and shouldn't happen apart from state resets
+
+
+
+
+ Reason: %1
+
+
+
+
+ %1 knocked.
+
+
+
+
+ TimelineRow
+
+
+ Edited
+
+
+
+
+ TimelineView
+
+
+ Copy
+
+
+
+
+ Copy link location
+
+
+
+
+ React
+
+
+
+
+ Reply
+
+
+
+
+ Edit
+
+
+
+
+ Read receipts
+
+
+
+
+ Forward
+
+
+
+
+ Mark as read
+
+
+
+
+ View raw message
+
+
+
+
+ View decrypted raw message
+
+
+
+
+ Remove message
+
+
+
+
+ Save as
+
+
+
+
+ Open in external program
+
+
+
+
+ Copy link to event
+
+
+
+
+ No room open
+
+
+
+
+ TimelineViewManager
+
+
+ No encrypted private chat found with this user. Create an encrypted private chat with this user and try again.
+
+
+
+
+ TopBar
+
+
+ Back to room list
+
+
+
+
+
+ No room selected
+
+
+
+
+ Room options
+
+
+
+
+ Invite users
+
+
+
+
+ Members
+
+
+
+
+ Leave room
+
+
+
+
+ Settings
+
+
+
+
+ TrayIcon
+
+
+ Show
+
+
+
+
+ Quit
+
+
+
+
+ UserInfoWidget
+
+
+ Logout
+
+
+
+
+ Set custom status message
+
+
+
+
+ Custom status message
+
+
+
+
+ Status:
+
+
+
+
+ User Profile Settings
+
+
+
+
+ Set presence automatically
+
+
+
+
+ Online
+
+
+
+
+ Unavailable
+
+
+
+
+ Offline
+
+
+
+
+ UserProfile
+
+
+ Global User Profile
+
+
+
+
+ Room User Profile
+
+
+
+
+
+ Verify
+
+
+
+
+ Ban the user
+
+
+
+
+ Start a private chat
+
+
+
+
+ Kick the user
+
+
+
+
+ Unverify
+
+
+
+
+ Select an avatar
+
+
+
+
+ All Files (*)
+
+
+
+
+ The selected file is not an image
+
+
+
+
+ Error while reading file: %1
+
+
+
+
+ UserSettings
+
+
+
+ Default
+
+
+
+
+ UserSettingsPage
+
+
+ Minimize to tray
+
+
+
+
+ Start in tray
+
+
+
+
+ Group's sidebar
+
+
+
+
+ Circular Avatars
+
+
+
+
+ profile: %1
+
+
+
+
+ Default
+
+
+
+
+ CALLS
+
+
+
+
+ Cross Signing Keys
+
+
+
+
+ REQUEST
+
+
+
+
+ DOWNLOAD
+
+
+
+
+ Keep the application running in the background after closing the client window.
+
+
+
+
+ Start the application in the background without showing the client window.
+
+
+
+
+ Change the appearance of user avatars in chats.
+OFF - square, ON - Circle.
+
+
+
+
+ Show a column containing groups and tags next to the room list.
+
+
+
+
+ Decrypt messages in sidebar
+
+
+
+
+ Decrypt the messages shown in the sidebar.
+Only affects messages in encrypted chats.
+
+
+
+
+ Privacy Screen
+
+
+
+
+ When the window loses focus, the timeline will
+be blurred.
+
+
+
+
+ Privacy screen timeout (in seconds [0 - 3600])
+
+
+
+
+ Set timeout (in seconds) for how long after window loses
+focus before the screen will be blurred.
+Set to 0 to blur immediately after focus loss. Max value of 1 hour (3600 seconds)
+
+
+
+
+ Show buttons in timeline
+
+
+
+
+ Show buttons to quickly reply, react or access additional options next to each message.
+
+
+
+
+ Limit width of timeline
+
+
+
+
+ Set the max width of messages in the timeline (in pixels). This can help readability on wide screen, when Nheko is maximised
+
+
+
+
+ Typing notifications
+
+
+
+
+ Show who is typing in a room.
+This will also enable or disable sending typing notifications to others.
+
+
+
+
+ Sort rooms by unreads
+
+
+
+
+ Display rooms with new messages first.
+If this is off, the list of rooms will only be sorted by the timestamp of the last message in a room.
+If this is on, rooms which have active notifications (the small circle with a number in it) will be sorted on top. Rooms, that you have muted, will still be sorted by timestamp, since you don't seem to consider them as important as the other rooms.
+
+
+
+
+ Read receipts
+
+
+
+
+ Show if your message was read.
+Status is displayed next to timestamps.
+
+
+
+
+ Send messages as Markdown
+
+
+
+
+ Allow using markdown in messages.
+When disabled, all messages are sent as a plain text.
+
+
+
+
+ Desktop notifications
+
+
+
+
+ Notify about received message when the client is not currently focused.
+
+
+
+
+ Alert on notification
+
+
+
+
+ Show an alert when a message is received.
+This usually causes the application icon in the task bar to animate in some fashion.
+
+
+
+
+ Highlight message on hover
+
+
+
+
+ Change the background color of messages when you hover over them.
+
+
+
+
+ Large Emoji in timeline
+
+
+
+
+ Make font size larger if messages with only a few emojis are displayed.
+
+
+
+
+ Share keys with verified users and devices
+
+
+
+
+ CACHED
+
+
+
+
+ NOT CACHED
+
+
+
+
+ Scale factor
+
+
+
+
+ Change the scale factor of the whole user interface.
+
+
+
+
+ Font size
+
+
+
+
+ Font Family
+
+
+
+
+ Theme
+
+
+
+
+ Ringtone
+
+
+
+
+ Set the notification sound to play when a call invite arrives
+
+
+
+
+ Microphone
+
+
+
+
+ Camera
+
+
+
+
+ Camera resolution
+
+
+
+
+ Camera frame rate
+
+
+
+
+ Allow fallback call assist server
+
+
+
+
+ Will use turn.matrix.org as assist when your home server does not offer one.
+
+
+
+
+ Device ID
+
+
+
+
+ Device Fingerprint
+
+
+
+
+ Session Keys
+
+
+
+
+ IMPORT
+
+
+
+
+ EXPORT
+
+
+
+
+ ENCRYPTION
+
+
+
+
+ GENERAL
+
+
+
+
+ INTERFACE
+
+
+
+
+ Touchscreen mode
+
+
+
+
+ Will prevent text selection in the timeline to make touch scrolling easier.
+
+
+
+
+ Emoji Font Family
+
+
+
+
+ Automatically replies to key requests from other users, if they are verified.
+
+
+
+
+ Master signing key
+
+
+
+
+ Your most important key. You don't need to have it cached, since not caching it makes it less likely it can be stolen and it is only needed to rotate your other signing keys.
+
+
+
+
+ User signing key
+
+
+
+
+ The key to verify other users. If it is cached, verifying a user will verify all their devices.
+
+
+
+
+ Self signing key
+
+
+
+
+ The key to verify your own devices. If it is cached, verifying one of your devices will mark it verified for all your other devices and for users, that have verified you.
+
+
+
+
+ Backup key
+
+
+
+
+ The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.
+
+
+
+
+ Select a file
+
+
+
+
+ All Files (*)
+
+
+
+
+ Open Sessions File
+
+
+
+
+
+
+
+
+
+ Error
+
+
+
+
+
+ File Password
+
+
+
+
+ Enter the passphrase to decrypt the file:
+
+
+
+
+
+ The password cannot be empty
+
+
+
+
+ Enter passphrase to encrypt your session keys:
+
+
+
+
+ File to save the exported session keys
+
+
+
+
+ Waiting
+
+
+ Waiting for other party…
+
+
+
+
+ Waiting for other side to accept the verification request.
+
+
+
+
+ Waiting for other side to continue the verification process.
+
+
+
+
+ Waiting for other side to complete the verification process.
+
+
+
+
+ Cancel
+
+
+
+
+ WelcomePage
+
+
+ Welcome to nheko! The desktop client for the Matrix protocol.
+
+
+
+
+ Enjoy your stay!
+
+
+
+
+ REGISTER
+
+
+
+
+ LOGIN
+
+
+
+
+ descriptiveTime
+
+
+ Yesterday
+
+
+
+
+ dialogs::CreateRoom
+
+
+ Create room
+
+
+
+
+ Cancel
+
+
+
+
+ Name
+
+
+
+
+ Topic
+
+
+
+
+ Alias
+
+
+
+
+ Room Visibility
+
+
+
+
+ Room Preset
+
+
+
+
+ Direct Chat
+
+
+
+
+ dialogs::FallbackAuth
+
+
+ Open Fallback in Browser
+
+
+
+
+ Cancel
+
+
+
+
+ Confirm
+
+
+
+
+ Open the fallback, follow the steps and confirm after completing them.
+
+
+
+
+ dialogs::InviteUsers
+
+
+ Cancel
+
+
+
+
+ User ID to invite
+
+
+
+
+ dialogs::JoinRoom
+
+
+ Join
+
+
+
+
+ Cancel
+
+
+
+
+ Room ID or alias
+
+
+
+
+ dialogs::LeaveRoom
+
+
+ Cancel
+
+
+
+
+ Are you sure you want to leave?
+
+
+
+
+ dialogs::Logout
+
+
+ Cancel
+
+
+
+
+ Logout. Are you sure?
+
+
+
+
+ dialogs::PreviewUploadOverlay
+
+
+ Upload
+
+
+
+
+ Cancel
+
+
+
+
+ Media type: %1
+Media size: %2
+
+
+
+
+
+ dialogs::ReCaptcha
+
+
+ Cancel
+
+
+
+
+ Confirm
+
+
+
+
+ Solve the reCAPTCHA and press the confirm button
+
+
+
+
+ dialogs::ReadReceipts
+
+
+ Read receipts
+
+
+
+
+ Close
+
+
+
+
+ dialogs::ReceiptItem
+
+
+ Today %1
+
+
+
+
+ Yesterday %1
+
+
+
+
+ message-description sent:
+
+
+ You sent an audio clip
+
+
+
+
+ %1 sent an audio clip
+
+
+
+
+ You sent an image
+
+
+
+
+ %1 sent an image
+
+
+
+
+ You sent a file
+
+
+
+
+ %1 sent a file
+
+
+
+
+ You sent a video
+
+
+
+
+ %1 sent a video
+
+
+
+
+ You sent a sticker
+
+
+
+
+ %1 sent a sticker
+
+
+
+
+ You sent a notification
+
+
+
+
+ %1 sent a notification
+
+
+
+
+ You: %1
+
+
+
+
+ %1: %2
+
+
+
+
+ You sent an encrypted message
+
+
+
+
+ %1 sent an encrypted message
+
+
+
+
+ You placed a call
+
+
+
+
+ %1 placed a call
+
+
+
+
+ You answered a call
+
+
+
+
+ %1 answered a call
+
+
+
+
+ You ended a call
+
+
+
+
+ %1 ended a call
+
+
+
+
+ popups::UserMentions
+
+
+ This Room
+
+
+
+
+ All Rooms
+
+
+
+
+ utils
+
+
+ Unknown Message Type
+
+
+
+
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 @@
You are screen sharing
-
+ Вы демонстрируете экранHide/Show Picture-in-Picture
-
+ Убрать/Показать Картинку-в-Картинке
@@ -84,42 +84,42 @@
Video Call
- Видео Звонок
+ Видео ЗвонокVoice Call
- Голосовой Звонок
+ Голосовой ЗвонокDevices
- Устройства
+ УстройстваAccept
- Принять
+ ПринятьUnknown microphone: %1
-
+ Неизвестный микрофон: %1Unknown camera: %1
-
+ Неизвестная камера: %1Decline
- Отказаться
+ ОтказатьсяNo microphone found.
- Микрофон не найден.
+ Микрофон не найден.
@@ -127,7 +127,7 @@
Entire screen
-
+ Весь экран
@@ -151,12 +151,12 @@
Confirm join
-
+ Подтвердить входDo you really want to join %1?
-
+ Вы действительно хотите присоединиться?
@@ -237,7 +237,7 @@
Do you really want to start a private chat with %1?
-
+ Вы действительно хотите начать личную переписку с %1?
@@ -303,7 +303,7 @@
Failed to kick %1 from %2: %3
-
+ Не удалось выгнать %1 из %2: %3
@@ -351,27 +351,27 @@
Decrypt secrets
-
+ Расшифровать секретыEnter your recovery key or passphrase to decrypt your secrets:
-
+ Введите свой ключ восстановления или пароль для расшифровки секретов: Enter your recovery key or passphrase called %1 to decrypt your secrets:
-
+ Введите свой ключ восстановления или пароль названный %1 для расшифровки Ваших секретов:Decryption failed
-
+ Расшифровка не удаласьFailed to decrypt secrets with the provided recovery key or passphrase
-
+ Не удалось расшифровать секреты с помощью предоставленного ключа восстановления или пароля.
@@ -501,17 +501,17 @@
Encrypted by a verified device
-
+ Зашифровано верефицированым устройствомEncrypted by an unverified device, but you have trusted that user so far.
-
+ Зашифрованно неверефицированым устройством, но Вы все еще доверяете этому пользователю.Encrypted by an unverified device
-
+ Зашифровано неверифицированым устройства
@@ -520,20 +520,20 @@
-- Encrypted Event (No keys found for decryption) --Placeholder, when the message was not decrypted yet or can't be decrypted.
- -- Зашифрованное событие (Нет найдено ключей для дешифрования) --
+ -- Зашифрованное событие (Не найдено ключей для дешифрования) ---- Encrypted Event (Key not valid for this index) --Placeholder, when the message can't be decrypted with this key since it is not valid for this index
-
+ -- Зашифрованное событие(Не найдено ключей для дешифрования) ---- Decryption Error (failed to retrieve megolm keys from db) --Placeholder, when the message can't be decrypted, because the DB access failed.
- -- Ошибка дешифрования (Не удалось получить megolm-ключи для бд) --
+ -- Ошибка дешифрования (Не удалось получить megolm-ключи из бд) --
@@ -598,7 +598,7 @@
Forward Message
-
+ Переслать Сообщение
@@ -658,7 +658,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
Your password.
-
+ Ваш пароль.
@@ -673,12 +673,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
Homeserver address
-
+ Адрес домашнего сервераserver.my:8787
-
+ server.my:8787
@@ -698,7 +698,7 @@ Example: https://server.my:8787
You have entered an invalid Matrix ID e.g @joe:matrix.org
-
+ Вы ввели не правильный Matrix ID, @joe:matrix.org
@@ -858,7 +858,7 @@ Example: https://server.my:8787
You don't have permission to send messages in this room
-
+ У вас нет прав для отправления сообщений в этой комнате
@@ -866,22 +866,22 @@ Example: https://server.my:8787
Edit
-
+ РедактироватьReact
- Отреагировать
+ РеакцияReply
- Ответить
+ ОтветитьOptions
- Опции
+ Опции
@@ -889,12 +889,12 @@ Example: https://server.my:8787
Send Verification Request
-
+ Отправить Запрос ВерификацииReceived Verification Request
-
+ Получен Запрос Верификации
@@ -949,7 +949,7 @@ Example: https://server.my:8787
%1 sent an encrypted message
- %1 отправил зашифрованное сообщение
+ %1 отправил зашифрованное сообщение
@@ -973,17 +973,17 @@ Example: https://server.my:8787
%1 replied with an encrypted message
-
+ %1 ответил зашифрованным сообщением%1 replied to a message
-
+ %1 ответил на сообщение%1 sent a message
-
+ %1 отправил сообщениe
@@ -991,32 +991,32 @@ Example: https://server.my:8787
Place a call to %1?
-
+ Позвонить %1?No microphone found.
- Микрофон не найден.
+ Микрофон не найден.Voice
-
+ ГолосVideo
-
+ ВидеоScreen
-
+ ЭкранCancel
-
+ Отмена
@@ -1124,7 +1124,7 @@ Example: https://server.my:8787
Cancel edit
-
+ Отменить редактирование
@@ -1205,62 +1205,62 @@ Example: https://server.my:8787
Room Settings
-
+ Настройки комнаты%1 member(s)
-
+ %1 участник(ов)SETTINGS
-
+ НАЙСТРОЙКИNotifications
-
+ УведомленияMuted
-
+ ЗаглушенMentions only
-
+ Упоминания толькоAll messages
-
+ Все сообщенияAnyone and guests
-
+ Каждый и гостиAnyone
-
+ КаждыйInvited users
-
+ Приглашённые пользователиEncryption
-
+ ШифрованиеEnd-to-End Encryption
- Сквозное шифрование
+ Оконечное шифрование
@@ -1271,7 +1271,7 @@ Example: https://server.my:8787
Respond to key requests
-
+ Отвечать на запрос ключей
@@ -1283,53 +1283,53 @@ Example: https://server.my:8787
INFO
-
+ ИНФОРМАЦИЯInternal ID
-
+ Внутренний IDRoom Version
-
+ Версия КомнатыOK
- ОК
+ ОКFailed to enable encryption: %1
- Не удалось включить шифрование: %1
+ Не удалось включить шифрование: %1Select an avatar
- Выберите аватар
+ Выберите аватарAll Files (*)
- Все файлы (*)
+ Все файлы (*)The selected file is not an image
- Выбранный файл не является картинкой
+ Выбранный файл не является картинкойError while reading file: %1
- Ошибка во время прочтения файла: %1
+ Ошибка во время прочтения файла: %1Failed to upload image: %s
- Не удалось загрузить изображение: %s
+ Не удалось загрузить изображение: %s
@@ -1337,27 +1337,27 @@ Example: https://server.my:8787
Share desktop with %1?
-
+ Поделиться экраном с %1?Window:
-
+ Окно:Frame rate:
-
+ Частота кадров:Include your camera picture-in-picture
-
+ Включить Вашу камеру в режиме картинка-в-картинкеRequest remote camera
-
+ Запросить удалённую камеру
@@ -1368,22 +1368,22 @@ Example: https://server.my:8787
Hide mouse cursor
-
+ Спрятать курсор мышиShare
-
+ ПоделитьсяPreview
-
+ ПредпросмотрCancel
-
+ Отмена
@@ -1640,7 +1640,7 @@ Example: https://server.my:8787
Edited
-
+ Изменено
@@ -1648,12 +1648,12 @@ Example: https://server.my:8787
Copy
-
+ КопироватьCopy link location
-
+ Скопировать ссылку
@@ -1668,7 +1668,7 @@ Example: https://server.my:8787
Edit
-
+ Редактировать
@@ -1678,7 +1678,7 @@ Example: https://server.my:8787
Forward
-
+ Переслать
@@ -1708,12 +1708,12 @@ Example: https://server.my:8787
Open in external program
-
+ Открыть вo сторонней программеCopy link to event
-
+ Скопировать ссылку на событие
@@ -1806,7 +1806,7 @@ Example: https://server.my:8787
User Profile Settings
-
+ Настройки пользовательского профиля
@@ -1834,12 +1834,12 @@ Example: https://server.my:8787
Global User Profile
-
+ Глобальный Пользовательский ПрофильRoom User Profile
-
+ Поользовательский Профиль в Комнате
@@ -1865,27 +1865,27 @@ Example: https://server.my:8787
Unverify
-
+ Отменить ВерификациюSelect an avatar
- Выберите аватар
+ Выберите аватарAll Files (*)
- Все файлы (*)
+ Все файлы (*)The selected file is not an image
- Выбранный файл не является картинкой
+ Выбранный файл не является картинкойError while reading file: %1
- Ошибка во время прочтения файла: %1
+ Ошибка во время прочтения файла: %1
@@ -1894,7 +1894,7 @@ Example: https://server.my:8787
Default
-
+ По умолчанию
@@ -1927,7 +1927,7 @@ Example: https://server.my:8787
Default
-
+ По умолчанию
@@ -1942,12 +1942,12 @@ Example: https://server.my:8787
REQUEST
-
+ ЗАПРОСDOWNLOAD
-
+ СКАЧАТЬ
@@ -1984,7 +1984,7 @@ Only affects messages in encrypted chats.
Privacy Screen
-
+ Приватное Окно
@@ -2123,12 +2123,12 @@ This usually causes the application icon in the task bar to animate in some fash
CACHED
-
+ ЗакешированоNOT CACHED
-
+ НЕ ЗАКЕШИРОВАНО
@@ -2288,7 +2288,7 @@ This usually causes the application icon in the task bar to animate in some fash
Backup key
-
+ Ключ восстановления
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);
}