Merge branch 'master' into qml-roomlist

This commit is contained in:
Nicolas Werner 2021-06-12 15:05:07 +02:00
commit 7d5e82c888
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9
16 changed files with 3439 additions and 605 deletions

View file

@ -114,6 +114,15 @@ with [homebrew](https://brew.sh/):
```sh ```sh
brew install --cask nheko brew install --cask nheko
``` ```
#### Windows
with [Chocolatey](https://chocolatey.org/):
```posh
choco install nheko-reborn
```
### FAQ ### FAQ
## ##

View file

@ -16,7 +16,9 @@ finish-args:
- --socket=wayland - --socket=wayland
- --socket=x11 - --socket=x11
- --talk-name=org.freedesktop.Notifications - --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: cleanup:
- /include - /include
- /bin/mdb* - /bin/mdb*

View file

@ -17,22 +17,22 @@
<message> <message>
<location line="+67"/> <location line="+67"/>
<source>You are screen sharing</source> <source>You are screen sharing</source>
<translation>Du hast deinen Bildschirm freigegeben</translation> <translation>Du teilst deinen Bildschirm</translation>
</message> </message>
<message> <message>
<location line="+17"/> <location line="+17"/>
<source>Hide/Show Picture-in-Picture</source> <source>Hide/Show Picture-in-Picture</source>
<translation>Bild in Bild anzeigen/verstecken</translation> <translation>Bild-in-Bild Teilen/Verstecken</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>Unmute Mic</source> <source>Unmute Mic</source>
<translation>Stummschaltung aufheben</translation> <translation>Stummschaltung Aufheben</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>Mute Mic</source> <source>Mute Mic</source>
<translation>Mikrophon stummschalten</translation> <translation>Mikrofon stumm schalten</translation>
</message> </message>
</context> </context>
<context> <context>
@ -151,12 +151,12 @@
<message> <message>
<location line="+412"/> <location line="+412"/>
<source>Confirm join</source> <source>Confirm join</source>
<translation>Beitreten bestätigen</translation> <translation>Beitritt bestätigen</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Do you really want to join %1?</source> <source>Do you really want to join %1?</source>
<translation>Willst du wirklich %1 betreten?</translation> <translation>Möchtest du wirklich %1 beitreten?</translation>
</message> </message>
<message> <message>
<location line="+44"/> <location line="+44"/>
@ -172,7 +172,7 @@
<message> <message>
<location line="-323"/> <location line="-323"/>
<source>Do you really want to invite %1 (%2)?</source> <source>Do you really want to invite %1 (%2)?</source>
<translation>Willst du wirklich %1 (%2) einladen?</translation> <translation>Nutzer %1 (%2) wirklich einladen?</translation>
</message> </message>
<message> <message>
<location line="+11"/> <location line="+11"/>
@ -187,12 +187,12 @@
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Do you really want to kick %1 (%2)?</source> <source>Do you really want to kick %1 (%2)?</source>
<translation>Willst du wirklich %1 (%2) kicken?</translation> <translation>Nutzer %1 (%2) wirklich kicken?</translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+16"/>
<source>Kicked user: %1</source> <source>Kicked user: %1</source>
<translation>%1 wurde gekickt.</translation> <translation>Gekickter Benutzer: %1</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location line="+10"/>
@ -202,7 +202,7 @@
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Do you really want to ban %1 (%2)?</source> <source>Do you really want to ban %1 (%2)?</source>
<translation>Willst du wirklich %1 (%2) aus dem Raum verbannen?</translation> <translation>Nutzer %1 (%2) wirklich bannen?</translation>
</message> </message>
<message> <message>
<location line="+11"/> <location line="+11"/>
@ -212,7 +212,7 @@
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>Banned user: %1</source> <source>Banned user: %1</source>
<translation>%1 wurde gebannt.</translation> <translation>Gebannter Nutzer: %1</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location line="+10"/>
@ -222,7 +222,7 @@
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Do you really want to unban %1 (%2)?</source> <source>Do you really want to unban %1 (%2)?</source>
<translation>Willst du wirklich den Bann von %1 (%2) zurückziehen?</translation> <translation>Bann des Nutzers %1 (%2) wirklich aufheben?</translation>
</message> </message>
<message> <message>
<location line="+11"/> <location line="+11"/>
@ -232,7 +232,7 @@
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>Unbanned user: %1</source> <source>Unbanned user: %1</source>
<translation>Verbannung von %1 wurde aufgehoben.</translation> <translation>Verbannung aufgehoben: %1</translation>
</message> </message>
<message> <message>
<location line="+227"/> <location line="+227"/>
@ -247,7 +247,7 @@
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>Incompatible cache version</source> <source>Incompatible cache version</source>
<translation>Inkompatible Cacheversion</translation> <translation>Inkompatible Version des Caches</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
@ -283,7 +283,7 @@
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>You joined the room</source> <source>You joined the room</source>
<translation>Du bist dem Raum beigetreten.</translation> <translation>Du hast den Raum betreten</translation>
</message> </message>
<message> <message>
<location line="+6"/> <location line="+6"/>
@ -506,12 +506,12 @@
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Encrypted by an unverified device, but you have trusted that user so far.</source> <source>Encrypted by an unverified device, but you have trusted that user so far.</source>
<translation type="unfinished"></translation> <translation>Von einem unverifizierten Gerät verschlüsselt, Sie haben dem Nutzer jedoch früher schon vertraut.</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Encrypted by an unverified device</source> <source>Encrypted by an unverified device</source>
<translation type="unfinished"></translation> <translation>Von einem unverifizierten Gerät verschlüsselt</translation>
</message> </message>
</context> </context>
<context> <context>
@ -598,7 +598,7 @@
<message> <message>
<location filename="../qml/ForwardCompleter.qml" line="+44"/> <location filename="../qml/ForwardCompleter.qml" line="+44"/>
<source>Forward Message</source> <source>Forward Message</source>
<translation type="unfinished"></translation> <translation>Nachricht weiterleiten</translation>
</message> </message>
</context> </context>
<context> <context>
@ -645,10 +645,10 @@
You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup. You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup.
Example: @user:server.my Example: @user:server.my
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
<translation>Dein Anmeldename. Eine mxid sollte mit einem @ anfangen, gefolgt von dem Benutzernamen. Nach dem Benutzernamen sollten ein Doppelpunkt (:) under der Servername folgen. <translation>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 per .well-known auffindbar ist. 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 Beispiel: @benutzer:dein.server
Wenn Nheko deinen Server nicht automatisch erkennen kann, wird es dich nach dem Server fragen.</translation> Wenn Nheko deinen Server nicht automatisch erkennen kann, bekommst du eine Eingabemaske gezeigt in die du die Serverdaten manuell eintragen kannst.</translation>
</message> </message>
<message> <message>
<location line="+25"/> <location line="+25"/>
@ -668,7 +668,7 @@ Wenn Nheko deinen Server nicht automatisch erkennen kann, wird es dich nach dem
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source> <source>A name for this device, which will be shown to others, when verifying your devices. If none is provided a default is used.</source>
<translation>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.</translation> <translation>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.</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
@ -785,7 +785,7 @@ Beispiel: https://mein.server:8787</translation>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>removed topic</source> <source>removed topic</source>
<translation>Raumthema wurde entfernt</translation> <translation>Thema wurde entfernt</translation>
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
@ -1124,7 +1124,7 @@ Beispiel: https://mein.server:8787</translation>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>Cancel edit</source> <source>Cancel edit</source>
<translation>Editieren abbrechen</translation> <translation>Bearbeiten abbrechen</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1266,7 +1266,7 @@ Beispiel: https://mein.server:8787</translation>
<location line="+1"/> <location line="+1"/>
<source>Encryption is currently experimental and things might break unexpectedly. &lt;br&gt; <source>Encryption is currently experimental and things might break unexpectedly. &lt;br&gt;
Please take note that it can&apos;t be disabled afterwards.</source> Please take note that it can&apos;t be disabled afterwards.</source>
<translation>Verschlüsselung ist aktuell experimentell und kann in verschiedenen Fällen zu Fehlern führen.&lt;br&gt;Verschlüsselung kann nachträglich nicht deaktiviert werden.</translation> <translation>Verschlüsselung ist derzeit experimentell und könnte unerwartete Probleme verursachen.&lt;br&gt;Bitte beachte, dass dies später nicht mehr deaktiviert werden kann.</translation>
</message> </message>
<message> <message>
<location line="+17"/> <location line="+17"/>
@ -1278,9 +1278,7 @@ Beispiel: https://mein.server:8787</translation>
<source>Whether or not the client should respond automatically with the session keys <source>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 upon request. Use with caution, this is a temporary measure to test the
E2E implementation until device verification is completed.</source> E2E implementation until device verification is completed.</source>
<translation>Ob Nheko automatisch auf Schlüsselanfragen antwortet. Dies ist ein temporärer <translation>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.</translation>
Workaround um, solange die Ende-zu-Ende Verschlüsselung unvollständig ist, um
Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.</translation>
</message> </message>
<message> <message>
<location line="+21"/> <location line="+21"/>
@ -1325,13 +1323,13 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.</
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>Error while reading file: %1</source> <source>Error while reading file: %1</source>
<translation>Fehler beim Lesen der DateI: %1</translation> <translation>Fehler beim Lesen der Datei: %1</translation>
</message> </message>
<message> <message>
<location line="+34"/> <location line="+34"/>
<location line="+20"/> <location line="+20"/>
<source>Failed to upload image: %s</source> <source>Failed to upload image: %s</source>
<translation>Hochladen der Bilddatei fehlgeschlagen: %s</translation> <translation>Hochladen des Bildes fehlgeschlagen: %s</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1349,23 +1347,23 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.</
<message> <message>
<location line="+20"/> <location line="+20"/>
<source>Frame rate:</source> <source>Frame rate:</source>
<translation>Wiederholungsrate:</translation> <translation>Bildrate:</translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+19"/>
<source>Include your camera picture-in-picture</source> <source>Include your camera picture-in-picture</source>
<translation>Eigene Kamera als Bild-im-Bild anzeigen</translation> <translation>Deine Kamera Bild-in-Bild anzeigen</translation>
</message> </message>
<message> <message>
<location line="+12"/> <location line="+12"/>
<source>Request remote camera</source> <source>Request remote camera</source>
<translation>Kamera der Gegenstelle anfragen</translation> <translation>Entfernte Kamera anfragen</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<location line="+9"/> <location line="+9"/>
<source>View your callee&apos;s camera like a regular video call</source> <source>View your callee&apos;s camera like a regular video call</source>
<translation>Zeige die Kamera des Angerufen wie in einem normalen Videoanruf an</translation> <translation>Die Kamera Ihres Gesprächspartners wie bei einem normalen Videoanruf betrachten</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
@ -1649,12 +1647,12 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.</
<message> <message>
<location filename="../qml/TimelineView.qml" line="+125"/> <location filename="../qml/TimelineView.qml" line="+125"/>
<source>Copy</source> <source>Copy</source>
<translation type="unfinished"></translation> <translation>Kopieren</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Copy link location</source> <source>Copy link location</source>
<translation type="unfinished"></translation> <translation>Link kopieren</translation>
</message> </message>
<message> <message>
<location line="+8"/> <location line="+8"/>
@ -1679,7 +1677,7 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.</
<message> <message>
<location line="+6"/> <location line="+6"/>
<source>Forward</source> <source>Forward</source>
<translation type="unfinished"></translation> <translation>Weiterleiten</translation>
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
@ -1714,7 +1712,7 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.</
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Copy link to event</source> <source>Copy link to event</source>
<translation type="unfinished"></translation> <translation>Link zu Event kopieren</translation>
</message> </message>
<message> <message>
<location line="+57"/> <location line="+57"/>
@ -1871,7 +1869,7 @@ Schlüssel auszutauschen, wenn der normale Weg nicht zu funktionieren scheint.</
<message> <message>
<location filename="../../src/ui/UserProfile.cpp" line="+301"/> <location filename="../../src/ui/UserProfile.cpp" line="+301"/>
<source>Select an avatar</source> <source>Select an avatar</source>
<translation>Wähle einen Avatar</translation> <translation>Avatar wählen</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
@ -1993,13 +1991,12 @@ Betrifft nur Nachrichten in verschlüsselten Chats.</translation>
<location line="+2"/> <location line="+2"/>
<source>When the window loses focus, the timeline will <source>When the window loses focus, the timeline will
be blurred.</source> be blurred.</source>
<translation>Verliert das Fenster den Fokus, werden die Nachrichten <translation>Die Zeitliste wird unscharf, wenn das Fenster den Fokus verliert.</translation>
verschwommen angezeigt.</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Privacy screen timeout (in seconds [0 - 3600])</source> <source>Privacy screen timeout (in seconds [0 - 3600])</source>
<translation>Zeit bis Blickschutz aktiv wird (in Sekunden [0 - 3600])</translation> <translation>Sichtschutz-Zeitbegrenzung (in Sekunden [0 - 3600])</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>

File diff suppressed because it is too large Load diff

View file

@ -146,7 +146,7 @@
<message> <message>
<location line="-509"/> <location line="-509"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source> <source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation> <translation>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.</translation>
</message> </message>
<message> <message>
<location line="+412"/> <location line="+412"/>
@ -161,13 +161,13 @@
<message> <message>
<location line="+44"/> <location line="+44"/>
<source>Room %1 created.</source> <source>Room %1 created.</source>
<translation type="unfinished"></translation> <translation>Sala %1 creada.</translation>
</message> </message>
<message> <message>
<location line="+35"/> <location line="+35"/>
<location line="+324"/> <location line="+324"/>
<source>Confirm invite</source> <source>Confirm invite</source>
<translation type="unfinished"></translation> <translation>Confirmar invitación</translation>
</message> </message>
<message> <message>
<location line="-323"/> <location line="-323"/>
@ -182,7 +182,7 @@
<message> <message>
<location line="+15"/> <location line="+15"/>
<source>Confirm kick</source> <source>Confirm kick</source>
<translation type="unfinished"></translation> <translation>Confirmar expulsión</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
@ -192,7 +192,7 @@
<message> <message>
<location line="+16"/> <location line="+16"/>
<source>Kicked user: %1</source> <source>Kicked user: %1</source>
<translation type="unfinished"></translation> <translation>Se ha expulsado a %1</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location line="+10"/>

View file

@ -501,17 +501,17 @@
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Encrypted by a verified device</source> <source>Encrypted by a verified device</source>
<translation type="unfinished"></translation> <translation>Krüptitud verifitseeritud seadmes</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Encrypted by an unverified device, but you have trusted that user so far.</source> <source>Encrypted by an unverified device, but you have trusted that user so far.</source>
<translation type="unfinished"></translation> <translation>Krüptitud verifitseerimata seadmes, aga sa oled selle kasutajat seni usaldanud.</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Encrypted by an unverified device</source> <source>Encrypted by an unverified device</source>
<translation type="unfinished"></translation> <translation>Krüptitud verifitseerimata seadmes</translation>
</message> </message>
</context> </context>
<context> <context>
@ -598,7 +598,7 @@
<message> <message>
<location filename="../qml/ForwardCompleter.qml" line="+44"/> <location filename="../qml/ForwardCompleter.qml" line="+44"/>
<source>Forward Message</source> <source>Forward Message</source>
<translation type="unfinished"></translation> <translation>Suuna sõnum edasi</translation>
</message> </message>
</context> </context>
<context> <context>
@ -858,7 +858,7 @@ Näiteks: https://server.minu:8787</translation>
<message> <message>
<location line="+11"/> <location line="+11"/>
<source>You don&apos;t have permission to send messages in this room</source> <source>You don&apos;t have permission to send messages in this room</source>
<translation type="unfinished"></translation> <translation>Sul puuduvad selles jututoas õigused sõnumite saatmiseks</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1607,12 +1607,12 @@ testimiseks seni, kuni terviklik seadmete verifitseerimine on implementeeritud.<
<message> <message>
<location line="+842"/> <location line="+842"/>
<source>%1 has changed their avatar and changed their display name to %2.</source> <source>%1 has changed their avatar and changed their display name to %2.</source>
<translation type="unfinished"></translation> <translation>%1 muutis oma tunnuspilti ja seadistas uueks kuvatavaks nimeks %2.</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>%1 has changed their display name to %2.</source> <source>%1 has changed their display name to %2.</source>
<translation type="unfinished"></translation> <translation>%1 seadistas uueks kuvatavaks nimeks %2.</translation>
</message> </message>
<message> <message>
<location line="+31"/> <location line="+31"/>
@ -1649,12 +1649,12 @@ testimiseks seni, kuni terviklik seadmete verifitseerimine on implementeeritud.<
<message> <message>
<location filename="../qml/TimelineView.qml" line="+125"/> <location filename="../qml/TimelineView.qml" line="+125"/>
<source>Copy</source> <source>Copy</source>
<translation type="unfinished"></translation> <translation>Kopeeri</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Copy link location</source> <source>Copy link location</source>
<translation type="unfinished"></translation> <translation>Kopeeri lingi asukoht</translation>
</message> </message>
<message> <message>
<location line="+8"/> <location line="+8"/>
@ -1679,7 +1679,7 @@ testimiseks seni, kuni terviklik seadmete verifitseerimine on implementeeritud.<
<message> <message>
<location line="+6"/> <location line="+6"/>
<source>Forward</source> <source>Forward</source>
<translation type="unfinished"></translation> <translation>Edasta</translation>
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
@ -1714,7 +1714,7 @@ testimiseks seni, kuni terviklik seadmete verifitseerimine on implementeeritud.<
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Copy link to event</source> <source>Copy link to event</source>
<translation type="unfinished"></translation> <translation>Kopeeri sündmuse link</translation>
</message> </message>
<message> <message>
<location line="+57"/> <location line="+57"/>

View file

@ -17,7 +17,7 @@
<message> <message>
<location line="+67"/> <location line="+67"/>
<source>You are screen sharing</source> <source>You are screen sharing</source>
<translation type="unfinished"></translation> <translation>Olet jakamassa näyttöä</translation>
</message> </message>
<message> <message>
<location line="+17"/> <location line="+17"/>
@ -58,7 +58,7 @@
<message> <message>
<location filename="../../src/Cache.cpp" line="+2016"/> <location filename="../../src/Cache.cpp" line="+2016"/>
<source>You joined this room.</source> <source>You joined this room.</source>
<translation type="unfinished"></translation> <translation>Sinä liityit tähän huoneeseen.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -66,17 +66,17 @@
<message> <message>
<location filename="../qml/voip/CallInvite.qml" line="+70"/> <location filename="../qml/voip/CallInvite.qml" line="+70"/>
<source>Video Call</source> <source>Video Call</source>
<translation type="unfinished"></translation> <translation>Videopuhelu</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>Voice Call</source> <source>Voice Call</source>
<translation type="unfinished"></translation> <translation>Äänipuhelu</translation>
</message> </message>
<message> <message>
<location line="+62"/> <location line="+62"/>
<source>No microphone found.</source> <source>No microphone found.</source>
<translation type="unfinished"></translation> <translation>Mikrofonia ei löydy.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -84,12 +84,12 @@
<message> <message>
<location filename="../qml/voip/CallInviteBar.qml" line="+64"/> <location filename="../qml/voip/CallInviteBar.qml" line="+64"/>
<source>Video Call</source> <source>Video Call</source>
<translation type="unfinished"></translation> <translation>Videopuhelu</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>Voice Call</source> <source>Voice Call</source>
<translation type="unfinished"></translation> <translation>Äänipuhelu</translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+16"/>
@ -104,12 +104,12 @@
<message> <message>
<location line="+12"/> <location line="+12"/>
<source>Unknown microphone: %1</source> <source>Unknown microphone: %1</source>
<translation type="unfinished"></translation> <translation>Tuntematon mikrofoni: %1</translation>
</message> </message>
<message> <message>
<location line="+8"/> <location line="+8"/>
<source>Unknown camera: %1</source> <source>Unknown camera: %1</source>
<translation type="unfinished"></translation> <translation>Tuntematon kamera: %1</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+13"/>
@ -119,7 +119,7 @@
<message> <message>
<location line="-28"/> <location line="-28"/>
<source>No microphone found.</source> <source>No microphone found.</source>
<translation type="unfinished"></translation> <translation>Mikrofonia ei löydy.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -141,7 +141,7 @@
<location line="+4"/> <location line="+4"/>
<location line="+809"/> <location line="+809"/>
<source>Invited user: %1</source> <source>Invited user: %1</source>
<translation type="unfinished"></translation> <translation>Kutsuttu käyttäjä: %1</translation>
</message> </message>
<message> <message>
<location line="-509"/> <location line="-509"/>
@ -151,12 +151,12 @@
<message> <message>
<location line="+412"/> <location line="+412"/>
<source>Confirm join</source> <source>Confirm join</source>
<translation type="unfinished"></translation> <translation>Vahvista liittyminen</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Do you really want to join %1?</source> <source>Do you really want to join %1?</source>
<translation type="unfinished"></translation> <translation>Haluatko todella liittyä huoneeseen %1?</translation>
</message> </message>
<message> <message>
<location line="+44"/> <location line="+44"/>
@ -278,12 +278,12 @@
<message> <message>
<location line="+51"/> <location line="+51"/>
<source>Failed to join room: %1</source> <source>Failed to join room: %1</source>
<translation type="unfinished"></translation> <translation>Huoneeseen liittyminen epäonnistui: %1</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>You joined the room</source> <source>You joined the room</source>
<translation type="unfinished"></translation> <translation>Sinä liityit huoneeseen</translation>
</message> </message>
<message> <message>
<location line="+6"/> <location line="+6"/>
@ -425,22 +425,22 @@
<message> <message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+59"/> <location filename="../qml/emoji/EmojiPicker.qml" line="+59"/>
<source>Search</source> <source>Search</source>
<translation type="unfinished"></translation> <translation>Hae</translation>
</message> </message>
<message> <message>
<location line="+172"/> <location line="+172"/>
<source>People</source> <source>People</source>
<translation type="unfinished"></translation> <translation>Ihmiset</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Nature</source> <source>Nature</source>
<translation type="unfinished"></translation> <translation>Luonto</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Food</source> <source>Food</source>
<translation type="unfinished"></translation> <translation>Ruoka</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
@ -450,7 +450,7 @@
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Travel</source> <source>Travel</source>
<translation type="unfinished"></translation> <translation>Matkustaminen</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
@ -496,7 +496,7 @@
<message> <message>
<location filename="../qml/EncryptionIndicator.qml" line="+34"/> <location filename="../qml/EncryptionIndicator.qml" line="+34"/>
<source>This message is not encrypted!</source> <source>This message is not encrypted!</source>
<translation type="unfinished"></translation> <translation>Tätä viestiä ei ole salattu!</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
@ -598,7 +598,7 @@
<message> <message>
<location filename="../qml/ForwardCompleter.qml" line="+44"/> <location filename="../qml/ForwardCompleter.qml" line="+44"/>
<source>Forward Message</source> <source>Forward Message</source>
<translation type="unfinished"></translation> <translation>Välitä viesti</translation>
</message> </message>
</context> </context>
<context> <context>
@ -655,7 +655,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Your password.</source> <source>Your password.</source>
<translation type="unfinished"></translation> <translation>Salasanasi.</translation>
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
@ -670,7 +670,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Homeserver address</source> <source>Homeserver address</source>
<translation type="unfinished"></translation> <translation>Kotipalvelimen osoite</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
@ -761,12 +761,12 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+9"/> <location line="+9"/>
<source>Encryption enabled</source> <source>Encryption enabled</source>
<translation type="unfinished"></translation> <translation>Salaus on käytössä</translation>
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
<source>room name changed to: %1</source> <source>room name changed to: %1</source>
<translation type="unfinished"></translation> <translation>huoneen nimi muutettu: %1</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
@ -862,22 +862,22 @@ Example: https://server.my:8787</source>
<message> <message>
<location filename="../qml/MessageView.qml" line="+82"/> <location filename="../qml/MessageView.qml" line="+82"/>
<source>Edit</source> <source>Edit</source>
<translation type="unfinished"></translation> <translation>Muokkaa</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+15"/>
<source>React</source> <source>React</source>
<translation type="unfinished"></translation> <translation>Reagoi</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>Reply</source> <source>Reply</source>
<translation type="unfinished"></translation> <translation>Vastaa</translation>
</message> </message>
<message> <message>
<location line="+11"/> <location line="+11"/>
<source>Options</source> <source>Options</source>
<translation type="unfinished"></translation> <translation>Asetukset</translation>
</message> </message>
</context> </context>
<context> <context>
@ -945,7 +945,7 @@ Example: https://server.my:8787</source>
<location filename="../../src/notifications/ManagerMac.cpp" line="+44"/> <location filename="../../src/notifications/ManagerMac.cpp" line="+44"/>
<location filename="../../src/notifications/ManagerWin.cpp" line="+78"/> <location filename="../../src/notifications/ManagerWin.cpp" line="+78"/>
<source>%1 sent an encrypted message</source> <source>%1 sent an encrypted message</source>
<translation type="unfinished">%1 lähetti salatun viestin</translation> <translation>%1 lähetti salatun viestin</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
@ -957,29 +957,29 @@ Example: https://server.my:8787</source>
<location line="+5"/> <location line="+5"/>
<source>%1 replied: %2</source> <source>%1 replied: %2</source>
<comment>Format a reply in a notification. %1 is the sender, %2 the message</comment> <comment>Format a reply in a notification. %1 is the sender, %2 the message</comment>
<translation type="unfinished"></translation> <translation>%1 vastasi: %2</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>%1: %2</source> <source>%1: %2</source>
<comment>Format a normal message in a notification. %1 is the sender, %2 the message</comment> <comment>Format a normal message in a notification. %1 is the sender, %2 the message</comment>
<translation type="unfinished">%1: %2</translation> <translation>%1: %2</translation>
</message> </message>
<message> <message>
<location filename="../../src/notifications/ManagerMac.cpp" line="-1"/> <location filename="../../src/notifications/ManagerMac.cpp" line="-1"/>
<location filename="../../src/notifications/ManagerWin.cpp" line="-1"/> <location filename="../../src/notifications/ManagerWin.cpp" line="-1"/>
<source>%1 replied with an encrypted message</source> <source>%1 replied with an encrypted message</source>
<translation type="unfinished"></translation> <translation>%1 vastasi salatulla viestillä</translation>
</message> </message>
<message> <message>
<location line="+6"/> <location line="+6"/>
<source>%1 replied to a message</source> <source>%1 replied to a message</source>
<translation type="unfinished"></translation> <translation>%1 vastasi viestiin</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>%1 sent a message</source> <source>%1 sent a message</source>
<translation type="unfinished"></translation> <translation>%1 lähetti viestin</translation>
</message> </message>
</context> </context>
<context> <context>
@ -992,7 +992,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+16"/> <location line="+16"/>
<source>No microphone found.</source> <source>No microphone found.</source>
<translation type="unfinished"></translation> <translation>Mikrofonia ei löydy.</translation>
</message> </message>
<message> <message>
<location line="+22"/> <location line="+22"/>
@ -1052,7 +1052,7 @@ Example: https://server.my:8787</source>
<location line="+2"/> <location line="+2"/>
<location line="+287"/> <location line="+287"/>
<source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source> <source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
<translation type="unfinished"></translation> <translation>Käyttäjätunnus ei saa olla tyhjä, ja se saa sisältää vain merkkejä a-z, 0-9, ., _, =, - ja /.</translation>
</message> </message>
<message> <message>
<location line="-283"/> <location line="-283"/>
@ -1072,7 +1072,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Homeserver</source> <source>Homeserver</source>
<translation type="unfinished"></translation> <translation>Kotipalvelin</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
@ -1120,7 +1120,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>Cancel edit</source> <source>Cancel edit</source>
<translation type="unfinished"></translation> <translation>Peruuta muokkaus</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1251,12 +1251,12 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+9"/> <location line="+9"/>
<source>Encryption</source> <source>Encryption</source>
<translation type="unfinished"></translation> <translation>Salaus</translation>
</message> </message>
<message> <message>
<location line="+20"/> <location line="+20"/>
<source>End-to-End Encryption</source> <source>End-to-End Encryption</source>
<translation type="unfinished">Päästä-päähän-salaus</translation> <translation>Päästä-päähän-salaus</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
@ -1289,43 +1289,43 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+10"/> <location line="+10"/>
<source>Room Version</source> <source>Room Version</source>
<translation type="unfinished"></translation> <translation>Huoneen versio</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>OK</source> <source>OK</source>
<translation type="unfinished">OK</translation> <translation>OK</translation>
</message> </message>
<message> <message>
<location filename="../../src/ui/RoomSettings.cpp" line="+268"/> <location filename="../../src/ui/RoomSettings.cpp" line="+268"/>
<source>Failed to enable encryption: %1</source> <source>Failed to enable encryption: %1</source>
<translation type="unfinished">Salauksen aktivointi epäonnistui: %1</translation> <translation>Salauksen aktivointi epäonnistui: %1</translation>
</message> </message>
<message> <message>
<location line="+228"/> <location line="+228"/>
<source>Select an avatar</source> <source>Select an avatar</source>
<translation type="unfinished">Valitse profiilikuva</translation> <translation>Valitse profiilikuva</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>All Files (*)</source> <source>All Files (*)</source>
<translation type="unfinished">Kaikki Tiedostot (*)</translation> <translation>Kaikki Tiedostot (*)</translation>
</message> </message>
<message> <message>
<location line="+12"/> <location line="+12"/>
<source>The selected file is not an image</source> <source>The selected file is not an image</source>
<translation type="unfinished">Valittu tiedosto ei ole kuva</translation> <translation>Valittu tiedosto ei ole kuva</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>Error while reading file: %1</source> <source>Error while reading file: %1</source>
<translation type="unfinished">Virhe lukiessa tiedostoa: %1</translation> <translation>Virhe lukiessa tiedostoa: %1</translation>
</message> </message>
<message> <message>
<location line="+34"/> <location line="+34"/>
<location line="+20"/> <location line="+20"/>
<source>Failed to upload image: %s</source> <source>Failed to upload image: %s</source>
<translation type="unfinished">Kuvan lähetys epäonnistui: %s</translation> <translation>Kuvan lähetys epäonnistui: %s</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1364,7 +1364,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>Hide mouse cursor</source> <source>Hide mouse cursor</source>
<translation type="unfinished"></translation> <translation>Piilota hiiren kursori</translation>
</message> </message>
<message> <message>
<location line="+20"/> <location line="+20"/>
@ -1379,7 +1379,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished">Peruuta</translation> <translation>Peruuta</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1472,17 +1472,17 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Save video</source> <source>Save video</source>
<translation type="unfinished"></translation> <translation>Tallenna video</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Save audio</source> <source>Save audio</source>
<translation type="unfinished"></translation> <translation>Tallenna äänitiedosto</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Save file</source> <source>Save file</source>
<translation type="unfinished"></translation> <translation>Tallenna tiedosto</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location line="+228"/> <location line="+228"/>
@ -1556,7 +1556,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>%1 joined.</source> <source>%1 joined.</source>
<translation type="unfinished"></translation> <translation>%1 liittyi.</translation>
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
@ -1571,7 +1571,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>%1 left the room.</source> <source>%1 left the room.</source>
<translation type="unfinished"></translation> <translation>%1 poistui huoneesta.</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
@ -1596,7 +1596,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="-876"/> <location line="-876"/>
<source>You joined this room.</source> <source>You joined this room.</source>
<translation type="unfinished"></translation> <translation>Sinä liityit tähän huoneeseen.</translation>
</message> </message>
<message> <message>
<location line="+842"/> <location line="+842"/>
@ -1622,7 +1622,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+15"/> <location line="+15"/>
<source> Reason: %1</source> <source> Reason: %1</source>
<translation type="unfinished"></translation> <translation>Perustelu: %1</translation>
</message> </message>
<message> <message>
<location line="-5"/> <location line="-5"/>
@ -1635,7 +1635,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location filename="../qml/TimelineRow.qml" line="+106"/> <location filename="../qml/TimelineRow.qml" line="+106"/>
<source>Edited</source> <source>Edited</source>
<translation type="unfinished"></translation> <translation>Muokattu</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1643,27 +1643,27 @@ Example: https://server.my:8787</source>
<message> <message>
<location filename="../qml/TimelineView.qml" line="+125"/> <location filename="../qml/TimelineView.qml" line="+125"/>
<source>Copy</source> <source>Copy</source>
<translation type="unfinished"></translation> <translation>Kopioi</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Copy link location</source> <source>Copy link location</source>
<translation type="unfinished"></translation> <translation>Kopioi linkin sijainti</translation>
</message> </message>
<message> <message>
<location line="+8"/> <location line="+8"/>
<source>React</source> <source>React</source>
<translation type="unfinished"></translation> <translation>Reagoi</translation>
</message> </message>
<message> <message>
<location line="+8"/> <location line="+8"/>
<source>Reply</source> <source>Reply</source>
<translation type="unfinished"></translation> <translation>Vastaa</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Edit</source> <source>Edit</source>
<translation type="unfinished"></translation> <translation>Muokkaa</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
@ -1673,12 +1673,12 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+6"/> <location line="+6"/>
<source>Forward</source> <source>Forward</source>
<translation type="unfinished"></translation> <translation>Lähetä viesti eteenpäin</translation>
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
<source>Mark as read</source> <source>Mark as read</source>
<translation type="unfinished"></translation> <translation>Merkitse luetuksi</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
@ -1693,12 +1693,12 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+6"/> <location line="+6"/>
<source>Remove message</source> <source>Remove message</source>
<translation type="unfinished"></translation> <translation>Poista viesti</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Save as</source> <source>Save as</source>
<translation type="unfinished"></translation> <translation>Tallenna nimellä</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
@ -2148,7 +2148,7 @@ This usually causes the application icon in the task bar to animate in some fash
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Ringtone</source> <source>Ringtone</source>
<translation type="unfinished"></translation> <translation>Soittoääni</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
@ -2158,12 +2158,12 @@ This usually causes the application icon in the task bar to animate in some fash
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Microphone</source> <source>Microphone</source>
<translation type="unfinished"></translation> <translation>Mikrofoni</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Camera</source> <source>Camera</source>
<translation type="unfinished"></translation> <translation>Kamera</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>

View file

@ -6,33 +6,33 @@
<message> <message>
<location filename="../qml/voip/ActiveCallBar.qml" line="+106"/> <location filename="../qml/voip/ActiveCallBar.qml" line="+106"/>
<source>Calling...</source> <source>Calling...</source>
<translation type="unfinished"></translation> <translation>Sto chiamando</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location line="+10"/>
<location line="+10"/> <location line="+10"/>
<source>Connecting...</source> <source>Connecting...</source>
<translation type="unfinished"></translation> <translation>Connessione in corso...</translation>
</message> </message>
<message> <message>
<location line="+67"/> <location line="+67"/>
<source>You are screen sharing</source> <source>You are screen sharing</source>
<translation type="unfinished"></translation> <translation>Stai condividendo il tuo schermo</translation>
</message> </message>
<message> <message>
<location line="+17"/> <location line="+17"/>
<source>Hide/Show Picture-in-Picture</source> <source>Hide/Show Picture-in-Picture</source>
<translation type="unfinished"></translation> <translation>Nascondi/Mostra Picture-in-Picture</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>Unmute Mic</source> <source>Unmute Mic</source>
<translation type="unfinished"></translation> <translation>Attiva Microfono</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>Mute Mic</source> <source>Mute Mic</source>
<translation type="unfinished"></translation> <translation>Silenzia Microfono</translation>
</message> </message>
</context> </context>
<context> <context>
@ -40,12 +40,12 @@
<message> <message>
<location filename="../qml/device-verification/AwaitingVerificationConfirmation.qml" line="+11"/> <location filename="../qml/device-verification/AwaitingVerificationConfirmation.qml" line="+11"/>
<source>Awaiting Confirmation</source> <source>Awaiting Confirmation</source>
<translation type="unfinished"></translation> <translation>In attesa di conferma</translation>
</message> </message>
<message> <message>
<location line="+12"/> <location line="+12"/>
<source>Waiting for other side to complete verification.</source> <source>Waiting for other side to complete verification.</source>
<translation type="unfinished"></translation> <translation>In attesa della conferma dall&apos;altra parte per la verifica.</translation>
</message> </message>
<message> <message>
<location line="+12"/> <location line="+12"/>
@ -66,17 +66,17 @@
<message> <message>
<location filename="../qml/voip/CallInvite.qml" line="+70"/> <location filename="../qml/voip/CallInvite.qml" line="+70"/>
<source>Video Call</source> <source>Video Call</source>
<translation type="unfinished"></translation> <translation>Chiamata video</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>Voice Call</source> <source>Voice Call</source>
<translation type="unfinished"></translation> <translation>Chiamata vocale</translation>
</message> </message>
<message> <message>
<location line="+62"/> <location line="+62"/>
<source>No microphone found.</source> <source>No microphone found.</source>
<translation type="unfinished"></translation> <translation>Nessun microfono trovato.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -84,22 +84,22 @@
<message> <message>
<location filename="../qml/voip/CallInviteBar.qml" line="+64"/> <location filename="../qml/voip/CallInviteBar.qml" line="+64"/>
<source>Video Call</source> <source>Video Call</source>
<translation type="unfinished"></translation> <translation>Chiamata Video</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>Voice Call</source> <source>Voice Call</source>
<translation type="unfinished"></translation> <translation>Chiamata audio</translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+16"/>
<source>Devices</source> <source>Devices</source>
<translation type="unfinished">Dispositivi</translation> <translation>Dispositivi</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location line="+10"/>
<source>Accept</source> <source>Accept</source>
<translation type="unfinished">Accetta</translation> <translation>Accetta</translation>
</message> </message>
<message> <message>
<location line="+12"/> <location line="+12"/>
@ -114,12 +114,12 @@
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>Decline</source> <source>Decline</source>
<translation type="unfinished">Rifiuta</translation> <translation>Rifiuta</translation>
</message> </message>
<message> <message>
<location line="-28"/> <location line="-28"/>
<source>No microphone found.</source> <source>No microphone found.</source>
<translation type="unfinished"></translation> <translation>Nessun microfono trovato.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -151,12 +151,12 @@
<message> <message>
<location line="+412"/> <location line="+412"/>
<source>Confirm join</source> <source>Confirm join</source>
<translation type="unfinished"></translation> <translation>Conferma collegamento</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Do you really want to join %1?</source> <source>Do you really want to join %1?</source>
<translation type="unfinished"></translation> <translation>Vuoi davvero collegarti a %1?</translation>
</message> </message>
<message> <message>
<location line="+44"/> <location line="+44"/>
@ -167,12 +167,12 @@
<location line="+35"/> <location line="+35"/>
<location line="+324"/> <location line="+324"/>
<source>Confirm invite</source> <source>Confirm invite</source>
<translation type="unfinished"></translation> <translation>Conferma Invito</translation>
</message> </message>
<message> <message>
<location line="-323"/> <location line="-323"/>
<source>Do you really want to invite %1 (%2)?</source> <source>Do you really want to invite %1 (%2)?</source>
<translation type="unfinished"></translation> <translation>Vuoi davvero inviare %1 (%2)?</translation>
</message> </message>
<message> <message>
<location line="+11"/> <location line="+11"/>
@ -182,12 +182,12 @@
<message> <message>
<location line="+15"/> <location line="+15"/>
<source>Confirm kick</source> <source>Confirm kick</source>
<translation type="unfinished"></translation> <translation>Conferma l&apos;allontanamento</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Do you really want to kick %1 (%2)?</source> <source>Do you really want to kick %1 (%2)?</source>
<translation type="unfinished"></translation> <translation>Vuoi davvero allontanare %1 (%2)?</translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+16"/>
@ -197,12 +197,12 @@
<message> <message>
<location line="+10"/> <location line="+10"/>
<source>Confirm ban</source> <source>Confirm ban</source>
<translation type="unfinished"></translation> <translation>Conferma ban</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Do you really want to ban %1 (%2)?</source> <source>Do you really want to ban %1 (%2)?</source>
<translation type="unfinished"></translation> <translation>Vuoi veramente bannare %1 (%2)?</translation>
</message> </message>
<message> <message>
<location line="+11"/> <location line="+11"/>
@ -217,12 +217,12 @@
<message> <message>
<location line="+10"/> <location line="+10"/>
<source>Confirm unban</source> <source>Confirm unban</source>
<translation type="unfinished"></translation> <translation>Conferma reintegro</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Do you really want to unban %1 (%2)?</source> <source>Do you really want to unban %1 (%2)?</source>
<translation type="unfinished"></translation> <translation>Vuoi veramente reintegrare %1 (%2)?</translation>
</message> </message>
<message> <message>
<location line="+11"/> <location line="+11"/>
@ -303,7 +303,7 @@
<message> <message>
<location line="+61"/> <location line="+61"/>
<source>Failed to kick %1 from %2: %3</source> <source>Failed to kick %1 from %2: %3</source>
<translation type="unfinished"></translation> <translation>Fallita l&apos;espulsione di %1 da %2: %3</translation>
</message> </message>
</context> </context>
<context> <context>
@ -311,7 +311,7 @@
<message> <message>
<location filename="../../src/CommunitiesListItem.cpp" line="+30"/> <location filename="../../src/CommunitiesListItem.cpp" line="+30"/>
<source>Hide rooms with this tag or from this community</source> <source>Hide rooms with this tag or from this community</source>
<translation type="unfinished"></translation> <translation>Nascondi stanze con questo tag o di questa comunità</translation>
</message> </message>
<message> <message>
<location line="+153"/> <location line="+153"/>
@ -332,7 +332,7 @@
<location line="+2"/> <location line="+2"/>
<source>Server Notices</source> <source>Server Notices</source>
<comment>Tag translation for m.server_notice</comment> <comment>Tag translation for m.server_notice</comment>
<translation type="unfinished"></translation> <translation>Notifiche del server</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
@ -351,27 +351,27 @@
<message> <message>
<location filename="../../src/ChatPage.cpp" line="+228"/> <location filename="../../src/ChatPage.cpp" line="+228"/>
<source>Decrypt secrets</source> <source>Decrypt secrets</source>
<translation type="unfinished"></translation> <translation>Decifra i segreti</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Enter your recovery key or passphrase to decrypt your secrets:</source> <source>Enter your recovery key or passphrase to decrypt your secrets:</source>
<translation type="unfinished"></translation> <translation>Inserisci la chiave di recupero o la parola chiave per decriptare i tuoi segreti:</translation>
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>Enter your recovery key or passphrase called %1 to decrypt your secrets:</source> <source>Enter your recovery key or passphrase called %1 to decrypt your secrets:</source>
<translation type="unfinished"></translation> <translation>Inserisci la tua chiave di recupero o la parola chiave chiamata %1 per decifrare i tuoi segreti:</translation>
</message> </message>
<message> <message>
<location line="+17"/> <location line="+17"/>
<source>Decryption failed</source> <source>Decryption failed</source>
<translation type="unfinished"></translation> <translation>Decrittazione fallita</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Failed to decrypt secrets with the provided recovery key or passphrase</source> <source>Failed to decrypt secrets with the provided recovery key or passphrase</source>
<translation type="unfinished"></translation> <translation>Fallita la decrittazione usando la chiave di recupero o la parola chiave fornita</translation>
</message> </message>
</context> </context>
<context> <context>
@ -379,22 +379,22 @@
<message> <message>
<location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/>
<source>Verification Code</source> <source>Verification Code</source>
<translation type="unfinished"></translation> <translation>Codice di verifica</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location line="+10"/>
<source>Please verify the following digits. You should see the same numbers on both sides. If they differ, please press &apos;They do not match!&apos; to abort verification!</source> <source>Please verify the following digits. You should see the same numbers on both sides. If they differ, please press &apos;They do not match!&apos; to abort verification!</source>
<translation type="unfinished"></translation> <translation>Verificare i seguenti numeri. Dovresti vedere gli stessi numeri da entrambi i lati. Se differiscono, premi &apos;Sono diversi!&apos; per annullare la verifica!</translation>
</message> </message>
<message> <message>
<location line="+31"/> <location line="+31"/>
<source>They do not match!</source> <source>They do not match!</source>
<translation type="unfinished"></translation> <translation>Non corrispondono!</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>They match!</source> <source>They match!</source>
<translation type="unfinished"></translation> <translation>Corrispondono!</translation>
</message> </message>
</context> </context>
<context> <context>
@ -425,7 +425,7 @@
<message> <message>
<location filename="../qml/emoji/EmojiPicker.qml" line="+59"/> <location filename="../qml/emoji/EmojiPicker.qml" line="+59"/>
<source>Search</source> <source>Search</source>
<translation type="unfinished"></translation> <translation>Cerca</translation>
</message> </message>
<message> <message>
<location line="+172"/> <location line="+172"/>
@ -435,7 +435,7 @@
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Nature</source> <source>Nature</source>
<translation type="unfinished"></translation> <translation>Natura</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
@ -445,27 +445,27 @@
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Activity</source> <source>Activity</source>
<translation type="unfinished">Attività</translation> <translation>Attività</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Travel</source> <source>Travel</source>
<translation type="unfinished"></translation> <translation>Viaggi</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Objects</source> <source>Objects</source>
<translation type="unfinished">Oggetti</translation> <translation>Oggetti</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Symbols</source> <source>Symbols</source>
<translation type="unfinished">Simboli</translation> <translation>Simboli</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Flags</source> <source>Flags</source>
<translation type="unfinished">Bandiere</translation> <translation>Bandiere</translation>
</message> </message>
</context> </context>
<context> <context>
@ -473,7 +473,7 @@
<message> <message>
<location filename="../qml/device-verification/EmojiVerification.qml" line="+11"/> <location filename="../qml/device-verification/EmojiVerification.qml" line="+11"/>
<source>Verification Code</source> <source>Verification Code</source>
<translation type="unfinished"></translation> <translation>Codice di Verifica</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location line="+10"/>
@ -483,12 +483,12 @@
<message> <message>
<location line="+376"/> <location line="+376"/>
<source>They do not match!</source> <source>They do not match!</source>
<translation type="unfinished"></translation> <translation>Non corrispondono!</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>They match!</source> <source>They match!</source>
<translation type="unfinished"></translation> <translation>Corrispondono!</translation>
</message> </message>
</context> </context>
<context> <context>
@ -496,22 +496,22 @@
<message> <message>
<location filename="../qml/EncryptionIndicator.qml" line="+34"/> <location filename="../qml/EncryptionIndicator.qml" line="+34"/>
<source>This message is not encrypted!</source> <source>This message is not encrypted!</source>
<translation>Questo messaggio è in chiaro!</translation> <translation>Questo messaggio non è crittato!</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Encrypted by a verified device</source> <source>Encrypted by a verified device</source>
<translation type="unfinished"></translation> <translation>Criptato da un dispositivo verificato</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Encrypted by an unverified device, but you have trusted that user so far.</source> <source>Encrypted by an unverified device, but you have trusted that user so far.</source>
<translation type="unfinished"></translation> <translation>Criptato da un dispositivo non verificato ma hai già verificato questo utente.</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Encrypted by an unverified device</source> <source>Encrypted by an unverified device</source>
<translation type="unfinished"></translation> <translation>Criptato da un dispositivo non verificato</translation>
</message> </message>
</context> </context>
<context> <context>
@ -520,13 +520,13 @@
<location filename="../../src/timeline/EventStore.cpp" line="+616"/> <location filename="../../src/timeline/EventStore.cpp" line="+616"/>
<source>-- Encrypted Event (No keys found for decryption) --</source> <source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment> <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation type="unfinished">-- Evento Criptato (Chiavi per la decriptazione non trovate) --</translation> <translation>-- Evento Criptato (Nessuna chiave privata per la decriptazione) --</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>-- Encrypted Event (Key not valid for this index) --</source> <source>-- Encrypted Event (Key not valid for this index) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted with this key since it is not valid for this index </comment> <comment>Placeholder, when the message can&apos;t be decrypted with this key since it is not valid for this index </comment>
<translation type="unfinished"></translation> <translation>-- Evento Criptato (Chiave non valida per questo indice) --</translation>
</message> </message>
<message> <message>
<location line="+32"/> <location line="+32"/>
@ -1024,7 +1024,7 @@ Esempio: https://server.mio:8787</translation>
<message> <message>
<location filename="../qml/delegates/Placeholder.qml" line="+8"/> <location filename="../qml/delegates/Placeholder.qml" line="+8"/>
<source>unimplemented event: </source> <source>unimplemented event: </source>
<translation>event non implementato: </translation> <translation>evento non implementato: </translation>
</message> </message>
</context> </context>
<context> <context>
@ -1157,7 +1157,7 @@ Esempio: https://server.mio:8787</translation>
<location line="+3"/> <location line="+3"/>
<source>Low Priority</source> <source>Low Priority</source>
<comment>Standard matrix tag for low priority rooms</comment> <comment>Standard matrix tag for low priority rooms</comment>
<translation>bassa priorità</translation> <translation>Tag matrix standard per stanze a bassa priorità</translation>
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
@ -1181,7 +1181,7 @@ Esempio: https://server.mio:8787</translation>
<location line="+4"/> <location line="+4"/>
<source>New Tag</source> <source>New Tag</source>
<comment>Tag name prompt title</comment> <comment>Tag name prompt title</comment>
<translation type="unfinished"></translation> <translation>Nome del tag</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
@ -1520,12 +1520,12 @@ Esempio: https://server.mio:8787</translation>
<message> <message>
<location line="+23"/> <location line="+23"/>
<source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source>
<translation>%1 ha reso la cronologia della stanza leggibile da tutti. Gli eventi adesso possono essere letti da persone esterne. </translation> <translation>%1 ha reso la cronologia della stanza leggibile da tutti. Gli eventi adesso possono essere letti da persone esterne.</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>%1 set the room history visible to members from this point on.</source> <source>%1 set the room history visible to members from this point on.</source>
<translation>%1 ha reso la cronologia della stanza visibile ai membri da questo momento in poi. </translation> <translation>%1 ha reso la cronologia della stanza visibile ai membri da questo momento in poi.</translation>
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
@ -2449,7 +2449,7 @@ This usually causes the application icon in the task bar to animate in some fash
<message> <message>
<location filename="../../src/dialogs/FallbackAuth.cpp" line="+34"/> <location filename="../../src/dialogs/FallbackAuth.cpp" line="+34"/>
<source>Open Fallback in Browser</source> <source>Open Fallback in Browser</source>
<translation>Apertura di Ripiego nel Browser </translation> <translation>Apertura di Ripiego nel Browser</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>

File diff suppressed because it is too large Load diff

View file

@ -17,12 +17,12 @@
<message> <message>
<location line="+67"/> <location line="+67"/>
<source>You are screen sharing</source> <source>You are screen sharing</source>
<translation type="unfinished"></translation> <translation>Вы демонстрируете экран</translation>
</message> </message>
<message> <message>
<location line="+17"/> <location line="+17"/>
<source>Hide/Show Picture-in-Picture</source> <source>Hide/Show Picture-in-Picture</source>
<translation type="unfinished"></translation> <translation>Убрать/Показать Картинку-в-Картинке</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+13"/>
@ -84,42 +84,42 @@
<message> <message>
<location filename="../qml/voip/CallInviteBar.qml" line="+64"/> <location filename="../qml/voip/CallInviteBar.qml" line="+64"/>
<source>Video Call</source> <source>Video Call</source>
<translation type="unfinished">Видео Звонок</translation> <translation>Видео Звонок</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>Voice Call</source> <source>Voice Call</source>
<translation type="unfinished">Голосовой Звонок</translation> <translation>Голосовой Звонок</translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+16"/>
<source>Devices</source> <source>Devices</source>
<translation type="unfinished">Устройства</translation> <translation>Устройства</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location line="+10"/>
<source>Accept</source> <source>Accept</source>
<translation type="unfinished">Принять</translation> <translation>Принять</translation>
</message> </message>
<message> <message>
<location line="+12"/> <location line="+12"/>
<source>Unknown microphone: %1</source> <source>Unknown microphone: %1</source>
<translation type="unfinished"></translation> <translation>Неизвестный микрофон: %1</translation>
</message> </message>
<message> <message>
<location line="+8"/> <location line="+8"/>
<source>Unknown camera: %1</source> <source>Unknown camera: %1</source>
<translation type="unfinished"></translation> <translation>Неизвестная камера: %1</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>Decline</source> <source>Decline</source>
<translation type="unfinished">Отказаться</translation> <translation>Отказаться</translation>
</message> </message>
<message> <message>
<location line="-28"/> <location line="-28"/>
<source>No microphone found.</source> <source>No microphone found.</source>
<translation type="unfinished">Микрофон не найден.</translation> <translation>Микрофон не найден.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -127,7 +127,7 @@
<message> <message>
<location filename="../../src/CallManager.cpp" line="+521"/> <location filename="../../src/CallManager.cpp" line="+521"/>
<source>Entire screen</source> <source>Entire screen</source>
<translation type="unfinished"></translation> <translation>Весь экран</translation>
</message> </message>
</context> </context>
<context> <context>
@ -151,12 +151,12 @@
<message> <message>
<location line="+412"/> <location line="+412"/>
<source>Confirm join</source> <source>Confirm join</source>
<translation type="unfinished"></translation> <translation>Подтвердить вход</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Do you really want to join %1?</source> <source>Do you really want to join %1?</source>
<translation type="unfinished"></translation> <translation>Вы действительно хотите присоединиться?</translation>
</message> </message>
<message> <message>
<location line="+44"/> <location line="+44"/>
@ -237,7 +237,7 @@
<message> <message>
<location line="+227"/> <location line="+227"/>
<source>Do you really want to start a private chat with %1?</source> <source>Do you really want to start a private chat with %1?</source>
<translation type="unfinished"></translation> <translation>Вы действительно хотите начать личную переписку с %1?</translation>
</message> </message>
<message> <message>
<location line="-818"/> <location line="-818"/>
@ -303,7 +303,7 @@
<message> <message>
<location line="+61"/> <location line="+61"/>
<source>Failed to kick %1 from %2: %3</source> <source>Failed to kick %1 from %2: %3</source>
<translation type="unfinished"></translation> <translation>Не удалось выгнать %1 из %2: %3</translation>
</message> </message>
</context> </context>
<context> <context>
@ -351,27 +351,27 @@
<message> <message>
<location filename="../../src/ChatPage.cpp" line="+228"/> <location filename="../../src/ChatPage.cpp" line="+228"/>
<source>Decrypt secrets</source> <source>Decrypt secrets</source>
<translation type="unfinished"></translation> <translation>Расшифровать секреты</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Enter your recovery key or passphrase to decrypt your secrets:</source> <source>Enter your recovery key or passphrase to decrypt your secrets:</source>
<translation type="unfinished"></translation> <translation>Введите свой ключ восстановления или пароль для расшифровки секретов: </translation>
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>Enter your recovery key or passphrase called %1 to decrypt your secrets:</source> <source>Enter your recovery key or passphrase called %1 to decrypt your secrets:</source>
<translation type="unfinished"></translation> <translation>Введите свой ключ восстановления или пароль названный %1 для расшифровки Ваших секретов:</translation>
</message> </message>
<message> <message>
<location line="+17"/> <location line="+17"/>
<source>Decryption failed</source> <source>Decryption failed</source>
<translation type="unfinished"></translation> <translation>Расшифровка не удалась</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Failed to decrypt secrets with the provided recovery key or passphrase</source> <source>Failed to decrypt secrets with the provided recovery key or passphrase</source>
<translation type="unfinished"></translation> <translation>Не удалось расшифровать секреты с помощью предоставленного ключа восстановления или пароля.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -501,17 +501,17 @@
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Encrypted by a verified device</source> <source>Encrypted by a verified device</source>
<translation type="unfinished"></translation> <translation>Зашифровано верефицированым устройством</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Encrypted by an unverified device, but you have trusted that user so far.</source> <source>Encrypted by an unverified device, but you have trusted that user so far.</source>
<translation type="unfinished"></translation> <translation>Зашифрованно неверефицированым устройством, но Вы все еще доверяете этому пользователю.</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Encrypted by an unverified device</source> <source>Encrypted by an unverified device</source>
<translation type="unfinished"></translation> <translation>Зашифровано неверифицированым устройства</translation>
</message> </message>
</context> </context>
<context> <context>
@ -520,20 +520,20 @@
<location filename="../../src/timeline/EventStore.cpp" line="+616"/> <location filename="../../src/timeline/EventStore.cpp" line="+616"/>
<source>-- Encrypted Event (No keys found for decryption) --</source> <source>-- Encrypted Event (No keys found for decryption) --</source>
<comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment> <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted.</comment>
<translation>-- Зашифрованное событие (Нет найдено ключей для дешифрования) --</translation> <translation>-- Зашифрованное событие (Не найдено ключей для дешифрования) --</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>-- Encrypted Event (Key not valid for this index) --</source> <source>-- Encrypted Event (Key not valid for this index) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted with this key since it is not valid for this index </comment> <comment>Placeholder, when the message can&apos;t be decrypted with this key since it is not valid for this index </comment>
<translation type="unfinished"></translation> <translation>-- Зашифрованное событие(Не найдено ключей для дешифрования) --</translation>
</message> </message>
<message> <message>
<location line="+32"/> <location line="+32"/>
<location line="+63"/> <location line="+63"/>
<source>-- Decryption Error (failed to retrieve megolm keys from db) --</source> <source>-- Decryption Error (failed to retrieve megolm keys from db) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed.</comment> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed.</comment>
<translation>-- Ошибка дешифрования (Не удалось получить megolm-ключи для бд) --</translation> <translation>-- Ошибка дешифрования (Не удалось получить megolm-ключи из бд) --</translation>
</message> </message>
<message> <message>
<location line="-49"/> <location line="-49"/>
@ -598,7 +598,7 @@
<message> <message>
<location filename="../qml/ForwardCompleter.qml" line="+44"/> <location filename="../qml/ForwardCompleter.qml" line="+44"/>
<source>Forward Message</source> <source>Forward Message</source>
<translation type="unfinished"></translation> <translation>Переслать Сообщение</translation>
</message> </message>
</context> </context>
<context> <context>
@ -658,7 +658,7 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Your password.</source> <source>Your password.</source>
<translation type="unfinished"></translation> <translation>Ваш пароль.</translation>
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
@ -673,12 +673,12 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Homeserver address</source> <source>Homeserver address</source>
<translation type="unfinished"></translation> <translation>Адрес домашнего сервера</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>server.my:8787</source> <source>server.my:8787</source>
<translation type="unfinished"></translation> <translation>server.my:8787</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
@ -698,7 +698,7 @@ Example: https://server.my:8787</source>
<location line="+160"/> <location line="+160"/>
<location line="+11"/> <location line="+11"/>
<source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source>
<translation type="unfinished"></translation> <translation>Вы ввели не правильный Matrix ID, @joe:matrix.org</translation>
</message> </message>
<message> <message>
<location line="-132"/> <location line="-132"/>
@ -858,7 +858,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+11"/> <location line="+11"/>
<source>You don&apos;t have permission to send messages in this room</source> <source>You don&apos;t have permission to send messages in this room</source>
<translation type="unfinished"></translation> <translation>У вас нет прав для отправления сообщений в этой комнате</translation>
</message> </message>
</context> </context>
<context> <context>
@ -866,22 +866,22 @@ Example: https://server.my:8787</source>
<message> <message>
<location filename="../qml/MessageView.qml" line="+82"/> <location filename="../qml/MessageView.qml" line="+82"/>
<source>Edit</source> <source>Edit</source>
<translation type="unfinished"></translation> <translation>Редактировать</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+15"/>
<source>React</source> <source>React</source>
<translation type="unfinished">Отреагировать</translation> <translation>Реакция</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>Reply</source> <source>Reply</source>
<translation type="unfinished">Ответить</translation> <translation>Ответить</translation>
</message> </message>
<message> <message>
<location line="+11"/> <location line="+11"/>
<source>Options</source> <source>Options</source>
<translation type="unfinished">Опции</translation> <translation>Опции</translation>
</message> </message>
</context> </context>
<context> <context>
@ -889,12 +889,12 @@ Example: https://server.my:8787</source>
<message> <message>
<location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/>
<source>Send Verification Request</source> <source>Send Verification Request</source>
<translation type="unfinished"></translation> <translation>Отправить Запрос Верификации</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>Received Verification Request</source> <source>Received Verification Request</source>
<translation type="unfinished"></translation> <translation>Получен Запрос Верификации</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+15"/>
@ -949,7 +949,7 @@ Example: https://server.my:8787</source>
<location filename="../../src/notifications/ManagerMac.cpp" line="+44"/> <location filename="../../src/notifications/ManagerMac.cpp" line="+44"/>
<location filename="../../src/notifications/ManagerWin.cpp" line="+78"/> <location filename="../../src/notifications/ManagerWin.cpp" line="+78"/>
<source>%1 sent an encrypted message</source> <source>%1 sent an encrypted message</source>
<translation type="unfinished">%1 отправил зашифрованное сообщение</translation> <translation>%1 отправил зашифрованное сообщение</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
@ -973,17 +973,17 @@ Example: https://server.my:8787</source>
<location filename="../../src/notifications/ManagerMac.cpp" line="-1"/> <location filename="../../src/notifications/ManagerMac.cpp" line="-1"/>
<location filename="../../src/notifications/ManagerWin.cpp" line="-1"/> <location filename="../../src/notifications/ManagerWin.cpp" line="-1"/>
<source>%1 replied with an encrypted message</source> <source>%1 replied with an encrypted message</source>
<translation type="unfinished"></translation> <translation>%1 ответил зашифрованным сообщением</translation>
</message> </message>
<message> <message>
<location line="+6"/> <location line="+6"/>
<source>%1 replied to a message</source> <source>%1 replied to a message</source>
<translation type="unfinished"></translation> <translation>%1 ответил на сообщение</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>%1 sent a message</source> <source>%1 sent a message</source>
<translation type="unfinished"></translation> <translation>%1 отправил сообщениe</translation>
</message> </message>
</context> </context>
<context> <context>
@ -991,32 +991,32 @@ Example: https://server.my:8787</source>
<message> <message>
<location filename="../qml/voip/PlaceCall.qml" line="+48"/> <location filename="../qml/voip/PlaceCall.qml" line="+48"/>
<source>Place a call to %1?</source> <source>Place a call to %1?</source>
<translation type="unfinished"></translation> <translation>Позвонить %1?</translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+16"/>
<source>No microphone found.</source> <source>No microphone found.</source>
<translation type="unfinished">Микрофон не найден.</translation> <translation>Микрофон не найден.</translation>
</message> </message>
<message> <message>
<location line="+22"/> <location line="+22"/>
<source>Voice</source> <source>Voice</source>
<translation type="unfinished"></translation> <translation>Голос</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>Video</source> <source>Video</source>
<translation type="unfinished"></translation> <translation>Видео</translation>
</message> </message>
<message> <message>
<location line="+14"/> <location line="+14"/>
<source>Screen</source> <source>Screen</source>
<translation type="unfinished"></translation> <translation>Экран</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location line="+10"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation>Отмена</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1124,7 +1124,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>Cancel edit</source> <source>Cancel edit</source>
<translation type="unfinished"></translation> <translation>Отменить редактирование</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1205,62 +1205,62 @@ Example: https://server.my:8787</source>
<message> <message>
<location filename="../qml/RoomSettings.qml" line="+25"/> <location filename="../qml/RoomSettings.qml" line="+25"/>
<source>Room Settings</source> <source>Room Settings</source>
<translation type="unfinished"></translation> <translation>Настройки комнаты</translation>
</message> </message>
<message> <message>
<location line="+79"/> <location line="+79"/>
<source>%1 member(s)</source> <source>%1 member(s)</source>
<translation type="unfinished"></translation> <translation>%1 участник(ов)</translation>
</message> </message>
<message> <message>
<location line="+43"/> <location line="+43"/>
<source>SETTINGS</source> <source>SETTINGS</source>
<translation type="unfinished"></translation> <translation>НАЙСТРОЙКИ</translation>
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
<source>Notifications</source> <source>Notifications</source>
<translation type="unfinished"></translation> <translation>Уведомления</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>Muted</source> <source>Muted</source>
<translation type="unfinished"></translation> <translation>Заглушен</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>Mentions only</source> <source>Mentions only</source>
<translation type="unfinished"></translation> <translation>Упоминания только</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>All messages</source> <source>All messages</source>
<translation type="unfinished"></translation> <translation>Все сообщения</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+15"/>
<source>Anyone and guests</source> <source>Anyone and guests</source>
<translation type="unfinished"></translation> <translation>Каждый и гости</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>Anyone</source> <source>Anyone</source>
<translation type="unfinished"></translation> <translation>Каждый</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>Invited users</source> <source>Invited users</source>
<translation type="unfinished"></translation> <translation>Приглашённые пользователи</translation>
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
<source>Encryption</source> <source>Encryption</source>
<translation type="unfinished"></translation> <translation>Шифрование</translation>
</message> </message>
<message> <message>
<location line="+20"/> <location line="+20"/>
<source>End-to-End Encryption</source> <source>End-to-End Encryption</source>
<translation type="unfinished">Сквозное шифрование</translation> <translation>Оконечное шифрование</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
@ -1271,7 +1271,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+17"/> <location line="+17"/>
<source>Respond to key requests</source> <source>Respond to key requests</source>
<translation type="unfinished"></translation> <translation>Отвечать на запрос ключей</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
@ -1283,53 +1283,53 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+21"/> <location line="+21"/>
<source>INFO</source> <source>INFO</source>
<translation type="unfinished"></translation> <translation>ИНФОРМАЦИЯ</translation>
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
<source>Internal ID</source> <source>Internal ID</source>
<translation type="unfinished"></translation> <translation>Внутренний ID</translation>
</message> </message>
<message> <message>
<location line="+10"/> <location line="+10"/>
<source>Room Version</source> <source>Room Version</source>
<translation type="unfinished"></translation> <translation>Версия Комнаты</translation>
</message> </message>
<message> <message>
<location line="+13"/> <location line="+13"/>
<source>OK</source> <source>OK</source>
<translation type="unfinished">ОК</translation> <translation>ОК</translation>
</message> </message>
<message> <message>
<location filename="../../src/ui/RoomSettings.cpp" line="+268"/> <location filename="../../src/ui/RoomSettings.cpp" line="+268"/>
<source>Failed to enable encryption: %1</source> <source>Failed to enable encryption: %1</source>
<translation type="unfinished">Не удалось включить шифрование: %1</translation> <translation>Не удалось включить шифрование: %1</translation>
</message> </message>
<message> <message>
<location line="+228"/> <location line="+228"/>
<source>Select an avatar</source> <source>Select an avatar</source>
<translation type="unfinished">Выберите аватар</translation> <translation>Выберите аватар</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>All Files (*)</source> <source>All Files (*)</source>
<translation type="unfinished">Все файлы (*)</translation> <translation>Все файлы (*)</translation>
</message> </message>
<message> <message>
<location line="+12"/> <location line="+12"/>
<source>The selected file is not an image</source> <source>The selected file is not an image</source>
<translation type="unfinished">Выбранный файл не является картинкой</translation> <translation>Выбранный файл не является картинкой</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>Error while reading file: %1</source> <source>Error while reading file: %1</source>
<translation type="unfinished">Ошибка во время прочтения файла: %1</translation> <translation>Ошибка во время прочтения файла: %1</translation>
</message> </message>
<message> <message>
<location line="+34"/> <location line="+34"/>
<location line="+20"/> <location line="+20"/>
<source>Failed to upload image: %s</source> <source>Failed to upload image: %s</source>
<translation type="unfinished">Не удалось загрузить изображение: %s</translation> <translation>Не удалось загрузить изображение: %s</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1337,27 +1337,27 @@ Example: https://server.my:8787</source>
<message> <message>
<location filename="../qml/voip/ScreenShare.qml" line="+30"/> <location filename="../qml/voip/ScreenShare.qml" line="+30"/>
<source>Share desktop with %1?</source> <source>Share desktop with %1?</source>
<translation type="unfinished"></translation> <translation>Поделиться экраном с %1?</translation>
</message> </message>
<message> <message>
<location line="+11"/> <location line="+11"/>
<source>Window:</source> <source>Window:</source>
<translation type="unfinished"></translation> <translation>Окно:</translation>
</message> </message>
<message> <message>
<location line="+20"/> <location line="+20"/>
<source>Frame rate:</source> <source>Frame rate:</source>
<translation type="unfinished"></translation> <translation>Частота кадров:</translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+19"/>
<source>Include your camera picture-in-picture</source> <source>Include your camera picture-in-picture</source>
<translation type="unfinished"></translation> <translation>Включить Вашу камеру в режиме картинка-в-картинке</translation>
</message> </message>
<message> <message>
<location line="+12"/> <location line="+12"/>
<source>Request remote camera</source> <source>Request remote camera</source>
<translation type="unfinished"></translation> <translation>Запросить удалённую камеру</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
@ -1368,22 +1368,22 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>Hide mouse cursor</source> <source>Hide mouse cursor</source>
<translation type="unfinished"></translation> <translation>Спрятать курсор мыши</translation>
</message> </message>
<message> <message>
<location line="+20"/> <location line="+20"/>
<source>Share</source> <source>Share</source>
<translation type="unfinished"></translation> <translation>Поделиться</translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+19"/>
<source>Preview</source> <source>Preview</source>
<translation type="unfinished"></translation> <translation>Предпросмотр</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Cancel</source> <source>Cancel</source>
<translation type="unfinished"></translation> <translation>Отмена</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1640,7 +1640,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location filename="../qml/TimelineRow.qml" line="+106"/> <location filename="../qml/TimelineRow.qml" line="+106"/>
<source>Edited</source> <source>Edited</source>
<translation type="unfinished"></translation> <translation>Изменено</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1648,12 +1648,12 @@ Example: https://server.my:8787</source>
<message> <message>
<location filename="../qml/TimelineView.qml" line="+125"/> <location filename="../qml/TimelineView.qml" line="+125"/>
<source>Copy</source> <source>Copy</source>
<translation type="unfinished"></translation> <translation>Копировать</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Copy link location</source> <source>Copy link location</source>
<translation type="unfinished"></translation> <translation>Скопировать ссылку</translation>
</message> </message>
<message> <message>
<location line="+8"/> <location line="+8"/>
@ -1668,7 +1668,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Edit</source> <source>Edit</source>
<translation type="unfinished"></translation> <translation>Редактировать</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
@ -1678,7 +1678,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+6"/> <location line="+6"/>
<source>Forward</source> <source>Forward</source>
<translation type="unfinished"></translation> <translation>Переслать</translation>
</message> </message>
<message> <message>
<location line="+9"/> <location line="+9"/>
@ -1708,12 +1708,12 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Open in external program</source> <source>Open in external program</source>
<translation type="unfinished"></translation> <translation>Открыть вo сторонней программе</translation>
</message> </message>
<message> <message>
<location line="+7"/> <location line="+7"/>
<source>Copy link to event</source> <source>Copy link to event</source>
<translation type="unfinished"></translation> <translation>Скопировать ссылку на событие</translation>
</message> </message>
<message> <message>
<location line="+57"/> <location line="+57"/>
@ -1806,7 +1806,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+8"/> <location line="+8"/>
<source>User Profile Settings</source> <source>User Profile Settings</source>
<translation type="unfinished"></translation> <translation>Настройки пользовательского профиля</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
@ -1834,12 +1834,12 @@ Example: https://server.my:8787</source>
<message> <message>
<location filename="../qml/UserProfile.qml" line="+24"/> <location filename="../qml/UserProfile.qml" line="+24"/>
<source>Global User Profile</source> <source>Global User Profile</source>
<translation type="unfinished"></translation> <translation>Глобальный Пользовательский Профиль</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>Room User Profile</source> <source>Room User Profile</source>
<translation type="unfinished"></translation> <translation>Поользовательский Профиль в Комнате</translation>
</message> </message>
<message> <message>
<location line="+114"/> <location line="+114"/>
@ -1865,27 +1865,27 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+63"/> <location line="+63"/>
<source>Unverify</source> <source>Unverify</source>
<translation type="unfinished"></translation> <translation>Отменить Верификацию</translation>
</message> </message>
<message> <message>
<location filename="../../src/ui/UserProfile.cpp" line="+301"/> <location filename="../../src/ui/UserProfile.cpp" line="+301"/>
<source>Select an avatar</source> <source>Select an avatar</source>
<translation type="unfinished">Выберите аватар</translation> <translation>Выберите аватар</translation>
</message> </message>
<message> <message>
<location line="+0"/> <location line="+0"/>
<source>All Files (*)</source> <source>All Files (*)</source>
<translation type="unfinished">Все файлы (*)</translation> <translation>Все файлы (*)</translation>
</message> </message>
<message> <message>
<location line="+12"/> <location line="+12"/>
<source>The selected file is not an image</source> <source>The selected file is not an image</source>
<translation type="unfinished">Выбранный файл не является картинкой</translation> <translation>Выбранный файл не является картинкой</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+5"/>
<source>Error while reading file: %1</source> <source>Error while reading file: %1</source>
<translation type="unfinished">Ошибка во время прочтения файла: %1</translation> <translation>Ошибка во время прочтения файла: %1</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1894,7 +1894,7 @@ Example: https://server.my:8787</source>
<location filename="../../src/UserSettingsPage.cpp" line="+340"/> <location filename="../../src/UserSettingsPage.cpp" line="+340"/>
<location filename="../../src/UserSettingsPage.h" line="+186"/> <location filename="../../src/UserSettingsPage.h" line="+186"/>
<source>Default</source> <source>Default</source>
<translation type="unfinished"></translation> <translation>По умолчанию</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1927,7 +1927,7 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+96"/> <location line="+96"/>
<source>Default</source> <source>Default</source>
<translation type="unfinished"></translation> <translation>По умолчанию</translation>
</message> </message>
<message> <message>
<location line="+31"/> <location line="+31"/>
@ -1942,12 +1942,12 @@ Example: https://server.my:8787</source>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>REQUEST</source> <source>REQUEST</source>
<translation type="unfinished"></translation> <translation>ЗАПРОС</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>DOWNLOAD</source> <source>DOWNLOAD</source>
<translation type="unfinished"></translation> <translation>СКАЧАТЬ</translation>
</message> </message>
<message> <message>
<location line="+27"/> <location line="+27"/>
@ -1984,7 +1984,7 @@ Only affects messages in encrypted chats.</source>
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Privacy Screen</source> <source>Privacy Screen</source>
<translation type="unfinished"></translation> <translation>Приватное Окно</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>
@ -2123,12 +2123,12 @@ This usually causes the application icon in the task bar to animate in some fash
<message> <message>
<location line="+406"/> <location line="+406"/>
<source>CACHED</source> <source>CACHED</source>
<translation type="unfinished"></translation> <translation>Закешировано</translation>
</message> </message>
<message> <message>
<location line="+6"/> <location line="+6"/>
<source>NOT CACHED</source> <source>NOT CACHED</source>
<translation type="unfinished"></translation> <translation>НЕ ЗАКЕШИРОВАНО</translation>
</message> </message>
<message> <message>
<location line="-460"/> <location line="-460"/>
@ -2288,7 +2288,7 @@ This usually causes the application icon in the task bar to animate in some fash
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>Backup key</source> <source>Backup key</source>
<translation type="unfinished"></translation> <translation>Ключ восстановления</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="+2"/>

View file

@ -448,14 +448,14 @@ ScrollView {
Platform.MenuItem { Platform.MenuItem {
visible: messageContextMenu.text visible: messageContextMenu.text
enabled: visible enabled: visible
text: qsTr("Copy") text: qsTr("&Copy")
onTriggered: Clipboard.text = messageContextMenu.text onTriggered: Clipboard.text = messageContextMenu.text
} }
Platform.MenuItem { Platform.MenuItem {
visible: messageContextMenu.link visible: messageContextMenu.link
enabled: visible enabled: visible
text: qsTr("Copy link location") text: qsTr("Copy &link location")
onTriggered: Clipboard.text = messageContextMenu.link onTriggered: Clipboard.text = messageContextMenu.link
} }
@ -463,7 +463,7 @@ ScrollView {
id: reactionOption id: reactionOption
visible: room ? room.permissions.canSend(MtxEvent.Reaction) : false visible: room ? room.permissions.canSend(MtxEvent.Reaction) : false
text: qsTr("React") text: qsTr("Re&act")
onTriggered: emojiPopup.show(null, function(emoji) { onTriggered: emojiPopup.show(null, function(emoji) {
room.input.reaction(messageContextMenu.eventId, emoji); room.input.reaction(messageContextMenu.eventId, emoji);
}) })
@ -471,25 +471,25 @@ ScrollView {
Platform.MenuItem { Platform.MenuItem {
visible: room ? room.permissions.canSend(MtxEvent.TextMessage) : false visible: room ? room.permissions.canSend(MtxEvent.TextMessage) : false
text: qsTr("Reply") text: qsTr("Repl&y")
onTriggered: room.replyAction(messageContextMenu.eventId) onTriggered: room.replyAction(messageContextMenu.eventId)
} }
Platform.MenuItem { Platform.MenuItem {
visible: messageContextMenu.isEditable && (room ? room.permissions.canSend(MtxEvent.TextMessage) : false) visible: messageContextMenu.isEditable && (room ? room.permissions.canSend(MtxEvent.TextMessage) : false)
enabled: visible enabled: visible
text: qsTr("Edit") text: qsTr("&Edit")
onTriggered: room.editAction(messageContextMenu.eventId) onTriggered: room.editAction(messageContextMenu.eventId)
} }
Platform.MenuItem { Platform.MenuItem {
text: qsTr("Read receipts") text: qsTr("Read receip&ts")
onTriggered: room.readReceiptsAction(messageContextMenu.eventId) onTriggered: room.readReceiptsAction(messageContextMenu.eventId)
} }
Platform.MenuItem { 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 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: { onTriggered: {
var forwardMess = forwardCompleterComponent.createObject(timelineRoot); var forwardMess = forwardCompleterComponent.createObject(timelineRoot);
forwardMess.setMessageEventId(messageContextMenu.eventId); forwardMess.setMessageEventId(messageContextMenu.eventId);
@ -498,7 +498,7 @@ ScrollView {
} }
Platform.MenuItem { Platform.MenuItem {
text: qsTr("Mark as read") text: qsTr("&Mark as read")
} }
Platform.MenuItem { Platform.MenuItem {
@ -516,28 +516,28 @@ ScrollView {
Platform.MenuItem { Platform.MenuItem {
visible: (room ? room.permissions.canRedact() : false) || messageContextMenu.isSender visible: (room ? room.permissions.canRedact() : false) || messageContextMenu.isSender
text: qsTr("Remove message") text: qsTr("Remo&ve message")
onTriggered: room.redactEvent(messageContextMenu.eventId) onTriggered: room.redactEvent(messageContextMenu.eventId)
} }
Platform.MenuItem { Platform.MenuItem {
visible: messageContextMenu.eventType == MtxEvent.ImageMessage || messageContextMenu.eventType == MtxEvent.VideoMessage || messageContextMenu.eventType == MtxEvent.AudioMessage || messageContextMenu.eventType == MtxEvent.FileMessage || messageContextMenu.eventType == MtxEvent.Sticker visible: messageContextMenu.eventType == MtxEvent.ImageMessage || messageContextMenu.eventType == MtxEvent.VideoMessage || messageContextMenu.eventType == MtxEvent.AudioMessage || messageContextMenu.eventType == MtxEvent.FileMessage || messageContextMenu.eventType == MtxEvent.Sticker
enabled: visible enabled: visible
text: qsTr("Save as") text: qsTr("&Save as")
onTriggered: room.saveMedia(messageContextMenu.eventId) onTriggered: room.saveMedia(messageContextMenu.eventId)
} }
Platform.MenuItem { Platform.MenuItem {
visible: messageContextMenu.eventType == MtxEvent.ImageMessage || messageContextMenu.eventType == MtxEvent.VideoMessage || messageContextMenu.eventType == MtxEvent.AudioMessage || messageContextMenu.eventType == MtxEvent.FileMessage || messageContextMenu.eventType == MtxEvent.Sticker visible: messageContextMenu.eventType == MtxEvent.ImageMessage || messageContextMenu.eventType == MtxEvent.VideoMessage || messageContextMenu.eventType == MtxEvent.AudioMessage || messageContextMenu.eventType == MtxEvent.FileMessage || messageContextMenu.eventType == MtxEvent.Sticker
enabled: visible enabled: visible
text: qsTr("Open in external program") text: qsTr("&Open in external program")
onTriggered: room.openMedia(messageContextMenu.eventId) onTriggered: room.openMedia(messageContextMenu.eventId)
} }
Platform.MenuItem { Platform.MenuItem {
visible: messageContextMenu.eventId visible: messageContextMenu.eventId
enabled: visible enabled: visible
text: qsTr("Copy link to event") text: qsTr("Copy link to eve&nt")
onTriggered: room.copyLinkToEvent(messageContextMenu.eventId) onTriggered: room.copyLinkToEvent(messageContextMenu.eventId)
} }

View file

@ -11,6 +11,7 @@
#include <QtMath> #include <QtMath>
#include <mtx/responses/register.hpp> #include <mtx/responses/register.hpp>
#include <mtx/responses/well-known.hpp>
#include "Config.h" #include "Config.h"
#include "Logging.h" #include "Logging.h"
@ -108,6 +109,10 @@ RegisterPage::RegisterPage(QWidget *parent)
error_password_confirmation_label_->setWordWrap(true); error_password_confirmation_label_->setWordWrap(true);
error_password_confirmation_label_->hide(); 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(username_input_, Qt::AlignHCenter);
form_layout_->addWidget(error_username_label_, Qt::AlignHCenter); form_layout_->addWidget(error_username_label_, Qt::AlignHCenter);
form_layout_->addWidget(password_input_, 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(password_confirmation_, Qt::AlignHCenter);
form_layout_->addWidget(error_password_confirmation_label_, Qt::AlignHCenter); form_layout_->addWidget(error_password_confirmation_label_, Qt::AlignHCenter);
form_layout_->addWidget(server_input_, Qt::AlignHCenter); form_layout_->addWidget(server_input_, Qt::AlignHCenter);
form_layout_->addWidget(error_server_label_, Qt::AlignHCenter);
button_layout_ = new QHBoxLayout(); button_layout_ = new QHBoxLayout();
button_layout_->setSpacing(0); button_layout_->setSpacing(0);
@ -140,6 +146,17 @@ RegisterPage::RegisterPage(QWidget *parent)
top_layout_->addWidget(error_label_, 0, Qt::AlignHCenter); top_layout_->addWidget(error_label_, 0, Qt::AlignHCenter);
top_layout_->addStretch(1); 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(back_button_, SIGNAL(clicked()), this, SLOT(onBackButtonClicked()));
connect(register_button_, SIGNAL(clicked()), this, SLOT(onRegisterButtonClicked())); connect(register_button_, SIGNAL(clicked()), this, SLOT(onRegisterButtonClicked()));
@ -351,10 +368,12 @@ RegisterPage::checkFields()
error_username_label_->setText(""); error_username_label_->setText("");
error_password_label_->setText(""); error_password_label_->setText("");
error_password_confirmation_label_->setText(""); error_password_confirmation_label_->setText("");
error_server_label_->setText("");
error_username_label_->hide(); error_username_label_->hide();
error_password_label_->hide(); error_password_label_->hide();
error_password_confirmation_label_->hide(); error_password_confirmation_label_->hide();
error_server_label_->hide();
password_confirmation_->setValid(true); password_confirmation_->setValid(true);
server_input_->setValid(true); server_input_->setValid(true);
@ -379,7 +398,8 @@ RegisterPage::checkFields()
all_fields_good = false; all_fields_good = false;
} else if (server_input_->isModified() && } else if (server_input_->isModified() &&
(!server_input_->hasAcceptableInput() || server_input_->text().isEmpty())) { (!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); server_input_->setValid(false);
all_fields_good = false; all_fields_good = false;
} }
@ -406,51 +426,113 @@ RegisterPage::onRegisterButtonClicked()
http::client()->set_server(server); http::client()->set_server(server);
http::client()->verify_certificates( http::client()->verify_certificates(
!UserSettings::instance()->disableCertificateValidation()); !UserSettings::instance()->disableCertificateValidation());
http::client()->registration(
username, http::client()->well_known(
password, [this, username, password](const mtx::responses::WellKnown &res,
[this, username, password](const mtx::responses::Register &res,
mtx::http::RequestErr err) { mtx::http::RequestErr err) {
if (!err) { if (err) {
http::client()->set_user(res.user_id); using namespace boost::beast::http;
http::client()->set_access_token(res.access_token);
emit registerOk(); if (err->status_code == status::not_found) {
return; nhlog::net()->info("Autodiscovery: No .well-known.");
} checkVersionAndRegister(username, password);
// 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<int>(err->status_code),
err->matrix_error.error);
emit errorOccurred();
emit registerErrorCb(
QString::fromStdString(err->matrix_error.error));
return; return;
} }
emit registrationFlow( if (!err->parse_error.empty()) {
username, password, err->matrix_error.unauthorized); 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; return;
} }
nhlog::net()->error( nhlog::net()->info("Autodiscovery: Discovered '" +
"failed to register: status_code ({}), matrix_error({})", res.homeserver.base_url + "'");
static_cast<int>(err->status_code), http::client()->set_server(res.homeserver.base_url);
err->matrix_error.error); checkVersionAndRegister(username, password);
emit registerErrorCb(QString::fromStdString(err->matrix_error.error));
emit errorOccurred();
}); });
emit registering(); 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<int>(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<int>(err->status_code),
err->matrix_error.error);
emit registerErrorCb(QString::fromStdString(err->matrix_error.error));
emit errorOccurred();
});
});
}
void void
RegisterPage::paintEvent(QPaintEvent *) RegisterPage::paintEvent(QPaintEvent *)
{ {

View file

@ -31,6 +31,10 @@ protected:
signals: signals:
void backButtonClicked(); void backButtonClicked();
void errorOccurred(); void errorOccurred();
//! Used to trigger the corresponding slot outside of the main thread.
void versionErrorCb(const QString &err);
void registering(); void registering();
void registerOk(); void registerOk();
void registerErrorCb(const QString &msg); void registerErrorCb(const QString &msg);
@ -52,6 +56,7 @@ private:
bool checkOneField(QLabel *label, const TextField *t_field, const QString &msg); bool checkOneField(QLabel *label, const TextField *t_field, const QString &msg);
bool checkFields(); bool checkFields();
void showError(QLabel *label, const QString &msg); void showError(QLabel *label, const QString &msg);
void checkVersionAndRegister(const std::string &username, const std::string &password);
QVBoxLayout *top_layout_; QVBoxLayout *top_layout_;
QHBoxLayout *back_layout_; QHBoxLayout *back_layout_;
@ -63,6 +68,7 @@ private:
QLabel *error_username_label_; QLabel *error_username_label_;
QLabel *error_password_label_; QLabel *error_password_label_;
QLabel *error_password_confirmation_label_; QLabel *error_password_confirmation_label_;
QLabel *error_server_label_;
FlatButton *back_button_; FlatButton *back_button_;
RaisedButton *register_button_; RaisedButton *register_button_;

View file

@ -679,11 +679,10 @@ utils::hashQString(const QString &input)
return hash; return hash;
} }
QString QColor
utils::generateContrastingHexColor(const QString &input, const QString &background) utils::generateContrastingHexColor(const QString &input, const QColor &backgroundCol)
{ {
const QColor backgroundCol(background); const qreal backgroundLum = luminance(backgroundCol);
const qreal backgroundLum = luminance(background);
// Create a color for the input // Create a color for the input
auto hash = hashQString(input); auto hash = hashQString(input);

View file

@ -301,8 +301,8 @@ hashQString(const QString &input);
//! Generate a color (matching #RRGGBB) that has an acceptable contrast to background that is based //! Generate a color (matching #RRGGBB) that has an acceptable contrast to background that is based
//! on the input string. //! on the input string.
QString QColor
generateContrastingHexColor(const QString &input, const QString &background); generateContrastingHexColor(const QString &input, const QColor &background);
//! Given two luminance values, compute the contrast ratio between them. //! Given two luminance values, compute the contrast ratio between them.
qreal qreal

View file

@ -107,8 +107,7 @@ QColor
TimelineViewManager::userColor(QString id, QColor background) TimelineViewManager::userColor(QString id, QColor background)
{ {
if (!userColors.contains(id)) if (!userColors.contains(id))
userColors.insert( userColors.insert(id, QColor(utils::generateContrastingHexColor(id, background)));
id, QColor(utils::generateContrastingHexColor(id, background.name())));
return userColors.value(id); return userColors.value(id);
} }