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 Bildschirm Hide/Show Picture-in-Picture - Bild in Bild anzeigen/verstecken + Bild-in-Bild Teilen/Verstecken Unmute Mic - Stummschaltung aufheben + Stummschaltung Aufheben Mute Mic - Mikrophon stummschalten + Mikrofon stumm schalten @@ -151,12 +151,12 @@ Confirm join - Beitreten bestätigen + Beitritt bestätigen Do 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: %1 Failed 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 anzeigen Request remote camera - Kamera der Gegenstelle anfragen + Entfernte Kamera anfragen View 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 - + Kopieren Copy 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 mikrofonon Mute Mic - + Silentigi mikrofonon @@ -40,17 +40,17 @@ Awaiting Confirmation - + Atendante konfirmon Waiting for other side to complete verification. - + Atendante kontrolon venontan de la alia flanko. Cancel - + Nuligi @@ -66,12 +66,12 @@ Video Call - + Vidvoko Voice Call - + Voĉvoko @@ -84,37 +84,37 @@ Video Call - + Vidvoko Voice Call - + Voĉvoko Devices - + Aparatoj Accept - + Akcepti Unknown microphone: %1 - + Nekonata mikrofono: %1 Unknown camera: %1 - + Nekonata filmilo: %1 Decline - + Rifuzi @@ -127,7 +127,7 @@ Entire screen - + Tuta ekrano @@ -135,13 +135,13 @@ Failed to invite user: %1 - + Malsukcesis inviti uzanton: %1 Invited user: %1 - + Invitita uzanto: %1 @@ -151,12 +151,12 @@ Confirm join - + Konfirmu aliĝon Do you really want to join %1? - + Ĉu vi certe volas aliĝi al %1? @@ -168,77 +168,77 @@ Confirm invite - + Konfirmu inviton Do 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: %3 Confirm kick - + Konfirmu forpelon Do you really want to kick %1 (%2)? - + Ĉu vi certe volas forpeli uzanton %1 (%2)? Kicked user: %1 - + Forpelis uzanton: %1 Confirm ban - + Konfirmu forbaron Do 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: %3 Banned user: %1 - + Forbaris uzanton: %1 Confirm unban - + Konfirmu malforbaron Do 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: %3 Unbanned user: %1 - + Malforbaris uzanton: %1 Do 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: %1 Failed to join room: %1 - + Malsukcesis aliĝi al ĉambro: %1 @@ -289,22 +289,22 @@ Failed to remove invite: %1 - + Malsukcesis forigi inviton: %1 Room creation failed: %1 - + Malsukcesis krei ĉambron: %1 Failed to leave room: %1 - + Malsukcesis eliri el ĉambro: %1 Failed 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 sekretojn Enter 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ĉifrado Failed 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 - + Kontrolkodo 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! - + 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 - + Apliki Cancel - + Nuligi @@ -418,7 +418,7 @@ Topic - + Temo @@ -426,7 +426,7 @@ Search - Trovu + Serĉu @@ -474,22 +474,22 @@ Verification Code - + Kontrolkodo 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! - + 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 kontrolo Other 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 Matrikso e.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 + Pasvorto Your 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 hejmservilo server.my:8787 - + servilo.mia:8787 The address that can be used to contact you homeservers client API. Example: https://server.my: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 LOGIN Maybe 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 - + Bildosignoj Send - Sendu + Sendi You 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 - + Redakti React - Reagu + Reagi Reply - Respondu + Respondi Options - Ebloj + Elektebloj @@ -890,57 +892,57 @@ Ekzemplo: https://servisto.mia:8787 Send Verification Request - + Sendi kontrolpeton Received Verification Request - + Ricevita kontrolpeto 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? - + 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 - + Nuligi Deny - + Rifuzi Start verification - + Komenci kontrolon Accept - + Akcepti @@ -950,41 +952,41 @@ Ekzemplo: https://servisto.mia:8787 %1 sent an encrypted message - + %1 sendis ĉifritan mesaĝon * %1 %2 Format an emote message in a notification, %1 is the sender, %2 the message - + * %1 %2 %1 replied: %2 Format a reply in a notification. %1 is the sender, %2 the message - + %1 respondis: %2 %1: %2 Format 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ĉe Video - + Vide Screen - + Ekrane Cancel - + Nuligi @@ -1025,7 +1027,7 @@ Ekzemplo: https://servisto.mia:8787 unimplemented event: - + neprogramita okazo: @@ -1038,12 +1040,12 @@ Ekzemplo: https://servisto.mia:8787 profile - + profilo profile name - + nomo de profilo @@ -1051,13 +1053,13 @@ Ekzemplo: https://servisto.mia:8787 Username - Uzantnomo + Uzantonomo The 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 - + Hejmservilo A 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ĜI No 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 akordas Invalid server name - + Nevalida nomo de servilo @@ -1120,12 +1122,12 @@ Ekzemplo: https://servisto.mia:8787 Close - + Fermi Cancel edit - + Nuligi redakton @@ -1141,12 +1143,12 @@ Ekzemplo: https://servisto.mia:8787 Leave room - Eliru ĉambro + Eliri el ĉambro Tag room as: - + Etikedi ĉambron: @@ -1158,25 +1160,25 @@ Ekzemplo: https://servisto.mia:8787 Low Priority Standard matrix tag for low priority rooms - + Malalta prioritato Server Notice Standard matrix tag for server notices - + Servila avizo Adds 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 - + Akcepti Decline - + Rifuzi @@ -1206,73 +1208,73 @@ Ekzemplo: https://servisto.mia:8787 Room Settings - + Agordoj de ĉambro %1 member(s) - + %1 ĉambrano(j) SETTINGS - + AGORDOJ Notifications - + Sciigoj Muted - + Neniuj Mentions only - + Nur mencioj All messages - + Ĉiuj mesaĝoj Anyone and guests - + Ĉiu ajn, inkluzive gastojn Anyone - + Ĉiu ajn Invited users - + Invititoj Encryption - + Ĉifrado End-to-End Encryption - + Tutvoja ĉifrado Encryption 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 - + INFORMOJ Internal ID - + Interna identigilo Room Version - + Versio de ĉambro OK - Bone + Bone Failed to enable encryption: %1 - + Malsukcesis ŝalti ĉifradon: %1 Select 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 bildo Error while reading file: %1 - + Eraris legado de dosiero: %1 Failed 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 uzanto Create new room - Faru novan ĉambron + Fari novan ĉambron Join a room - Aliĝu ĉambron + Aliĝi ĉambron Start a new chat - Komencu novan babilon + Komenci novan babilon @@ -1437,7 +1439,7 @@ Ekzemplo: https://servisto.mia:8787 Read Could this simply be "lega"? - Estas lega + Estas legita @@ -1474,22 +1476,22 @@ Ekzemplo: https://servisto.mia:8787 Save image - + Konservi bildon Save video - + Konservi filmon Save audio - + Konservi sonon Save 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 - + Kopii Copy link location - + Kopii celon de ligilo React - Reagu + Reagi Reply - Respondu + Respondi Edit - + Redakti Read receipts - + Kvitancoj Forward - + Plusendi Mark as read - + Marki legita View raw message - + Vidi krudan mesaĝon View decrypted raw message - + Vidi malĉifritan krudan mesaĝon Remove message - + Forigi mesaĝon Save as - + Konservi kiel Open in external program - + Malfermi per ekstera programo Copy link to event - + Kopii ligilon al okazo @@ -1764,12 +1766,12 @@ Ekzemplo: https://servisto.mia:8787 Leave room - Eliru ĉambro + Eliri el ĉambro Settings - 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 bildo Error 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 - + PETI DOWNLOAD - + ELŜUTI Keep 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 breto Decrypt 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 ŝirmilo When 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 historio Show 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 historio Set 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 tajpado Show 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ŭ nelegiteco 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. - + 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 - + Kvitancoj Show 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ŭne Allow 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 sciigoj Notify 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 filmon You 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 seadmes Encrypted 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 - + Kopeeri Copy 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 - + Videopuhelu Voice Call - + Äänipuhelu No microphone found. - + Mikrofonia ei löydy. @@ -84,12 +84,12 @@ Video Call - + Videopuhelu Voice Call - + Äänipuhelu @@ -104,12 +104,12 @@ Unknown microphone: %1 - + Tuntematon mikrofoni: %1 Unknown 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 liittyminen Do you really want to join %1? - + Haluatko todella liittyä huoneeseen %1? @@ -278,12 +278,12 @@ Failed to join room: %1 - + Huoneeseen liittyminen epäonnistui: %1 You joined the room - + Sinä liityit huoneeseen @@ -425,22 +425,22 @@ Search - + Hae People - + Ihmiset Nature - + Luonto Food - + 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 - + Muokkaa React - + Reagoi Reply - + Vastaa Options - + 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: %2 Format a reply in a notification. %1 is the sender, %2 the message - + %1 vastasi: %2 %1: %2 Format 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 - + Salaus End-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 versio OK - OK + OK Failed to enable encryption: %1 - Salauksen aktivointi epäonnistui: %1 + Salauksen aktivointi epäonnistui: %1 Select an avatar - Valitse profiilikuva + Valitse profiilikuva All Files (*) - Kaikki Tiedostot (*) + Kaikki Tiedostot (*) The selected file is not an image - Valittu tiedosto ei ole kuva + Valittu tiedosto ei ole kuva Error while reading file: %1 - Virhe lukiessa tiedostoa: %1 + Virhe lukiessa tiedostoa: %1 Failed 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 video Save audio - + Tallenna äänitiedosto Save 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 - + Kopioi Copy link location - + Kopioi linkin sijainti React - + Reagoi Reply - + Vastaa Edit - + Muokkaa @@ -1673,12 +1673,12 @@ Example: https://server.my:8787 Forward - + Lähetä viesti eteenpäin Mark as read - + Merkitse luetuksi @@ -1693,12 +1693,12 @@ Example: https://server.my:8787 Remove message - + Poista viesti Save 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 - + Mikrofoni Camera - + 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 chiamando Connecting... - + Connessione in corso... You are screen sharing - + Stai condividendo il tuo schermo Hide/Show Picture-in-Picture - + Nascondi/Mostra Picture-in-Picture Unmute Mic - + Attiva Microfono Mute Mic - + Silenzia Microfono @@ -40,12 +40,12 @@ Awaiting Confirmation - + In attesa di conferma Waiting for other side to complete verification. - + In attesa della conferma dall'altra parte per la verifica. @@ -66,17 +66,17 @@ Video Call - + Chiamata video Voice Call - + Chiamata vocale No microphone found. - + Nessun microfono trovato. @@ -84,22 +84,22 @@ Video Call - + Chiamata Video Voice Call - + Chiamata audio Devices - Dispositivi + Dispositivi Accept - Accetta + Accetta @@ -114,12 +114,12 @@ Decline - Rifiuta + Rifiuta No microphone found. - + Nessun microfono trovato. @@ -151,12 +151,12 @@ Confirm join - + Conferma collegamento Do you really want to join %1? - + Vuoi davvero collegarti a %1? @@ -167,12 +167,12 @@ Confirm invite - + Conferma Invito Do you really want to invite %1 (%2)? - + Vuoi davvero inviare %1 (%2)? @@ -182,12 +182,12 @@ Confirm kick - + Conferma l'allontanamento Do you really want to kick %1 (%2)? - + Vuoi davvero allontanare %1 (%2)? @@ -197,12 +197,12 @@ Confirm ban - + Conferma ban Do you really want to ban %1 (%2)? - + Vuoi veramente bannare %1 (%2)? @@ -217,12 +217,12 @@ Confirm unban - + Conferma reintegro Do 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 Notices Tag translation for m.server_notice - + Notifiche del server @@ -351,27 +351,27 @@ Decrypt secrets - + Decifra i segreti Enter 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 fallita Failed 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 verifica 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! - + 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 - + Viaggi Objects - Oggetti + Oggetti Symbols - Simboli + Simboli Flags - 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 verificato Encrypted 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 Priority 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 New Tag Tag 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 - + Неизвестный микрофон: %1 Unknown camera: %1 - + Неизвестная камера: %1 Decline - Отказаться + Отказаться 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 - + Внутренний ID Room Version - + Версия Комнаты OK - ОК + ОК Failed to enable encryption: %1 - Не удалось включить шифрование: %1 + Не удалось включить шифрование: %1 Select an avatar - Выберите аватар + Выберите аватар All Files (*) - Все файлы (*) + Все файлы (*) The selected file is not an image - Выбранный файл не является картинкой + Выбранный файл не является картинкой Error while reading file: %1 - Ошибка во время прочтения файла: %1 + Ошибка во время прочтения файла: %1 Failed 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); }