Merge master into reactions

This commit is contained in:
Joseph Donofry 2020-05-14 20:53:01 -04:00
commit 6d2789f4d5
No known key found for this signature in database
GPG Key ID: E8A1D78EF044B0CB
38 changed files with 6320 additions and 467 deletions

View File

@ -295,6 +295,7 @@ set(SRC_FILES
src/RegisterPage.cpp src/RegisterPage.cpp
src/RoomInfoListItem.cpp src/RoomInfoListItem.cpp
src/RoomList.cpp src/RoomList.cpp
src/SSOHandler.cpp
src/SideBarActions.cpp src/SideBarActions.cpp
src/Splitter.cpp src/Splitter.cpp
src/TextInputWidget.cpp src/TextInputWidget.cpp
@ -337,7 +338,7 @@ if(USE_BUNDLED_MTXCLIENT)
FetchContent_Declare( FetchContent_Declare(
MatrixClient MatrixClient
GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git
GIT_TAG 1893cd6171c40c250ca64d388c082789452340a8 GIT_TAG 71bd56b66cf634341ffef804f07d33f01fd57c25
) )
FetchContent_MakeAvailable(MatrixClient) FetchContent_MakeAvailable(MatrixClient)
else() else()
@ -496,6 +497,7 @@ qt5_wrap_cpp(MOC_HEADERS
src/RegisterPage.h src/RegisterPage.h
src/RoomInfoListItem.h src/RoomInfoListItem.h
src/RoomList.h src/RoomList.h
src/SSOHandler.h
src/SideBarActions.h src/SideBarActions.h
src/Splitter.h src/Splitter.h
src/TextInputWidget.h src/TextInputWidget.h
@ -559,7 +561,7 @@ elseif(WIN32)
else() else()
target_link_libraries (nheko PRIVATE Qt5::DBus) target_link_libraries (nheko PRIVATE Qt5::DBus)
endif() endif()
target_include_directories(nheko PRIVATE src includes third_party/blurhash) target_include_directories(nheko PRIVATE src includes third_party/blurhash third_party/cpp-httplib-0.5.12)
target_link_libraries(nheko PRIVATE target_link_libraries(nheko PRIVATE
MatrixClient::MatrixClient MatrixClient::MatrixClient

View File

@ -58,7 +58,7 @@ can be found in the [Github releases](https://github.com/Nheko-Reborn/nheko/rele
pacaur -S nheko # nheko-git pacaur -S nheko # nheko-git
``` ```
#### Debian (10 and above) #### Debian (10 and above) / Ubuntu (18.04 and above)
```bash ```bash
sudo apt install nheko sudo apt install nheko
@ -179,22 +179,14 @@ sudo pacman -S qt5-base \
sudo emerge -a ">=dev-qt/qtgui-5.9.0" media-libs/fontconfig sudo emerge -a ">=dev-qt/qtgui-5.9.0" media-libs/fontconfig
``` ```
##### Ubuntu 16.04 ##### Ubuntu 20.04
```bash
sudo add-apt-repository ppa:beineri/opt-qt592-xenial
sudo add-apt-repository ppa:george-edison55/cmake-3.x
sudo add-apt-repository ppa:ubuntu-toolchain-r-test
sudo apt-get update
sudo apt-get install -y g++-7 qt59base qt59svg qt59tools qt59multimedia cmake liblmdb-dev libsodium-dev
```
##### Ubuntu 19.10
```bash ```bash
# Build requirements + qml modules needed at runtime (you may not need all of them, but the following seem to work according to reports): # Build requirements + qml modules needed at runtime (you may not need all of them, but the following seem to work according to reports):
sudo apt install g++-7 cmake liblmdb-dev libsodium-dev libssl-dev qt{base,declarative,tools,multimedia,script,quickcontrols2-}5-dev qml-module-qt{gstreamer,multimedia,quick-extras,-labs-settings,graphicaleffects,quick-controls2} libqt5svg5-dev sudo apt install g++ cmake zlib1g-dev libssl-dev qt{base,declarative,tools,multimedia,quickcontrols2-}5-dev libqt5svg5-dev libboost-system-dev libboost-thread-dev libboost-iostreams-dev libolm-dev libsodium-dev liblmdb++-dev libcmark-dev nlohmann-json3-dev libspdlog-dev libgtest-dev qml-module-qt{gstreamer,multimedia,quick-extras,-labs-settings,graphicaleffects,quick-controls2}
``` ```
This will install all dependencies, except for tweeny (use bundled tweeny)
and mtxclient (needs to be build separately).
##### Debian Buster (or higher probably) ##### Debian Buster (or higher probably)
@ -237,14 +229,14 @@ Make sure to install the `MSVC 2017 64-bit` toolset for at least Qt 5.10
We can now build nheko: We can now build nheko:
```bash ```bash
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release
cmake --build build cmake --build build
``` ```
To use bundled dependencies you can use hunter, i.e.: To use bundled dependencies you can use hunter, i.e.:
```bash ```bash
cmake -H. -Bbuild -DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=OFF cmake -S. -Bbuild -DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=OFF
cmake --build build --config Release cmake --build build --config Release
``` ```
@ -263,7 +255,7 @@ You might need to pass `-DCMAKE_PREFIX_PATH` to cmake to point it at your qt5 in
e.g on macOS e.g on macOS
``` ```
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(brew --prefix qt5) cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$(brew --prefix qt5)
cmake --build build cmake --build build
``` ```
@ -283,7 +275,7 @@ Examples for the paths are:
You should also enable hunter by setting `HUNTER_ENABLED` to `ON` and `BUILD_SHARED_LIBS` to `OFF`. You should also enable hunter by setting `HUNTER_ENABLED` to `ON` and `BUILD_SHARED_LIBS` to `OFF`.
Now right click into the root nheko source directory and choose `Open in Visual Studio`. Now right click into the root nheko source directory and choose `Open in Visual Studio`.
You can choose the build type Release and Debug in the top toolbar. You can choose the build type Release and Debug in the top toolbar.
After a successful CMake generation you can select the `nheko.exe` as the run target. After a successful CMake generation you can select the `nheko.exe` as the run target.
Now choose `Build all` in the CMake menu or press `F7` to compile the executable. Now choose `Build all` in the CMake menu or press `F7` to compile the executable.

View File

@ -146,9 +146,9 @@
"name": "mtxclient", "name": "mtxclient",
"sources": [ "sources": [
{ {
"sha256": "a8c0239b7157fe8eadae8b06cd6c4e3531dcc61fc5a7f52dbb3c85106f70e3a5", "sha256": "7055f1459a43a12f27f949564624f13cc593ac894e445e6de0e6563ad38ebc3e",
"type": "archive", "type": "archive",
"url": "https://github.com/Nheko-Reborn/mtxclient/archive/1893cd6171c40c250ca64d388c082789452340a8.tar.gz" "url": "https://github.com/Nheko-Reborn/mtxclient/archive/71bd56b66cf634341ffef804f07d33f01fd57c25.tar.gz"
} }
] ]
}, },

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 B

View File

@ -5,8 +5,8 @@
<name>Cache</name> <name>Cache</name>
<message> <message>
<location filename="../../src/Cache.cpp" line="+1341"/> <location filename="../../src/Cache.cpp" line="+1341"/>
<source>You joined this room</source> <source>You joined this room.</source>
<translation type="unfinished"></translation> <translation>Du bist dem Raum beigetreten.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -18,12 +18,22 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<location line="+894"/> <location line="+898"/>
<source>Invited user: %1</source> <source>Invited user: %1</source>
<translation>Eingeladener Benutzer: %1</translation> <translation>Eingeladener Benutzer: %1</translation>
</message> </message>
<message> <message>
<location line="-5"/> <location line="-463"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation>Migrieren des Caches auf die aktuelle Version fehlgeschlagen. Das kann verschiedene Gründe als Ursache haben. Bitte lege einen Bugreport an und verwende in der Zwischenzeit eine ältere Version. Alternativ kannst du das Cache manuell entfernen.</translation>
</message>
<message>
<location line="+428"/>
<source>Room %1 created.</source>
<translation>Raum %1 erzeugt.</translation>
</message>
<message>
<location line="+30"/>
<source>Failed to invite %1 to %2: %3</source> <source>Failed to invite %1 to %2: %3</source>
<translation>Einladung von %1 in Raum %2 fehlgeschlagen: %3</translation> <translation>Einladung von %1 in Raum %2 fehlgeschlagen: %3</translation>
</message> </message>
@ -58,29 +68,24 @@
<translation>Verbannung von %1 wurde aufgehoben.</translation> <translation>Verbannung von %1 wurde aufgehoben.</translation>
</message> </message>
<message> <message>
<location line="-819"/> <location line="-823"/>
<source>Failed to upload media. Please try again.</source> <source>Failed to upload media. Please try again.</source>
<translation>Medienupload fehlgeschlagen. Bitte versuche es erneut.</translation> <translation>Medienupload fehlgeschlagen. Bitte versuche es erneut.</translation>
</message> </message>
<message> <message>
<location line="+302"/> <location line="+302"/>
<source>Cache migration failed!</source> <source>Cache migration failed!</source>
<translation type="unfinished"></translation> <translation>Cache migration fehlgeschlagen!</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+13"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Incompatible cache version</source> <source>Incompatible cache version</source>
<translation type="unfinished"></translation> <translation>Inkompatible Cacheversion</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>The cache on your disk is newer than this version of Nheko supports. Please update or clear your cache.</source> <source>The cache on your disk is newer than this version of Nheko supports. Please update or clear your cache.</source>
<translation type="unfinished"></translation> <translation>Das Cache auf der Festplatte wurde mit einer neueren Nheko version angelegt. Bitte aktualisiere Nheko oder entferne das Cache.</translation>
</message> </message>
<message> <message>
<location line="+111"/> <location line="+111"/>
@ -99,7 +104,7 @@
</message> </message>
<message> <message>
<location line="+51"/> <location line="+51"/>
<location line="+215"/> <location line="+219"/>
<source>Please try to login again: %1</source> <source>Please try to login again: %1</source>
<translation>Bitte melde dich erneut an: %1</translation> <translation>Bitte melde dich erneut an: %1</translation>
</message> </message>
@ -124,12 +129,7 @@
<translation>Raum konnte nicht erstellt werden: %1</translation> <translation>Raum konnte nicht erstellt werden: %1</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+16"/>
<source>Room %1 created</source>
<translation>Raum %1 wurde erstellt.</translation>
</message>
<message>
<location line="+11"/>
<source>Failed to leave room: %1</source> <source>Failed to leave room: %1</source>
<translation>Konnte den Raum nicht verlassen: %1</translation> <translation>Konnte den Raum nicht verlassen: %1</translation>
</message> </message>
@ -238,10 +238,15 @@
<context> <context>
<name>EncryptionIndicator</name> <name>EncryptionIndicator</name>
<message> <message>
<location filename="../qml/EncryptionIndicator.qml" line="+12"/> <location filename="../qml/EncryptionIndicator.qml" line="+36"/>
<source>Encrypted</source> <source>Encrypted</source>
<translation>Verschlüsselt</translation> <translation>Verschlüsselt</translation>
</message> </message>
<message>
<location line="+2"/>
<source>This message is not encrypted!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>InviteeItem</name> <name>InviteeItem</name>
@ -254,7 +259,7 @@
<context> <context>
<name>LoginPage</name> <name>LoginPage</name>
<message> <message>
<location filename="../../src/LoginPage.cpp" line="+82"/> <location filename="../../src/LoginPage.cpp" line="+89"/>
<source>Matrix ID</source> <source>Matrix ID</source>
<translation>Matrix-ID</translation> <translation>Matrix-ID</translation>
</message> </message>
@ -264,22 +269,46 @@
<translation>z.B. @joe:matrix.org</translation> <translation>z.B. @joe:matrix.org</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+2"/>
<source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup.
Example: @user:server.my
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
<translation>Dein Anmeldename. Eine mxid sollte mit einem @ anfangen, gefolgt von dem Benutzernamen. Nach dem Benutzernamen sollten ein Doppelpunkt (:) under der Servername folgen.
Nach dem Doppelpunkt kann alternativ die Serveradresse (mit oder ohne Port) angegeben werden, wenn der Server nicht per .well-known auffindbar ist.
Beispiel: @benutzer:dein.server
Wenn Nheko deinen Server nicht automatisch erkennen kann, wird es dich nach dem Server fragen.</translation>
</message>
<message>
<location line="+21"/>
<source>Password</source> <source>Password</source>
<translation>Passwort</translation> <translation>Passwort</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+5"/>
<source>Device name</source> <source>Device name</source>
<translation>Gerätename</translation> <translation>Gerätename</translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation>Ein Name für dieses Gerät. Dieser wird anderen angezeigt, wenn sie dieses Gerät verifizieren. Wenn kein Name angegeben wurde, wird automatisch ein zufälliger Name erzeugt, der keine Rückschlüsse auf deine Identität zulassen sollte.</translation>
</message>
<message>
<location line="+6"/>
<source>The address that can be used to contact you homeservers client API.
Example: https://server.my:8787</source>
<translation>Die Adresse unter der dein Heimserver erreichbar ist.
Beispiel: https://mein.server:8787</translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<source>LOGIN</source> <source>LOGIN</source>
<translation>ANMELDEN</translation> <translation>ANMELDEN</translation>
</message> </message>
<message> <message>
<location line="+85"/> <location line="-100"/>
<source>Autodiscovery failed. Received malformed response.</source> <source>Autodiscovery failed. Received malformed response.</source>
<translation>Automatische Erkennung fehlgeschlagen. Antwort war fehlerhaft.</translation> <translation>Automatische Erkennung fehlgeschlagen. Antwort war fehlerhaft.</translation>
</message> </message>
@ -289,7 +318,7 @@
<translation>Automatische Erkennung fehlgeschlagen. Unbekannter Fehler bei Anfrage .well-known.</translation> <translation>Automatische Erkennung fehlgeschlagen. Unbekannter Fehler bei Anfrage .well-known.</translation>
</message> </message>
<message> <message>
<location line="+24"/> <location line="+25"/>
<source>The required endpoints were not found. Possibly not a Matrix server.</source> <source>The required endpoints were not found. Possibly not a Matrix server.</source>
<translation>Benötigte Ansprechpunkte nicht auffindbar. Möglicherweise kein Matrixserver.</translation> <translation>Benötigte Ansprechpunkte nicht auffindbar. Möglicherweise kein Matrixserver.</translation>
</message> </message>
@ -304,10 +333,20 @@
<translation>Ein unbekannter Fehler ist aufgetreten. Bitte Homeserverdomain prüfen.</translation> <translation>Ein unbekannter Fehler ist aufgetreten. Bitte Homeserverdomain prüfen.</translation>
</message> </message>
<message> <message>
<location line="+60"/> <location line="+55"/>
<source>SSO LOGIN</source>
<translation>SSO ANMELDUNG</translation>
</message>
<message>
<location line="+25"/>
<source>Empty password</source> <source>Empty password</source>
<translation>Leeres Passwort</translation> <translation>Leeres Passwort</translation>
</message> </message>
<message>
<location line="+52"/>
<source>SSO login failed</source>
<translation>SSO Anmeldung fehlgeschlagen</translation>
</message>
</context> </context>
<context> <context>
<name>MemberList</name> <name>MemberList</name>
@ -325,7 +364,7 @@
<context> <context>
<name>MessageDelegate</name> <name>MessageDelegate</name>
<message> <message>
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/> <location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
<source>redacted</source> <source>redacted</source>
<translation>gelöscht</translation> <translation>gelöscht</translation>
</message> </message>
@ -385,9 +424,19 @@
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
<translation>Der Benutzername sollte nicht leer sein und nur aus a-z, 0-9, ., _, =, - und / bestehen.</translation>
</message>
<message>
<location line="+4"/>
<source>Password</source> <source>Password</source>
<translation>Passwort</translation> <translation>Passwort</translation>
</message> </message>
<message>
<location line="+2"/>
<source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
<translation>Bitte wähle ein sicheres Passwort. Die genauen Anforderungen bestimmt dein Server.</translation>
</message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Password confirmation</source> <source>Password confirmation</source>
@ -395,11 +444,16 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Home Server</source> <source>Homeserver</source>
<translation>Homeserver</translation> <translation>Heimserver</translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+2"/>
<source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
<translation>Ein Server, der Registrierungen zulässt. Weil Matrix ein dezentralisiertes Protokoll ist, musst du erst einen Server ausfindig machen oder einen persönlichen Server aufsetzen.</translation>
</message>
<message>
<location line="+17"/>
<source>REGISTER</source> <source>REGISTER</source>
<translation>REGISTRIEREN</translation> <translation>REGISTRIEREN</translation>
</message> </message>
@ -548,7 +602,7 @@
<context> <context>
<name>TimelineModel</name> <name>TimelineModel</name>
<message> <message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+844"/> <location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<source>-- Decryption Error (failed to communicate with DB) --</source> <source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation>-- Entschlüsselungsfehler (Fehler bei Kommunikation mit Datenbank) --</translation> <translation>-- Entschlüsselungsfehler (Fehler bei Kommunikation mit Datenbank) --</translation>
@ -597,12 +651,7 @@
<translation>-- Verschlüsseltes Event (keine Schlüssel zur Entschlüsselung gefunden) --</translation> <translation>-- Verschlüsseltes Event (keine Schlüssel zur Entschlüsselung gefunden) --</translation>
</message> </message>
<message> <message>
<location line="-258"/> <location line="+82"/>
<source>You joined this room</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+340"/>
<source>-- Encrypted Event (Unknown event type) --</source> <source>-- Encrypted Event (Unknown event type) --</source>
<comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment>
<translation>-- Verschlüsseltes Event (Unbekannter Eventtyp) --</translation> <translation>-- Verschlüsseltes Event (Unbekannter Eventtyp) --</translation>
@ -722,7 +771,12 @@
<translation>%1 hat das Anklopfen zurückgezogen.</translation> <translation>%1 hat das Anklopfen zurückgezogen.</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="-1278"/>
<source>You joined this room.</source>
<translation>Du bist dem Raum beigetreten.</translation>
</message>
<message>
<location line="+1280"/>
<source>Rejected the knock from %1.</source> <source>Rejected the knock from %1.</source>
<translation>Hat das Anklopfen von %1 abgewiesen.</translation> <translation>Hat das Anklopfen von %1 abgewiesen.</translation>
</message> </message>
@ -746,7 +800,7 @@
<context> <context>
<name>TimelineRow</name> <name>TimelineRow</name>
<message> <message>
<location filename="../qml/TimelineRow.qml" line="+83"/> <location filename="../qml/TimelineRow.qml" line="+84"/>
<source>React</source> <source>React</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -809,7 +863,7 @@
<translation>Kein Raum geöffnet</translation> <translation>Kein Raum geöffnet</translation>
</message> </message>
<message> <message>
<location line="+254"/> <location line="+256"/>
<source>Close</source> <source>Close</source>
<translation>Schließen</translation> <translation>Schließen</translation>
</message> </message>
@ -898,7 +952,7 @@
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>Show buttons in timeline</source> <source>Show buttons in timeline</source>
<translation type="unfinished"></translation> <translation>Zeige Buttons in der Historie</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
@ -1116,7 +1170,7 @@
<message> <message>
<location filename="../../src/dialogs/FallbackAuth.cpp" line="+30"/> <location filename="../../src/dialogs/FallbackAuth.cpp" line="+30"/>
<source>Open Fallback in Browser</source> <source>Open Fallback in Browser</source>
<translation type="unfinished">Öffne Fallback im Browser</translation> <translation>Öffne Fallback im Browser</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>

View File

@ -5,7 +5,7 @@
<name>Cache</name> <name>Cache</name>
<message> <message>
<location filename="../../src/Cache.cpp" line="+1341"/> <location filename="../../src/Cache.cpp" line="+1341"/>
<source>You joined this room</source> <source>You joined this room.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -18,12 +18,22 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<location line="+894"/> <location line="+898"/>
<source>Invited user: %1</source> <source>Invited user: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-5"/> <location line="-463"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+30"/>
<source>Failed to invite %1 to %2: %3</source> <source>Failed to invite %1 to %2: %3</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -58,7 +68,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-819"/> <location line="-823"/>
<source>Failed to upload media. Please try again.</source> <source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -68,12 +78,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+13"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Incompatible cache version</source> <source>Incompatible cache version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -99,7 +104,7 @@
</message> </message>
<message> <message>
<location line="+51"/> <location line="+51"/>
<location line="+215"/> <location line="+219"/>
<source>Please try to login again: %1</source> <source>Please try to login again: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -124,12 +129,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+16"/>
<source>Room %1 created</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>Failed to leave room: %1</source> <source>Failed to leave room: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -238,10 +238,15 @@
<context> <context>
<name>EncryptionIndicator</name> <name>EncryptionIndicator</name>
<message> <message>
<location filename="../qml/EncryptionIndicator.qml" line="+12"/> <location filename="../qml/EncryptionIndicator.qml" line="+36"/>
<source>Encrypted</source> <source>Encrypted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location line="+2"/>
<source>This message is not encrypted!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>InviteeItem</name> <name>InviteeItem</name>
@ -254,7 +259,7 @@
<context> <context>
<name>LoginPage</name> <name>LoginPage</name>
<message> <message>
<location filename="../../src/LoginPage.cpp" line="+82"/> <location filename="../../src/LoginPage.cpp" line="+89"/>
<source>Matrix ID</source> <source>Matrix ID</source>
<translation>Matrix ID</translation> <translation>Matrix ID</translation>
</message> </message>
@ -264,22 +269,42 @@
<translation>π.χ @john:matrix.org</translation> <translation>π.χ @john:matrix.org</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+2"/>
<source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup.
Example: @user:server.my
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+21"/>
<source>Password</source> <source>Password</source>
<translation>Κωδικός</translation> <translation>Κωδικός</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+5"/>
<source>Device name</source> <source>Device name</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>The address that can be used to contact you homeservers client API.
Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<source>LOGIN</source> <source>LOGIN</source>
<translation>ΕΙΣΟΔΟΣ</translation> <translation>ΕΙΣΟΔΟΣ</translation>
</message> </message>
<message> <message>
<location line="+85"/> <location line="-100"/>
<source>Autodiscovery failed. Received malformed response.</source> <source>Autodiscovery failed. Received malformed response.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -289,7 +314,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+24"/> <location line="+25"/>
<source>The required endpoints were not found. Possibly not a Matrix server.</source> <source>The required endpoints were not found. Possibly not a Matrix server.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -304,10 +329,20 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+60"/> <location line="+55"/>
<source>SSO LOGIN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+25"/>
<source>Empty password</source> <source>Empty password</source>
<translation>Κενός κωδικός</translation> <translation>Κενός κωδικός</translation>
</message> </message>
<message>
<location line="+52"/>
<source>SSO login failed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MemberList</name> <name>MemberList</name>
@ -325,7 +360,7 @@
<context> <context>
<name>MessageDelegate</name> <name>MessageDelegate</name>
<message> <message>
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/> <location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
<source>redacted</source> <source>redacted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -385,9 +420,19 @@
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Password</source> <source>Password</source>
<translation>Κωδικός</translation> <translation>Κωδικός</translation>
</message> </message>
<message>
<location line="+2"/>
<source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Password confirmation</source> <source>Password confirmation</source>
@ -395,11 +440,16 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Home Server</source> <source>Homeserver</source>
<translation>Διακομιστής</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+2"/>
<source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>REGISTER</source> <source>REGISTER</source>
<translation>ΕΓΓΡΑΦΗ</translation> <translation>ΕΓΓΡΑΦΗ</translation>
</message> </message>
@ -548,7 +598,7 @@
<context> <context>
<name>TimelineModel</name> <name>TimelineModel</name>
<message> <message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+844"/> <location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<source>-- Decryption Error (failed to communicate with DB) --</source> <source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -597,12 +647,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-258"/> <location line="+82"/>
<source>You joined this room</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+340"/>
<source>-- Encrypted Event (Unknown event type) --</source> <source>-- Encrypted Event (Unknown event type) --</source>
<comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -722,7 +767,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="-1278"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1280"/>
<source>Rejected the knock from %1.</source> <source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -746,7 +796,7 @@
<context> <context>
<name>TimelineRow</name> <name>TimelineRow</name>
<message> <message>
<location filename="../qml/TimelineRow.qml" line="+83"/> <location filename="../qml/TimelineRow.qml" line="+84"/>
<source>React</source> <source>React</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -809,7 +859,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+254"/> <location line="+256"/>
<source>Close</source> <source>Close</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

BIN
resources/langs/nheko_en.qm Normal file

Binary file not shown.

View File

@ -5,8 +5,8 @@
<name>Cache</name> <name>Cache</name>
<message> <message>
<location filename="../../src/Cache.cpp" line="+1341"/> <location filename="../../src/Cache.cpp" line="+1341"/>
<source>You joined this room</source> <source>You joined this room.</source>
<translation type="unfinished"></translation> <translation>You joined this room.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -18,12 +18,22 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<location line="+894"/> <location line="+898"/>
<source>Invited user: %1</source> <source>Invited user: %1</source>
<translation>Invited user: %1</translation> <translation>Invited user: %1</translation>
</message> </message>
<message> <message>
<location line="-5"/> <location line="-463"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</translation>
</message>
<message>
<location line="+428"/>
<source>Room %1 created.</source>
<translation>Room %1 created.</translation>
</message>
<message>
<location line="+30"/>
<source>Failed to invite %1 to %2: %3</source> <source>Failed to invite %1 to %2: %3</source>
<translation>Failed to invite %1 to %2: %3</translation> <translation>Failed to invite %1 to %2: %3</translation>
</message> </message>
@ -58,29 +68,24 @@
<translation>Unbanned user: %1</translation> <translation>Unbanned user: %1</translation>
</message> </message>
<message> <message>
<location line="-819"/> <location line="-823"/>
<source>Failed to upload media. Please try again.</source> <source>Failed to upload media. Please try again.</source>
<translation>Failed to upload media. Please try again.</translation> <translation>Failed to upload media. Please try again.</translation>
</message> </message>
<message> <message>
<location line="+302"/> <location line="+302"/>
<source>Cache migration failed!</source> <source>Cache migration failed!</source>
<translation type="unfinished"></translation> <translation>Cache migration failed!</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+13"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Incompatible cache version</source> <source>Incompatible cache version</source>
<translation type="unfinished"></translation> <translation>Incompatible cache version</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>
<source>The cache on your disk is newer than this version of Nheko supports. Please update or clear your cache.</source> <source>The cache on your disk is newer than this version of Nheko supports. Please update or clear your cache.</source>
<translation type="unfinished"></translation> <translation>The cache on your disk is newer than this version of Nheko supports. Please update or clear your cache.</translation>
</message> </message>
<message> <message>
<location line="+111"/> <location line="+111"/>
@ -99,7 +104,7 @@
</message> </message>
<message> <message>
<location line="+51"/> <location line="+51"/>
<location line="+215"/> <location line="+219"/>
<source>Please try to login again: %1</source> <source>Please try to login again: %1</source>
<translation>Please try to login again: %1</translation> <translation>Please try to login again: %1</translation>
</message> </message>
@ -124,12 +129,7 @@
<translation>Room creation failed: %1</translation> <translation>Room creation failed: %1</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+16"/>
<source>Room %1 created</source>
<translation>Room %1 created.</translation>
</message>
<message>
<location line="+11"/>
<source>Failed to leave room: %1</source> <source>Failed to leave room: %1</source>
<translation>Failed to leave room: %1</translation> <translation>Failed to leave room: %1</translation>
</message> </message>
@ -238,10 +238,15 @@
<context> <context>
<name>EncryptionIndicator</name> <name>EncryptionIndicator</name>
<message> <message>
<location filename="../qml/EncryptionIndicator.qml" line="+12"/> <location filename="../qml/EncryptionIndicator.qml" line="+36"/>
<source>Encrypted</source> <source>Encrypted</source>
<translation>Encrypted</translation> <translation>Encrypted</translation>
</message> </message>
<message>
<location line="+2"/>
<source>This message is not encrypted!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>InviteeItem</name> <name>InviteeItem</name>
@ -254,7 +259,7 @@
<context> <context>
<name>LoginPage</name> <name>LoginPage</name>
<message> <message>
<location filename="../../src/LoginPage.cpp" line="+82"/> <location filename="../../src/LoginPage.cpp" line="+89"/>
<source>Matrix ID</source> <source>Matrix ID</source>
<translation>Matrix ID</translation> <translation>Matrix ID</translation>
</message> </message>
@ -264,22 +269,46 @@
<translation>e.g @joe:matrix.org</translation> <translation>e.g @joe:matrix.org</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+2"/>
<source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup.
Example: @user:server.my
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
<translation>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup.
Example: @user:server.my
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</translation>
</message>
<message>
<location line="+21"/>
<source>Password</source> <source>Password</source>
<translation>Password</translation> <translation>Password</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+5"/>
<source>Device name</source> <source>Device name</source>
<translation>Device name</translation> <translation>Device name</translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</translation>
</message>
<message>
<location line="+6"/>
<source>The address that can be used to contact you homeservers client API.
Example: https://server.my:8787</source>
<translation>The address that can be used to contact you homeservers client API.
Example: https://server.my:8787</translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<source>LOGIN</source> <source>LOGIN</source>
<translation>LOGIN</translation> <translation>LOGIN</translation>
</message> </message>
<message> <message>
<location line="+85"/> <location line="-100"/>
<source>Autodiscovery failed. Received malformed response.</source> <source>Autodiscovery failed. Received malformed response.</source>
<translation>Autodiscovery failed. Received malformed response.</translation> <translation>Autodiscovery failed. Received malformed response.</translation>
</message> </message>
@ -289,7 +318,7 @@
<translation>Autodiscovery failed. Unknown error while requesting .well-known.</translation> <translation>Autodiscovery failed. Unknown error while requesting .well-known.</translation>
</message> </message>
<message> <message>
<location line="+24"/> <location line="+25"/>
<source>The required endpoints were not found. Possibly not a Matrix server.</source> <source>The required endpoints were not found. Possibly not a Matrix server.</source>
<translation>The required endpoints were not found. Possibly not a Matrix server.</translation> <translation>The required endpoints were not found. Possibly not a Matrix server.</translation>
</message> </message>
@ -304,10 +333,20 @@
<translation>An unknown error occured. Make sure the homeserver domain is valid.</translation> <translation>An unknown error occured. Make sure the homeserver domain is valid.</translation>
</message> </message>
<message> <message>
<location line="+60"/> <location line="+55"/>
<source>SSO LOGIN</source>
<translation>SSO LOGIN</translation>
</message>
<message>
<location line="+25"/>
<source>Empty password</source> <source>Empty password</source>
<translation>Empty password</translation> <translation>Empty password</translation>
</message> </message>
<message>
<location line="+52"/>
<source>SSO login failed</source>
<translation>SSO login failed</translation>
</message>
</context> </context>
<context> <context>
<name>MemberList</name> <name>MemberList</name>
@ -325,7 +364,7 @@
<context> <context>
<name>MessageDelegate</name> <name>MessageDelegate</name>
<message> <message>
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/> <location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
<source>redacted</source> <source>redacted</source>
<translation>redacted</translation> <translation>redacted</translation>
</message> </message>
@ -385,9 +424,19 @@
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
<translation>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</translation>
</message>
<message>
<location line="+4"/>
<source>Password</source> <source>Password</source>
<translation>Password</translation> <translation>Password</translation>
</message> </message>
<message>
<location line="+2"/>
<source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
<translation>Please choose a secure password. The exact requirements for password strength may depend on your server.</translation>
</message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Password confirmation</source> <source>Password confirmation</source>
@ -395,11 +444,16 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Home Server</source> <source>Homeserver</source>
<translation>Home Server</translation> <translation>Homeserver</translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+2"/>
<source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
<translation>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</translation>
</message>
<message>
<location line="+17"/>
<source>REGISTER</source> <source>REGISTER</source>
<translation>REGISTER</translation> <translation>REGISTER</translation>
</message> </message>
@ -548,7 +602,7 @@
<context> <context>
<name>TimelineModel</name> <name>TimelineModel</name>
<message> <message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+844"/> <location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<source>-- Decryption Error (failed to communicate with DB) --</source> <source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation>-- Decryption Error (failed to communicate with DB) --</translation> <translation>-- Decryption Error (failed to communicate with DB) --</translation>
@ -597,12 +651,7 @@
<translation>-- Encrypted Event (No keys found for decryption) --</translation> <translation>-- Encrypted Event (No keys found for decryption) --</translation>
</message> </message>
<message> <message>
<location line="-258"/> <location line="+82"/>
<source>You joined this room</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+340"/>
<source>-- Encrypted Event (Unknown event type) --</source> <source>-- Encrypted Event (Unknown event type) --</source>
<comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment>
<translation>-- Encrypted Event (Unknown event type) --</translation> <translation>-- Encrypted Event (Unknown event type) --</translation>
@ -612,8 +661,8 @@
<source>%1 and %2 are typing.</source> <source>%1 and %2 are typing.</source>
<comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment> <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment>
<translation> <translation>
<numerusform>%1%2 is typing</numerusform> <numerusform>%1%2 is typing.</numerusform>
<numerusform>%1 and %2 are typing</numerusform> <numerusform>%1 and %2 are typing.</numerusform>
</translation> </translation>
</message> </message>
<message> <message>
@ -722,7 +771,12 @@
<translation>%1 redacted their knock.</translation> <translation>%1 redacted their knock.</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="-1278"/>
<source>You joined this room.</source>
<translation>You joined this room.</translation>
</message>
<message>
<location line="+1280"/>
<source>Rejected the knock from %1.</source> <source>Rejected the knock from %1.</source>
<translation>Rejected the knock from %1.</translation> <translation>Rejected the knock from %1.</translation>
</message> </message>
@ -746,7 +800,7 @@
<context> <context>
<name>TimelineRow</name> <name>TimelineRow</name>
<message> <message>
<location filename="../qml/TimelineRow.qml" line="+83"/> <location filename="../qml/TimelineRow.qml" line="+84"/>
<source>React</source> <source>React</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -791,7 +845,7 @@
<message> <message>
<location line="+6"/> <location line="+6"/>
<source>View decrypted raw message</source> <source>View decrypted raw message</source>
<translation type="unfinished"></translation> <translation>View decrypted raw message</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
@ -809,7 +863,7 @@
<translation>No room open</translation> <translation>No room open</translation>
</message> </message>
<message> <message>
<location line="+254"/> <location line="+256"/>
<source>Close</source> <source>Close</source>
<translation>Close</translation> <translation>Close</translation>
</message> </message>
@ -893,7 +947,7 @@
<message> <message>
<location line="+2"/> <location line="+2"/>
<source>Decrypt messages in sidebar</source> <source>Decrypt messages in sidebar</source>
<translation type="unfinished"></translation> <translation>Decrypt messages in sidebar</translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+1"/>

View File

@ -5,7 +5,7 @@
<name>Cache</name> <name>Cache</name>
<message> <message>
<location filename="../../src/Cache.cpp" line="+1341"/> <location filename="../../src/Cache.cpp" line="+1341"/>
<source>You joined this room</source> <source>You joined this room.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -18,12 +18,22 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<location line="+894"/> <location line="+898"/>
<source>Invited user: %1</source> <source>Invited user: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-5"/> <location line="-463"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+30"/>
<source>Failed to invite %1 to %2: %3</source> <source>Failed to invite %1 to %2: %3</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -58,7 +68,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-819"/> <location line="-823"/>
<source>Failed to upload media. Please try again.</source> <source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -68,12 +78,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+13"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Incompatible cache version</source> <source>Incompatible cache version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -99,7 +104,7 @@
</message> </message>
<message> <message>
<location line="+51"/> <location line="+51"/>
<location line="+215"/> <location line="+219"/>
<source>Please try to login again: %1</source> <source>Please try to login again: %1</source>
<translation>Ole hyvä ja yritä kirjautua sisään uudelleen: %1</translation> <translation>Ole hyvä ja yritä kirjautua sisään uudelleen: %1</translation>
</message> </message>
@ -124,12 +129,7 @@
<translation>Huoneen luominen epäonnistui: %1</translation> <translation>Huoneen luominen epäonnistui: %1</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+16"/>
<source>Room %1 created</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>Failed to leave room: %1</source> <source>Failed to leave room: %1</source>
<translation>Huoneesta poistuminen epäonnistui: %1</translation> <translation>Huoneesta poistuminen epäonnistui: %1</translation>
</message> </message>
@ -238,10 +238,15 @@
<context> <context>
<name>EncryptionIndicator</name> <name>EncryptionIndicator</name>
<message> <message>
<location filename="../qml/EncryptionIndicator.qml" line="+12"/> <location filename="../qml/EncryptionIndicator.qml" line="+36"/>
<source>Encrypted</source> <source>Encrypted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location line="+2"/>
<source>This message is not encrypted!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>InviteeItem</name> <name>InviteeItem</name>
@ -254,7 +259,7 @@
<context> <context>
<name>LoginPage</name> <name>LoginPage</name>
<message> <message>
<location filename="../../src/LoginPage.cpp" line="+82"/> <location filename="../../src/LoginPage.cpp" line="+89"/>
<source>Matrix ID</source> <source>Matrix ID</source>
<translation>Matrix-tunnus</translation> <translation>Matrix-tunnus</translation>
</message> </message>
@ -264,22 +269,42 @@
<translation>esim. @joe:matrix.org</translation> <translation>esim. @joe:matrix.org</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+2"/>
<source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup.
Example: @user:server.my
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+21"/>
<source>Password</source> <source>Password</source>
<translation>Salasana</translation> <translation>Salasana</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+5"/>
<source>Device name</source> <source>Device name</source>
<translation>Laitteen nimi</translation> <translation>Laitteen nimi</translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>The address that can be used to contact you homeservers client API.
Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<source>LOGIN</source> <source>LOGIN</source>
<translation>KIRJAUDU</translation> <translation>KIRJAUDU</translation>
</message> </message>
<message> <message>
<location line="+85"/> <location line="-100"/>
<source>Autodiscovery failed. Received malformed response.</source> <source>Autodiscovery failed. Received malformed response.</source>
<translation>Palvelimen tietojen hakeminen epäonnistui: virheellinen vastaus.</translation> <translation>Palvelimen tietojen hakeminen epäonnistui: virheellinen vastaus.</translation>
</message> </message>
@ -289,7 +314,7 @@
<translation>Palvelimen tietojen hakeminen epäonnistui: tuntematon virhe hakiessa .well-known -tiedostoa.</translation> <translation>Palvelimen tietojen hakeminen epäonnistui: tuntematon virhe hakiessa .well-known -tiedostoa.</translation>
</message> </message>
<message> <message>
<location line="+24"/> <location line="+25"/>
<source>The required endpoints were not found. Possibly not a Matrix server.</source> <source>The required endpoints were not found. Possibly not a Matrix server.</source>
<translation>Vaadittuja päätepisteitä ei löydetty. Mahdollisesti ei Matrix-palvelin.</translation> <translation>Vaadittuja päätepisteitä ei löydetty. Mahdollisesti ei Matrix-palvelin.</translation>
</message> </message>
@ -304,10 +329,20 @@
<translation>Tapahtui tuntematon virhe. Varmista, että kotipalvelimen osoite on pätevä.</translation> <translation>Tapahtui tuntematon virhe. Varmista, että kotipalvelimen osoite on pätevä.</translation>
</message> </message>
<message> <message>
<location line="+60"/> <location line="+55"/>
<source>SSO LOGIN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+25"/>
<source>Empty password</source> <source>Empty password</source>
<translation>Tyhjä salasana</translation> <translation>Tyhjä salasana</translation>
</message> </message>
<message>
<location line="+52"/>
<source>SSO login failed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MemberList</name> <name>MemberList</name>
@ -325,7 +360,7 @@
<context> <context>
<name>MessageDelegate</name> <name>MessageDelegate</name>
<message> <message>
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/> <location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
<source>redacted</source> <source>redacted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -385,9 +420,19 @@
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Password</source> <source>Password</source>
<translation>Salasana</translation> <translation>Salasana</translation>
</message> </message>
<message>
<location line="+2"/>
<source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Password confirmation</source> <source>Password confirmation</source>
@ -395,11 +440,16 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Home Server</source> <source>Homeserver</source>
<translation>Kotipalvelin</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+2"/>
<source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>REGISTER</source> <source>REGISTER</source>
<translation>REKISTERÖIDY</translation> <translation>REKISTERÖIDY</translation>
</message> </message>
@ -548,7 +598,7 @@
<context> <context>
<name>TimelineModel</name> <name>TimelineModel</name>
<message> <message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+844"/> <location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<source>-- Decryption Error (failed to communicate with DB) --</source> <source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished">-- Virhe purkaessa salausta (tietokannan kanssa kommunikointi epäonnistui) --</translation> <translation type="unfinished">-- Virhe purkaessa salausta (tietokannan kanssa kommunikointi epäonnistui) --</translation>
@ -597,12 +647,7 @@
<translation type="unfinished">-- Salattu viesti (salauksen purkuavaimia ei löydetty) --</translation> <translation type="unfinished">-- Salattu viesti (salauksen purkuavaimia ei löydetty) --</translation>
</message> </message>
<message> <message>
<location line="-258"/> <location line="+82"/>
<source>You joined this room</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+340"/>
<source>-- Encrypted Event (Unknown event type) --</source> <source>-- Encrypted Event (Unknown event type) --</source>
<comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment>
<translation type="unfinished">-- Salattu viesti (tuntematon viestityyppi) --</translation> <translation type="unfinished">-- Salattu viesti (tuntematon viestityyppi) --</translation>
@ -722,7 +767,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="-1278"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1280"/>
<source>Rejected the knock from %1.</source> <source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -746,7 +796,7 @@
<context> <context>
<name>TimelineRow</name> <name>TimelineRow</name>
<message> <message>
<location filename="../qml/TimelineRow.qml" line="+83"/> <location filename="../qml/TimelineRow.qml" line="+84"/>
<source>React</source> <source>React</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -809,7 +859,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+254"/> <location line="+256"/>
<source>Close</source> <source>Close</source>
<translation type="unfinished">Sulje</translation> <translation type="unfinished">Sulje</translation>
</message> </message>

View File

@ -5,7 +5,7 @@
<name>Cache</name> <name>Cache</name>
<message> <message>
<location filename="../../src/Cache.cpp" line="+1341"/> <location filename="../../src/Cache.cpp" line="+1341"/>
<source>You joined this room</source> <source>You joined this room.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -18,12 +18,22 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<location line="+894"/> <location line="+898"/>
<source>Invited user: %1</source> <source>Invited user: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-5"/> <location line="-463"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+30"/>
<source>Failed to invite %1 to %2: %3</source> <source>Failed to invite %1 to %2: %3</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -58,7 +68,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-819"/> <location line="-823"/>
<source>Failed to upload media. Please try again.</source> <source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -68,12 +78,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+13"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Incompatible cache version</source> <source>Incompatible cache version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -99,7 +104,7 @@
</message> </message>
<message> <message>
<location line="+51"/> <location line="+51"/>
<location line="+215"/> <location line="+219"/>
<source>Please try to login again: %1</source> <source>Please try to login again: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -124,12 +129,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+16"/>
<source>Room %1 created</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>Failed to leave room: %1</source> <source>Failed to leave room: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -238,10 +238,15 @@
<context> <context>
<name>EncryptionIndicator</name> <name>EncryptionIndicator</name>
<message> <message>
<location filename="../qml/EncryptionIndicator.qml" line="+12"/> <location filename="../qml/EncryptionIndicator.qml" line="+36"/>
<source>Encrypted</source> <source>Encrypted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location line="+2"/>
<source>This message is not encrypted!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>InviteeItem</name> <name>InviteeItem</name>
@ -254,7 +259,7 @@
<context> <context>
<name>LoginPage</name> <name>LoginPage</name>
<message> <message>
<location filename="../../src/LoginPage.cpp" line="+82"/> <location filename="../../src/LoginPage.cpp" line="+89"/>
<source>Matrix ID</source> <source>Matrix ID</source>
<translation>Identifiant Matrix</translation> <translation>Identifiant Matrix</translation>
</message> </message>
@ -264,22 +269,42 @@
<translation>ex : @joe:matrix.org</translation> <translation>ex : @joe:matrix.org</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+2"/>
<source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup.
Example: @user:server.my
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+21"/>
<source>Password</source> <source>Password</source>
<translation>Mot de passe</translation> <translation>Mot de passe</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+5"/>
<source>Device name</source> <source>Device name</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>The address that can be used to contact you homeservers client API.
Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<source>LOGIN</source> <source>LOGIN</source>
<translation>CONNEXION</translation> <translation>CONNEXION</translation>
</message> </message>
<message> <message>
<location line="+85"/> <location line="-100"/>
<source>Autodiscovery failed. Received malformed response.</source> <source>Autodiscovery failed. Received malformed response.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -289,7 +314,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+24"/> <location line="+25"/>
<source>The required endpoints were not found. Possibly not a Matrix server.</source> <source>The required endpoints were not found. Possibly not a Matrix server.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -304,10 +329,20 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+60"/> <location line="+55"/>
<source>SSO LOGIN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+25"/>
<source>Empty password</source> <source>Empty password</source>
<translation>Mot de passe vide</translation> <translation>Mot de passe vide</translation>
</message> </message>
<message>
<location line="+52"/>
<source>SSO login failed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MemberList</name> <name>MemberList</name>
@ -325,7 +360,7 @@
<context> <context>
<name>MessageDelegate</name> <name>MessageDelegate</name>
<message> <message>
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/> <location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
<source>redacted</source> <source>redacted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -385,9 +420,19 @@
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Password</source> <source>Password</source>
<translation>Mot de passe</translation> <translation>Mot de passe</translation>
</message> </message>
<message>
<location line="+2"/>
<source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Password confirmation</source> <source>Password confirmation</source>
@ -395,12 +440,16 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Home Server</source> <source>Homeserver</source>
<translatorcomment>À affiner...</translatorcomment> <translation type="unfinished"></translation>
<translation>Serveur Matrix</translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+2"/>
<source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>REGISTER</source> <source>REGISTER</source>
<translation>S&apos;ENREGISTRER</translation> <translation>S&apos;ENREGISTRER</translation>
</message> </message>
@ -549,7 +598,7 @@
<context> <context>
<name>TimelineModel</name> <name>TimelineModel</name>
<message> <message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+844"/> <location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<source>-- Decryption Error (failed to communicate with DB) --</source> <source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -598,12 +647,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-258"/> <location line="+82"/>
<source>You joined this room</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+340"/>
<source>-- Encrypted Event (Unknown event type) --</source> <source>-- Encrypted Event (Unknown event type) --</source>
<comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -723,7 +767,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="-1278"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1280"/>
<source>Rejected the knock from %1.</source> <source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -747,7 +796,7 @@
<context> <context>
<name>TimelineRow</name> <name>TimelineRow</name>
<message> <message>
<location filename="../qml/TimelineRow.qml" line="+83"/> <location filename="../qml/TimelineRow.qml" line="+84"/>
<source>React</source> <source>React</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -810,7 +859,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+254"/> <location line="+256"/>
<source>Close</source> <source>Close</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -5,7 +5,7 @@
<name>Cache</name> <name>Cache</name>
<message> <message>
<location filename="../../src/Cache.cpp" line="+1341"/> <location filename="../../src/Cache.cpp" line="+1341"/>
<source>You joined this room</source> <source>You joined this room.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -18,12 +18,22 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<location line="+894"/> <location line="+898"/>
<source>Invited user: %1</source> <source>Invited user: %1</source>
<translation>: %1</translation> <translation>: %1</translation>
</message> </message>
<message> <message>
<location line="-5"/> <location line="-463"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+30"/>
<source>Failed to invite %1 to %2: %3</source> <source>Failed to invite %1 to %2: %3</source>
<translation>%2%1: %3</translation> <translation>%2%1: %3</translation>
</message> </message>
@ -58,7 +68,7 @@
<translation>: %1</translation> <translation>: %1</translation>
</message> </message>
<message> <message>
<location line="-819"/> <location line="-823"/>
<source>Failed to upload media. Please try again.</source> <source>Failed to upload media. Please try again.</source>
<translation></translation> <translation></translation>
</message> </message>
@ -68,12 +78,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+13"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Incompatible cache version</source> <source>Incompatible cache version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -99,7 +104,7 @@
</message> </message>
<message> <message>
<location line="+51"/> <location line="+51"/>
<location line="+215"/> <location line="+219"/>
<source>Please try to login again: %1</source> <source>Please try to login again: %1</source>
<translation>: %1</translation> <translation>: %1</translation>
</message> </message>
@ -124,12 +129,7 @@
<translation>: %1</translation> <translation>: %1</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+16"/>
<source>Room %1 created</source>
<translation> %1 </translation>
</message>
<message>
<location line="+11"/>
<source>Failed to leave room: %1</source> <source>Failed to leave room: %1</source>
<translation>: %1</translation> <translation>: %1</translation>
</message> </message>
@ -238,10 +238,15 @@
<context> <context>
<name>EncryptionIndicator</name> <name>EncryptionIndicator</name>
<message> <message>
<location filename="../qml/EncryptionIndicator.qml" line="+12"/> <location filename="../qml/EncryptionIndicator.qml" line="+36"/>
<source>Encrypted</source> <source>Encrypted</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<location line="+2"/>
<source>This message is not encrypted!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>InviteeItem</name> <name>InviteeItem</name>
@ -254,7 +259,7 @@
<context> <context>
<name>LoginPage</name> <name>LoginPage</name>
<message> <message>
<location filename="../../src/LoginPage.cpp" line="+82"/> <location filename="../../src/LoginPage.cpp" line="+89"/>
<source>Matrix ID</source> <source>Matrix ID</source>
<translation>Matrix ID</translation> <translation>Matrix ID</translation>
</message> </message>
@ -264,22 +269,42 @@
<translation> @joe:matrix.org</translation> <translation> @joe:matrix.org</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+2"/>
<source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup.
Example: @user:server.my
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+21"/>
<source>Password</source> <source>Password</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+5"/>
<source>Device name</source> <source>Device name</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>The address that can be used to contact you homeservers client API.
Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<source>LOGIN</source> <source>LOGIN</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location line="+85"/> <location line="-100"/>
<source>Autodiscovery failed. Received malformed response.</source> <source>Autodiscovery failed. Received malformed response.</source>
<translation></translation> <translation></translation>
</message> </message>
@ -289,7 +314,7 @@
<translation>.well-known要求時の不明なエラー</translation> <translation>.well-known要求時の不明なエラー</translation>
</message> </message>
<message> <message>
<location line="+24"/> <location line="+25"/>
<source>The required endpoints were not found. Possibly not a Matrix server.</source> <source>The required endpoints were not found. Possibly not a Matrix server.</source>
<translation>Matrixサーバーではないかもしれません</translation> <translation>Matrixサーバーではないかもしれません</translation>
</message> </message>
@ -304,10 +329,20 @@
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location line="+60"/> <location line="+55"/>
<source>SSO LOGIN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+25"/>
<source>Empty password</source> <source>Empty password</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<location line="+52"/>
<source>SSO login failed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MemberList</name> <name>MemberList</name>
@ -325,7 +360,7 @@
<context> <context>
<name>MessageDelegate</name> <name>MessageDelegate</name>
<message> <message>
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/> <location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
<source>redacted</source> <source>redacted</source>
<translation></translation> <translation></translation>
</message> </message>
@ -385,9 +420,19 @@
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Password</source> <source>Password</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<location line="+2"/>
<source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Password confirmation</source> <source>Password confirmation</source>
@ -395,11 +440,16 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Home Server</source> <source>Homeserver</source>
<translation></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+2"/>
<source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>REGISTER</source> <source>REGISTER</source>
<translation></translation> <translation></translation>
</message> </message>
@ -548,7 +598,7 @@
<context> <context>
<name>TimelineModel</name> <name>TimelineModel</name>
<message> <message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+844"/> <location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<source>-- Decryption Error (failed to communicate with DB) --</source> <source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation>-- () --</translation> <translation>-- () --</translation>
@ -597,12 +647,7 @@
<translation type="unfinished">-- () --</translation> <translation type="unfinished">-- () --</translation>
</message> </message>
<message> <message>
<location line="-258"/> <location line="+82"/>
<source>You joined this room</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+340"/>
<source>-- Encrypted Event (Unknown event type) --</source> <source>-- Encrypted Event (Unknown event type) --</source>
<comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment>
<translation type="unfinished">-- () --</translation> <translation type="unfinished">-- () --</translation>
@ -721,7 +766,12 @@
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="-1278"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1280"/>
<source>Rejected the knock from %1.</source> <source>Rejected the knock from %1.</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
@ -745,7 +795,7 @@
<context> <context>
<name>TimelineRow</name> <name>TimelineRow</name>
<message> <message>
<location filename="../qml/TimelineRow.qml" line="+83"/> <location filename="../qml/TimelineRow.qml" line="+84"/>
<source>React</source> <source>React</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -808,7 +858,7 @@
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location line="+254"/> <location line="+256"/>
<source>Close</source> <source>Close</source>
<translation></translation> <translation></translation>
</message> </message>

View File

@ -5,7 +5,7 @@
<name>Cache</name> <name>Cache</name>
<message> <message>
<location filename="../../src/Cache.cpp" line="+1341"/> <location filename="../../src/Cache.cpp" line="+1341"/>
<source>You joined this room</source> <source>You joined this room.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -18,12 +18,22 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<location line="+894"/> <location line="+898"/>
<source>Invited user: %1</source> <source>Invited user: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-5"/> <location line="-463"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+30"/>
<source>Failed to invite %1 to %2: %3</source> <source>Failed to invite %1 to %2: %3</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -58,7 +68,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-819"/> <location line="-823"/>
<source>Failed to upload media. Please try again.</source> <source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -68,12 +78,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+13"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Incompatible cache version</source> <source>Incompatible cache version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -99,7 +104,7 @@
</message> </message>
<message> <message>
<location line="+51"/> <location line="+51"/>
<location line="+215"/> <location line="+219"/>
<source>Please try to login again: %1</source> <source>Please try to login again: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -124,12 +129,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+16"/>
<source>Room %1 created</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>Failed to leave room: %1</source> <source>Failed to leave room: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -238,10 +238,15 @@
<context> <context>
<name>EncryptionIndicator</name> <name>EncryptionIndicator</name>
<message> <message>
<location filename="../qml/EncryptionIndicator.qml" line="+12"/> <location filename="../qml/EncryptionIndicator.qml" line="+36"/>
<source>Encrypted</source> <source>Encrypted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location line="+2"/>
<source>This message is not encrypted!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>InviteeItem</name> <name>InviteeItem</name>
@ -254,7 +259,7 @@
<context> <context>
<name>LoginPage</name> <name>LoginPage</name>
<message> <message>
<location filename="../../src/LoginPage.cpp" line="+82"/> <location filename="../../src/LoginPage.cpp" line="+89"/>
<source>Matrix ID</source> <source>Matrix ID</source>
<translation>Matrix-id</translation> <translation>Matrix-id</translation>
</message> </message>
@ -264,22 +269,42 @@
<translation>b.v @jan:matrix.org&lt;</translation> <translation>b.v @jan:matrix.org&lt;</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+2"/>
<source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup.
Example: @user:server.my
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+21"/>
<source>Password</source> <source>Password</source>
<translation>Wachtwoord</translation> <translation>Wachtwoord</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+5"/>
<source>Device name</source> <source>Device name</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>The address that can be used to contact you homeservers client API.
Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<source>LOGIN</source> <source>LOGIN</source>
<translation>INLOGGEN</translation> <translation>INLOGGEN</translation>
</message> </message>
<message> <message>
<location line="+85"/> <location line="-100"/>
<source>Autodiscovery failed. Received malformed response.</source> <source>Autodiscovery failed. Received malformed response.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -289,7 +314,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+24"/> <location line="+25"/>
<source>The required endpoints were not found. Possibly not a Matrix server.</source> <source>The required endpoints were not found. Possibly not a Matrix server.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -304,10 +329,20 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+60"/> <location line="+55"/>
<source>SSO LOGIN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+25"/>
<source>Empty password</source> <source>Empty password</source>
<translation>Leeg wachtwoord</translation> <translation>Leeg wachtwoord</translation>
</message> </message>
<message>
<location line="+52"/>
<source>SSO login failed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MemberList</name> <name>MemberList</name>
@ -325,7 +360,7 @@
<context> <context>
<name>MessageDelegate</name> <name>MessageDelegate</name>
<message> <message>
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/> <location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
<source>redacted</source> <source>redacted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -385,9 +420,19 @@
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Password</source> <source>Password</source>
<translation>Wachtwoord</translation> <translation>Wachtwoord</translation>
</message> </message>
<message>
<location line="+2"/>
<source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Password confirmation</source> <source>Password confirmation</source>
@ -395,11 +440,16 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Home Server</source> <source>Homeserver</source>
<translation>Thuisserver</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+2"/>
<source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>REGISTER</source> <source>REGISTER</source>
<translation>REGISTREREN</translation> <translation>REGISTREREN</translation>
</message> </message>
@ -548,7 +598,7 @@
<context> <context>
<name>TimelineModel</name> <name>TimelineModel</name>
<message> <message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+844"/> <location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<source>-- Decryption Error (failed to communicate with DB) --</source> <source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -597,12 +647,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-258"/> <location line="+82"/>
<source>You joined this room</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+340"/>
<source>-- Encrypted Event (Unknown event type) --</source> <source>-- Encrypted Event (Unknown event type) --</source>
<comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -722,7 +767,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="-1278"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1280"/>
<source>Rejected the knock from %1.</source> <source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -746,7 +796,7 @@
<context> <context>
<name>TimelineRow</name> <name>TimelineRow</name>
<message> <message>
<location filename="../qml/TimelineRow.qml" line="+83"/> <location filename="../qml/TimelineRow.qml" line="+84"/>
<source>React</source> <source>React</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -809,7 +859,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+254"/> <location line="+256"/>
<source>Close</source> <source>Close</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -5,7 +5,7 @@
<name>Cache</name> <name>Cache</name>
<message> <message>
<location filename="../../src/Cache.cpp" line="+1341"/> <location filename="../../src/Cache.cpp" line="+1341"/>
<source>You joined this room</source> <source>You joined this room.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -18,12 +18,22 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<location line="+894"/> <location line="+898"/>
<source>Invited user: %1</source> <source>Invited user: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-5"/> <location line="-463"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+30"/>
<source>Failed to invite %1 to %2: %3</source> <source>Failed to invite %1 to %2: %3</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -58,7 +68,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-819"/> <location line="-823"/>
<source>Failed to upload media. Please try again.</source> <source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -68,12 +78,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+13"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Incompatible cache version</source> <source>Incompatible cache version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -99,7 +104,7 @@
</message> </message>
<message> <message>
<location line="+51"/> <location line="+51"/>
<location line="+215"/> <location line="+219"/>
<source>Please try to login again: %1</source> <source>Please try to login again: %1</source>
<translation>Spróbuj zalogować się ponownie: %1</translation> <translation>Spróbuj zalogować się ponownie: %1</translation>
</message> </message>
@ -124,12 +129,7 @@
<translation>Tworzenie pokoju nie powiodło się: %1</translation> <translation>Tworzenie pokoju nie powiodło się: %1</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+16"/>
<source>Room %1 created</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>Failed to leave room: %1</source> <source>Failed to leave room: %1</source>
<translation>Nie udało się opuścić pokoju: %1</translation> <translation>Nie udało się opuścić pokoju: %1</translation>
</message> </message>
@ -238,10 +238,15 @@
<context> <context>
<name>EncryptionIndicator</name> <name>EncryptionIndicator</name>
<message> <message>
<location filename="../qml/EncryptionIndicator.qml" line="+12"/> <location filename="../qml/EncryptionIndicator.qml" line="+36"/>
<source>Encrypted</source> <source>Encrypted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location line="+2"/>
<source>This message is not encrypted!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>InviteeItem</name> <name>InviteeItem</name>
@ -254,7 +259,7 @@
<context> <context>
<name>LoginPage</name> <name>LoginPage</name>
<message> <message>
<location filename="../../src/LoginPage.cpp" line="+82"/> <location filename="../../src/LoginPage.cpp" line="+89"/>
<source>Matrix ID</source> <source>Matrix ID</source>
<translation>ID Matrixa</translation> <translation>ID Matrixa</translation>
</message> </message>
@ -264,22 +269,42 @@
<translation>np. @joe:matrix.org</translation> <translation>np. @joe:matrix.org</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+2"/>
<source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup.
Example: @user:server.my
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+21"/>
<source>Password</source> <source>Password</source>
<translation>Hasło</translation> <translation>Hasło</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+5"/>
<source>Device name</source> <source>Device name</source>
<translation>Nazwa urządzenia</translation> <translation>Nazwa urządzenia</translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>The address that can be used to contact you homeservers client API.
Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<source>LOGIN</source> <source>LOGIN</source>
<translation>ZALOGUJ</translation> <translation>ZALOGUJ</translation>
</message> </message>
<message> <message>
<location line="+85"/> <location line="-100"/>
<source>Autodiscovery failed. Received malformed response.</source> <source>Autodiscovery failed. Received malformed response.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -289,7 +314,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+24"/> <location line="+25"/>
<source>The required endpoints were not found. Possibly not a Matrix server.</source> <source>The required endpoints were not found. Possibly not a Matrix server.</source>
<translation>Nie odnaleziono wymaganych punktów końcowych. To może nie być serwer Matriksa.</translation> <translation>Nie odnaleziono wymaganych punktów końcowych. To może nie być serwer Matriksa.</translation>
</message> </message>
@ -304,10 +329,20 @@
<translation>Wystąpił nieznany błąd. Upewnij się, że domena serwera domowego jest prawidłowa.</translation> <translation>Wystąpił nieznany błąd. Upewnij się, że domena serwera domowego jest prawidłowa.</translation>
</message> </message>
<message> <message>
<location line="+60"/> <location line="+55"/>
<source>SSO LOGIN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+25"/>
<source>Empty password</source> <source>Empty password</source>
<translation>Puste hasło</translation> <translation>Puste hasło</translation>
</message> </message>
<message>
<location line="+52"/>
<source>SSO login failed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MemberList</name> <name>MemberList</name>
@ -325,7 +360,7 @@
<context> <context>
<name>MessageDelegate</name> <name>MessageDelegate</name>
<message> <message>
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/> <location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
<source>redacted</source> <source>redacted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -385,9 +420,19 @@
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Password</source> <source>Password</source>
<translation>Hasło</translation> <translation>Hasło</translation>
</message> </message>
<message>
<location line="+2"/>
<source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Password confirmation</source> <source>Password confirmation</source>
@ -395,11 +440,16 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Home Server</source> <source>Homeserver</source>
<translation>Serwer domowy</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+2"/>
<source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>REGISTER</source> <source>REGISTER</source>
<translation>ZAREJESTRUJ</translation> <translation>ZAREJESTRUJ</translation>
</message> </message>
@ -548,7 +598,7 @@
<context> <context>
<name>TimelineModel</name> <name>TimelineModel</name>
<message> <message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+844"/> <location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<source>-- Decryption Error (failed to communicate with DB) --</source> <source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -597,12 +647,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-258"/> <location line="+82"/>
<source>You joined this room</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+340"/>
<source>-- Encrypted Event (Unknown event type) --</source> <source>-- Encrypted Event (Unknown event type) --</source>
<comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -723,7 +768,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="-1278"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1280"/>
<source>Rejected the knock from %1.</source> <source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -747,7 +797,7 @@
<context> <context>
<name>TimelineRow</name> <name>TimelineRow</name>
<message> <message>
<location filename="../qml/TimelineRow.qml" line="+83"/> <location filename="../qml/TimelineRow.qml" line="+84"/>
<source>React</source> <source>React</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -810,7 +860,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+254"/> <location line="+256"/>
<source>Close</source> <source>Close</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -5,7 +5,7 @@
<name>Cache</name> <name>Cache</name>
<message> <message>
<location filename="../../src/Cache.cpp" line="+1341"/> <location filename="../../src/Cache.cpp" line="+1341"/>
<source>You joined this room</source> <source>You joined this room.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -18,12 +18,22 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<location line="+894"/> <location line="+898"/>
<source>Invited user: %1</source> <source>Invited user: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-5"/> <location line="-463"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+30"/>
<source>Failed to invite %1 to %2: %3</source> <source>Failed to invite %1 to %2: %3</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -58,7 +68,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-819"/> <location line="-823"/>
<source>Failed to upload media. Please try again.</source> <source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -68,12 +78,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+13"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Incompatible cache version</source> <source>Incompatible cache version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -99,7 +104,7 @@
</message> </message>
<message> <message>
<location line="+51"/> <location line="+51"/>
<location line="+215"/> <location line="+219"/>
<source>Please try to login again: %1</source> <source>Please try to login again: %1</source>
<translation>Повторите попытку входа: %1</translation> <translation>Повторите попытку входа: %1</translation>
</message> </message>
@ -124,12 +129,7 @@
<translation>Не удалось создать комнату: %1</translation> <translation>Не удалось создать комнату: %1</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+16"/>
<source>Room %1 created</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>Failed to leave room: %1</source> <source>Failed to leave room: %1</source>
<translation>Не удалось покинуть комнату: %1</translation> <translation>Не удалось покинуть комнату: %1</translation>
</message> </message>
@ -238,10 +238,15 @@
<context> <context>
<name>EncryptionIndicator</name> <name>EncryptionIndicator</name>
<message> <message>
<location filename="../qml/EncryptionIndicator.qml" line="+12"/> <location filename="../qml/EncryptionIndicator.qml" line="+36"/>
<source>Encrypted</source> <source>Encrypted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location line="+2"/>
<source>This message is not encrypted!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>InviteeItem</name> <name>InviteeItem</name>
@ -254,7 +259,7 @@
<context> <context>
<name>LoginPage</name> <name>LoginPage</name>
<message> <message>
<location filename="../../src/LoginPage.cpp" line="+82"/> <location filename="../../src/LoginPage.cpp" line="+89"/>
<source>Matrix ID</source> <source>Matrix ID</source>
<translation>Идентификатор Matrix</translation> <translation>Идентификатор Matrix</translation>
</message> </message>
@ -264,22 +269,42 @@
<translation>Пример: @joe:matrix.org</translation> <translation>Пример: @joe:matrix.org</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+2"/>
<source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup.
Example: @user:server.my
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+21"/>
<source>Password</source> <source>Password</source>
<translation>Пароль</translation> <translation>Пароль</translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+5"/>
<source>Device name</source> <source>Device name</source>
<translation>Имя устройства</translation> <translation>Имя устройства</translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>The address that can be used to contact you homeservers client API.
Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<source>LOGIN</source> <source>LOGIN</source>
<translation>ВОЙТИ</translation> <translation>ВОЙТИ</translation>
</message> </message>
<message> <message>
<location line="+85"/> <location line="-100"/>
<source>Autodiscovery failed. Received malformed response.</source> <source>Autodiscovery failed. Received malformed response.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -289,7 +314,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+24"/> <location line="+25"/>
<source>The required endpoints were not found. Possibly not a Matrix server.</source> <source>The required endpoints were not found. Possibly not a Matrix server.</source>
<translation>Необходимые конечные точки не найдены. Возможно, это не сервер Matrix.</translation> <translation>Необходимые конечные точки не найдены. Возможно, это не сервер Matrix.</translation>
</message> </message>
@ -304,10 +329,20 @@
<translation>Произошла неизвестная ошибка. Убедитесь, что домен homeserver действителен.</translation> <translation>Произошла неизвестная ошибка. Убедитесь, что домен homeserver действителен.</translation>
</message> </message>
<message> <message>
<location line="+60"/> <location line="+55"/>
<source>SSO LOGIN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+25"/>
<source>Empty password</source> <source>Empty password</source>
<translation>Пустой пароль</translation> <translation>Пустой пароль</translation>
</message> </message>
<message>
<location line="+52"/>
<source>SSO login failed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MemberList</name> <name>MemberList</name>
@ -325,7 +360,7 @@
<context> <context>
<name>MessageDelegate</name> <name>MessageDelegate</name>
<message> <message>
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/> <location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
<source>redacted</source> <source>redacted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -385,9 +420,19 @@
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Password</source> <source>Password</source>
<translation>Пароль</translation> <translation>Пароль</translation>
</message> </message>
<message>
<location line="+2"/>
<source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Password confirmation</source> <source>Password confirmation</source>
@ -395,11 +440,16 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Home Server</source> <source>Homeserver</source>
<translation>Домашний сервер</translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+2"/>
<source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>REGISTER</source> <source>REGISTER</source>
<translation>РЕГИСТРАЦИЯ</translation> <translation>РЕГИСТРАЦИЯ</translation>
</message> </message>
@ -548,7 +598,7 @@
<context> <context>
<name>TimelineModel</name> <name>TimelineModel</name>
<message> <message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+844"/> <location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<source>-- Decryption Error (failed to communicate with DB) --</source> <source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -597,12 +647,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-258"/> <location line="+82"/>
<source>You joined this room</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+340"/>
<source>-- Encrypted Event (Unknown event type) --</source> <source>-- Encrypted Event (Unknown event type) --</source>
<comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -723,7 +768,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="-1278"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1280"/>
<source>Rejected the knock from %1.</source> <source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -747,7 +797,7 @@
<context> <context>
<name>TimelineRow</name> <name>TimelineRow</name>
<message> <message>
<location filename="../qml/TimelineRow.qml" line="+83"/> <location filename="../qml/TimelineRow.qml" line="+84"/>
<source>React</source> <source>React</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -810,7 +860,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+254"/> <location line="+256"/>
<source>Close</source> <source>Close</source>
<translation type="unfinished">Закрыть</translation> <translation type="unfinished">Закрыть</translation>
</message> </message>

View File

@ -5,7 +5,7 @@
<name>Cache</name> <name>Cache</name>
<message> <message>
<location filename="../../src/Cache.cpp" line="+1341"/> <location filename="../../src/Cache.cpp" line="+1341"/>
<source>You joined this room</source> <source>You joined this room.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -18,12 +18,22 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<location line="+894"/> <location line="+898"/>
<source>Invited user: %1</source> <source>Invited user: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-5"/> <location line="-463"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+428"/>
<source>Room %1 created.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+30"/>
<source>Failed to invite %1 to %2: %3</source> <source>Failed to invite %1 to %2: %3</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -58,7 +68,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-819"/> <location line="-823"/>
<source>Failed to upload media. Please try again.</source> <source>Failed to upload media. Please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -68,12 +78,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+1"/> <location line="+13"/>
<source>Migrating the cache to the current version failed. This can have different reasons. Please open an issue and try to use an older version in the mean time. Alternatively you can try deleting the cache manually</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+12"/>
<source>Incompatible cache version</source> <source>Incompatible cache version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -99,7 +104,7 @@
</message> </message>
<message> <message>
<location line="+51"/> <location line="+51"/>
<location line="+215"/> <location line="+219"/>
<source>Please try to login again: %1</source> <source>Please try to login again: %1</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
@ -124,12 +129,7 @@
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message> <message>
<location line="+5"/> <location line="+16"/>
<source>Room %1 created</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+11"/>
<source>Failed to leave room: %1</source> <source>Failed to leave room: %1</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
@ -238,10 +238,15 @@
<context> <context>
<name>EncryptionIndicator</name> <name>EncryptionIndicator</name>
<message> <message>
<location filename="../qml/EncryptionIndicator.qml" line="+12"/> <location filename="../qml/EncryptionIndicator.qml" line="+36"/>
<source>Encrypted</source> <source>Encrypted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location line="+2"/>
<source>This message is not encrypted!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>InviteeItem</name> <name>InviteeItem</name>
@ -254,7 +259,7 @@
<context> <context>
<name>LoginPage</name> <name>LoginPage</name>
<message> <message>
<location filename="../../src/LoginPage.cpp" line="+82"/> <location filename="../../src/LoginPage.cpp" line="+89"/>
<source>Matrix ID</source> <source>Matrix ID</source>
<translation></translation> <translation></translation>
</message> </message>
@ -264,22 +269,42 @@
<translation> @joe:matrix.org</translation> <translation> @joe:matrix.org</translation>
</message> </message>
<message> <message>
<location line="+15"/> <location line="+2"/>
<source>Your login name. A mxid should start with @ followed by the user id. After the user id you need to include your server name after a :.
You can also put your homeserver address there, if your server doesn&apos;t support .well-known lookup.
Example: @user:server.my
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+21"/>
<source>Password</source> <source>Password</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location line="+4"/> <location line="+5"/>
<source>Device name</source> <source>Device name</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location line="+19"/> <location line="+2"/>
<source>A name for this device, which will be shown to others, when verifying your devices. If none is provided, a random string is used for privacy purposes.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+6"/>
<source>The address that can be used to contact you homeservers client API.
Example: https://server.my:8787</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+16"/>
<location line="+185"/>
<source>LOGIN</source> <source>LOGIN</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location line="+85"/> <location line="-100"/>
<source>Autodiscovery failed. Received malformed response.</source> <source>Autodiscovery failed. Received malformed response.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -289,7 +314,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+24"/> <location line="+25"/>
<source>The required endpoints were not found. Possibly not a Matrix server.</source> <source>The required endpoints were not found. Possibly not a Matrix server.</source>
<translation> Matrix </translation> <translation> Matrix </translation>
</message> </message>
@ -304,10 +329,20 @@
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<location line="+60"/> <location line="+55"/>
<source>SSO LOGIN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+25"/>
<source>Empty password</source> <source>Empty password</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<location line="+52"/>
<source>SSO login failed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MemberList</name> <name>MemberList</name>
@ -325,7 +360,7 @@
<context> <context>
<name>MessageDelegate</name> <name>MessageDelegate</name>
<message> <message>
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/> <location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
<source>redacted</source> <source>redacted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -385,9 +420,19 @@
</message> </message>
<message> <message>
<location line="+3"/> <location line="+3"/>
<source>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+4"/>
<source>Password</source> <source>Password</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<location line="+2"/>
<source>Please choose a secure password. The exact requirements for password strength may depend on your server.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Password confirmation</source> <source>Password confirmation</source>
@ -395,11 +440,16 @@
</message> </message>
<message> <message>
<location line="+4"/> <location line="+4"/>
<source>Home Server</source> <source>Homeserver</source>
<translation></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+16"/> <location line="+2"/>
<source>A server that allows registration. Since matrix is decentralized, you need to first find a server you can register on or host your own.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+17"/>
<source>REGISTER</source> <source>REGISTER</source>
<translation></translation> <translation></translation>
</message> </message>
@ -548,7 +598,7 @@
<context> <context>
<name>TimelineModel</name> <name>TimelineModel</name>
<message> <message>
<location filename="../../src/timeline/TimelineModel.cpp" line="+844"/> <location filename="../../src/timeline/TimelineModel.cpp" line="+853"/>
<source>-- Decryption Error (failed to communicate with DB) --</source> <source>-- Decryption Error (failed to communicate with DB) --</source>
<comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment> <comment>Placeholder, when the message can&apos;t be decrypted, because the DB access failed when trying to lookup the session.</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -597,12 +647,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="-258"/> <location line="+82"/>
<source>You joined this room</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+340"/>
<source>-- Encrypted Event (Unknown event type) --</source> <source>-- Encrypted Event (Unknown event type) --</source>
<comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment> <comment>Placeholder, when the message was decrypted, but we couldn&apos;t parse it, because Nheko/mtxclient don&apos;t support that event type yet.</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -721,7 +766,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+2"/> <location line="-1278"/>
<source>You joined this room.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location line="+1280"/>
<source>Rejected the knock from %1.</source> <source>Rejected the knock from %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -745,7 +795,7 @@
<context> <context>
<name>TimelineRow</name> <name>TimelineRow</name>
<message> <message>
<location filename="../qml/TimelineRow.qml" line="+83"/> <location filename="../qml/TimelineRow.qml" line="+84"/>
<source>React</source> <source>React</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -808,7 +858,7 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location line="+254"/> <location line="+256"/>
<source>Close</source> <source>Close</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -3,13 +3,14 @@ import QtQuick.Controls 2.1
import im.nheko 1.0 import im.nheko 1.0
Rectangle { Rectangle {
property bool encrypted: false
id: indicator id: indicator
color: "transparent" color: "transparent"
width: 16 width: 16
height: 16 height: 16
ToolTip.visible: ma.containsMouse && indicator.visible ToolTip.visible: ma.containsMouse && indicator.visible
ToolTip.text: qsTr("Encrypted") ToolTip.text: getEncryptionTooltip()
MouseArea{ MouseArea{
id: ma id: ma
@ -20,7 +21,21 @@ Rectangle {
Image { Image {
id: stateImg id: stateImg
anchors.fill: parent anchors.fill: parent
source: "image://colorimage/:/icons/icons/ui/lock.png?"+colors.buttonText source: getEncryptionImage()
}
function getEncryptionImage() {
if (encrypted)
return "image://colorimage/:/icons/icons/ui/lock.png?"+colors.buttonText
else
return "image://colorimage/:/icons/icons/ui/unlock.png?#dd3d3d"
}
function getEncryptionTooltip() {
if (encrypted)
return qsTr("Encrypted")
else
return qsTr("This message is not encrypted!")
} }
} }

View File

@ -71,6 +71,8 @@ MouseArea {
pixelDelta = wheel.pixelDelta.y pixelDelta = wheel.pixelDelta.y
} }
pixelDelta = Math.round(pixelDelta)
if (!pixelDelta) { if (!pixelDelta) {
return flickableItem.contentY; return flickableItem.contentY;
} }

View File

@ -67,7 +67,8 @@ MouseArea {
} }
EncryptionIndicator { EncryptionIndicator {
visible: model.isEncrypted visible: model.isRoomEncrypted
encrypted: model.isEncrypted
Layout.alignment: Qt.AlignRight | Qt.AlignTop Layout.alignment: Qt.AlignRight | Qt.AlignTop
Layout.preferredHeight: 16 Layout.preferredHeight: 16
width: 16 width: 16

View File

@ -125,6 +125,8 @@ Page {
visible: timelineManager.timeline != null visible: timelineManager.timeline != null
cacheBuffer: 500
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
anchors.top: parent.top anchors.top: parent.top

View File

@ -6,10 +6,11 @@ Item {
property double tempWidth: Math.min(parent ? parent.width : undefined, model.data.width < 1 ? parent.width : model.data.width) property double tempWidth: Math.min(parent ? parent.width : undefined, model.data.width < 1 ? parent.width : model.data.width)
property double tempHeight: tempWidth * model.data.proportionalHeight property double tempHeight: tempWidth * model.data.proportionalHeight
property bool tooHigh: tempHeight > timelineRoot.height / 2 property double divisor: model.isReply ? 4 : 2
property bool tooHigh: tempHeight > timelineRoot.height / divisor
height: tooHigh ? timelineRoot.height / 2 : tempHeight height: tooHigh ? timelineRoot.height / divisor : tempHeight
width: tooHigh ? (timelineRoot.height / 2) / model.data.proportionalHeight : tempWidth width: tooHigh ? (timelineRoot.height / divisor) / model.data.proportionalHeight : tempWidth
Image { Image {
id: blurhash id: blurhash

View File

@ -6,9 +6,11 @@ Item {
Item { Item {
id: model id: model
property var data; property var data;
property bool isReply: false
} }
property alias modelData: model.data property alias modelData: model.data
property alias isReply: model.isReply
height: chooser.childrenRect.height height: chooser.childrenRect.height
property real implicitWidth: (chooser.child && chooser.child.implicitWidth) ? chooser.child.implicitWidth : width property real implicitWidth: (chooser.child && chooser.child.implicitWidth) ? chooser.child.implicitWidth : width

View File

@ -1,4 +1,6 @@
TextMessage { TextMessage {
font.italic: true font.italic: true
color: colors.buttonText color: colors.buttonText
height: isReply ? Math.min(chat.height / 8, implicitHeight) : undefined
clip: true
} }

View File

@ -20,8 +20,14 @@ Rectangle {
Rectangle { Rectangle {
id: videoContainer id: videoContainer
visible: model.data.type == MtxEvent.VideoMessage visible: model.data.type == MtxEvent.VideoMessage
width: Math.min(parent.width, model.data.width ? model.data.width : 400) // some media has 0 as size... property double tempWidth: Math.min(parent ? parent.width : undefined, model.data.width < 1 ? 400 : model.data.width)
height: width*model.data.proportionalHeight property double tempHeight: tempWidth * model.data.proportionalHeight
property double divisor: model.isReply ? 4 : 2
property bool tooHigh: tempHeight > timelineRoot.height / divisor
height: tooHigh ? timelineRoot.height / divisor : tempHeight
width: tooHigh ? (timelineRoot.height / divisor) / model.data.proportionalHeight : tempWidth
Image { Image {
anchors.fill: parent anchors.fill: parent
source: model.data.thumbnailUrl.replace("mxc://", "image://MxcImage/") source: model.data.thumbnailUrl.replace("mxc://", "image://MxcImage/")

View File

@ -51,6 +51,7 @@ Item {
MessageDelegate { MessageDelegate {
id: reply id: reply
width: parent.width width: parent.width
isReply: true
} }
} }

View File

@ -4,4 +4,6 @@ MatrixText {
property string formatted: model.data.formattedBody property string formatted: model.data.formattedBody
text: "<style type=\"text/css\">a { color:"+colors.link+";}</style>" + formatted.replace("<pre>", "<pre style='white-space: pre-wrap'>") text: "<style type=\"text/css\">a { color:"+colors.link+";}</style>" + formatted.replace("<pre>", "<pre style='white-space: pre-wrap'>")
width: parent ? parent.width : undefined width: parent ? parent.width : undefined
height: isReply ? Math.min(chat.height / 8, implicitHeight) : undefined
clip: true
} }

View File

@ -14,6 +14,8 @@
<file>icons/ui/double-tick-indicator@2x.png</file> <file>icons/ui/double-tick-indicator@2x.png</file>
<file>icons/ui/lock.png</file> <file>icons/ui/lock.png</file>
<file>icons/ui/lock@2x.png</file> <file>icons/ui/lock@2x.png</file>
<file>icons/ui/unlock.png</file>
<file>icons/ui/unlock@2x.png</file>
<file>icons/ui/clock.png</file> <file>icons/ui/clock.png</file>
<file>icons/ui/clock@2x.png</file> <file>icons/ui/clock@2x.png</file>
<file>icons/ui/checkmark.png</file> <file>icons/ui/checkmark.png</file>

View File

@ -1338,7 +1338,7 @@ Cache::getLastMessageInfo(lmdb::txn &txn, const std::string &room_id)
auto time = QDateTime::fromMSecsSinceEpoch(ts); auto time = QDateTime::fromMSecsSinceEpoch(ts);
fallbackDesc = DescInfo{QString::fromStdString(obj["event"]["event_id"]), fallbackDesc = DescInfo{QString::fromStdString(obj["event"]["event_id"]),
local_user, local_user,
tr("You joined this room"), tr("You joined this room."),
utils::descriptiveTime(time), utils::descriptiveTime(time),
ts, ts,
time}; time};

View File

@ -666,7 +666,7 @@ ChatPage::bootstrap(QString userid, QString homeserver, QString token)
"This can have different reasons. Please open an " "This can have different reasons. Please open an "
"issue and try to use an older version in the mean " "issue and try to use an older version in the mean "
"time. Alternatively you can try deleting the cache " "time. Alternatively you can try deleting the cache "
"manually")); "manually."));
QCoreApplication::quit(); QCoreApplication::quit();
} }
loadStateFromCache(); loadStateFromCache();
@ -994,8 +994,12 @@ ChatPage::trySync()
const auto err_code = mtx::errors::to_string(err->matrix_error.errcode); const auto err_code = mtx::errors::to_string(err->matrix_error.errcode);
const int status_code = static_cast<int>(err->status_code); const int status_code = static_cast<int>(err->status_code);
if (http::is_logged_in() && err->matrix_error.errcode == if ((http::is_logged_in() &&
mtx::errors::ErrorCode::M_UNKNOWN_TOKEN) { (err->matrix_error.errcode ==
mtx::errors::ErrorCode::M_UNKNOWN_TOKEN ||
err->matrix_error.errcode ==
mtx::errors::ErrorCode::M_MISSING_TOKEN)) ||
!http::is_logged_in()) {
emit dropToLoginPageCb(msg); emit dropToLoginPageCb(msg);
return; return;
} }
@ -1086,7 +1090,7 @@ ChatPage::createRoom(const mtx::requests::CreateRoom &req)
} }
emit showNotification( emit showNotification(
tr("Room %1 created").arg(QString::fromStdString(res.room_id.to_string()))); tr("Room %1 created.").arg(QString::fromStdString(res.room_id.to_string())));
}); });
} }

View File

@ -15,28 +15,35 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include <QDesktopServices>
#include <QPainter> #include <QPainter>
#include <QStyleOption> #include <QStyleOption>
#include <mtx/identifiers.hpp> #include <mtx/identifiers.hpp>
#include <mtx/requests.hpp>
#include <mtx/responses/login.hpp> #include <mtx/responses/login.hpp>
#include "Config.h" #include "Config.h"
#include "Logging.h" #include "Logging.h"
#include "LoginPage.h" #include "LoginPage.h"
#include "MatrixClient.h" #include "MatrixClient.h"
#include "SSOHandler.h"
#include "ui/FlatButton.h" #include "ui/FlatButton.h"
#include "ui/LoadingIndicator.h" #include "ui/LoadingIndicator.h"
#include "ui/OverlayModal.h" #include "ui/OverlayModal.h"
#include "ui/RaisedButton.h" #include "ui/RaisedButton.h"
#include "ui/TextField.h" #include "ui/TextField.h"
Q_DECLARE_METATYPE(LoginPage::LoginMethod)
using namespace mtx::identifiers; using namespace mtx::identifiers;
LoginPage::LoginPage(QWidget *parent) LoginPage::LoginPage(QWidget *parent)
: QWidget(parent) : QWidget(parent)
, inferredServerAddress_() , inferredServerAddress_()
{ {
qRegisterMetaType<LoginPage::LoginMethod>("LoginPage::LoginMethod");
top_layout_ = new QVBoxLayout(); top_layout_ = new QVBoxLayout();
top_bar_layout_ = new QHBoxLayout(); top_bar_layout_ = new QHBoxLayout();
@ -81,6 +88,14 @@ LoginPage::LoginPage(QWidget *parent)
matrixid_input_ = new TextField(this); matrixid_input_ = new TextField(this);
matrixid_input_->setLabel(tr("Matrix ID")); matrixid_input_->setLabel(tr("Matrix ID"));
matrixid_input_->setPlaceholderText(tr("e.g @joe:matrix.org")); matrixid_input_->setPlaceholderText(tr("e.g @joe:matrix.org"));
matrixid_input_->setToolTip(
tr("Your login name. A mxid should start with @ followed by the user id. After the user "
"id you need to include your server name after a :.\nYou can also put your homeserver "
"address there, if your server doesn't support .well-known lookup.\nExample: "
"@user:server.my\nIf Nheko fails to discover your homeserver, it will show you a "
"field to enter the server manually."));
matrixid_input_->setValidator(
new QRegularExpressionValidator(QRegularExpression("@.+?:.{3,}"), this));
spinner_ = new LoadingIndicator(this); spinner_ = new LoadingIndicator(this);
spinner_->setFixedHeight(40); spinner_->setFixedHeight(40);
@ -97,13 +112,19 @@ LoginPage::LoginPage(QWidget *parent)
password_input_ = new TextField(this); password_input_ = new TextField(this);
password_input_->setLabel(tr("Password")); password_input_->setLabel(tr("Password"));
password_input_->setEchoMode(QLineEdit::Password); password_input_->setEchoMode(QLineEdit::Password);
password_input_->setToolTip("Your password.");
deviceName_ = new TextField(this); deviceName_ = new TextField(this);
deviceName_->setLabel(tr("Device name")); deviceName_->setLabel(tr("Device name"));
deviceName_->setToolTip(
tr("A name for this device, which will be shown to others, when verifying your devices. "
"If none is provided, a random string is used for privacy purposes."));
serverInput_ = new TextField(this); serverInput_ = new TextField(this);
serverInput_->setLabel("Homeserver address"); serverInput_->setLabel("Homeserver address");
serverInput_->setPlaceholderText("matrix.org"); serverInput_->setPlaceholderText("matrix.org");
serverInput_->setToolTip(tr("The address that can be used to contact you homeservers "
"client API.\nExample: https://server.my:8787"));
serverInput_->hide(); serverInput_->hide();
serverLayout_ = new QHBoxLayout(); serverLayout_ = new QHBoxLayout();
@ -212,7 +233,8 @@ LoginPage::onMatrixIdEntered()
emit versionErrorCb(tr("Autodiscovery failed. Unknown error when " emit versionErrorCb(tr("Autodiscovery failed. Unknown error when "
"requesting .well-known.")); "requesting .well-known."));
nhlog::net()->error("Autodiscovery failed. Unknown error when " nhlog::net()->error("Autodiscovery failed. Unknown error when "
"requesting .well-known."); "requesting .well-known. {}",
err->error_code.message());
return; return;
} }
@ -249,7 +271,16 @@ LoginPage::checkHomeserverVersion()
return; return;
} }
emit versionOkCb(); http::client()->get_login(
[this](mtx::responses::LoginFlows flows, mtx::http::RequestErr err) {
if (err || flows.flows.empty())
emit versionOkCb(LoginMethod::Password);
if (flows.flows[0].type == mtx::user_interactive::auth_types::sso)
emit versionOkCb(LoginMethod::SSO);
else
emit versionOkCb(LoginMethod::Password);
});
}); });
} }
@ -280,12 +311,22 @@ LoginPage::versionError(const QString &error)
} }
void void
LoginPage::versionOk() LoginPage::versionOk(LoginMethod loginMethod_)
{ {
this->loginMethod = loginMethod_;
serverLayout_->removeWidget(spinner_); serverLayout_->removeWidget(spinner_);
matrixidLayout_->removeWidget(spinner_); matrixidLayout_->removeWidget(spinner_);
spinner_->stop(); spinner_->stop();
if (loginMethod == LoginMethod::SSO) {
password_input_->hide();
login_button_->setText(tr("SSO LOGIN"));
} else {
password_input_->show();
login_button_->setText(tr("LOGIN"));
}
if (serverInput_->isVisible()) if (serverInput_->isVisible())
serverInput_->hide(); serverInput_->hide();
} }
@ -303,29 +344,68 @@ LoginPage::onLoginButtonClicked()
return loginError("You have entered an invalid Matrix ID e.g @joe:matrix.org"); return loginError("You have entered an invalid Matrix ID e.g @joe:matrix.org");
} }
if (password_input_->text().isEmpty()) if (loginMethod == LoginMethod::Password) {
return loginError(tr("Empty password")); if (password_input_->text().isEmpty())
return loginError(tr("Empty password"));
http::client()->login( http::client()->login(
user.localpart(), user.localpart(),
password_input_->text().toStdString(), password_input_->text().toStdString(),
deviceName_->text().trimmed().isEmpty() ? initialDeviceName() deviceName_->text().trimmed().isEmpty() ? initialDeviceName()
: deviceName_->text().toStdString(), : deviceName_->text().toStdString(),
[this](const mtx::responses::Login &res, mtx::http::RequestErr err) { [this](const mtx::responses::Login &res, mtx::http::RequestErr err) {
if (err) { if (err) {
emit loginError(QString::fromStdString(err->matrix_error.error)); emit loginError(QString::fromStdString(err->matrix_error.error));
emit errorOccurred(); emit errorOccurred();
return; return;
} }
if (res.well_known) { if (res.well_known) {
http::client()->set_server(res.well_known->homeserver.base_url); http::client()->set_server(res.well_known->homeserver.base_url);
nhlog::net()->info("Login requested to user server: " + nhlog::net()->info("Login requested to user server: " +
res.well_known->homeserver.base_url); res.well_known->homeserver.base_url);
} }
emit loginOk(res); emit loginOk(res);
}); });
} else {
auto sso = new SSOHandler();
connect(sso, &SSOHandler::ssoSuccess, this, [this, sso](std::string token) {
mtx::requests::Login req{};
req.token = token;
req.type = mtx::user_interactive::auth_types::token;
req.device_id = deviceName_->text().trimmed().isEmpty()
? initialDeviceName()
: deviceName_->text().toStdString();
http::client()->login(
req, [this](const mtx::responses::Login &res, mtx::http::RequestErr err) {
if (err) {
emit loginError(
QString::fromStdString(err->matrix_error.error));
emit errorOccurred();
return;
}
if (res.well_known) {
http::client()->set_server(
res.well_known->homeserver.base_url);
nhlog::net()->info("Login requested to user server: " +
res.well_known->homeserver.base_url);
}
emit loginOk(res);
});
sso->deleteLater();
});
connect(sso, &SSOHandler::ssoFailed, this, [this, sso]() {
emit loginError(tr("SSO login failed"));
emit errorOccurred();
sso->deleteLater();
});
QDesktopServices::openUrl(
QString::fromStdString(http::client()->login_sso_redirect(sso->url())));
}
emit loggingIn(); emit loggingIn();
} }
@ -335,6 +415,7 @@ LoginPage::reset()
{ {
matrixid_input_->clear(); matrixid_input_->clear();
password_input_->clear(); password_input_->clear();
password_input_->show();
serverInput_->clear(); serverInput_->clear();
spinner_->stop(); spinner_->stop();

View File

@ -38,6 +38,12 @@ class LoginPage : public QWidget
Q_OBJECT Q_OBJECT
public: public:
enum class LoginMethod
{
Password,
SSO,
};
LoginPage(QWidget *parent = nullptr); LoginPage(QWidget *parent = nullptr);
void reset(); void reset();
@ -50,7 +56,7 @@ signals:
//! Used to trigger the corresponding slot outside of the main thread. //! Used to trigger the corresponding slot outside of the main thread.
void versionErrorCb(const QString &err); void versionErrorCb(const QString &err);
void loginErrorCb(const QString &err); void loginErrorCb(const QString &err);
void versionOkCb(); void versionOkCb(LoginPage::LoginMethod method);
void loginOk(const mtx::responses::Login &res); void loginOk(const mtx::responses::Login &res);
@ -77,7 +83,7 @@ private slots:
// Callback for errors produced during server probing // Callback for errors produced during server probing
void versionError(const QString &error_message); void versionError(const QString &error_message);
// Callback for successful server probing // Callback for successful server probing
void versionOk(); void versionOk(LoginPage::LoginMethod method);
private: private:
bool isMatrixIdValid(); bool isMatrixIdValid();
@ -123,4 +129,5 @@ private:
TextField *password_input_; TextField *password_input_;
TextField *deviceName_; TextField *deviceName_;
TextField *serverInput_; TextField *serverInput_;
LoginMethod loginMethod = LoginMethod::Password;
}; };

View File

@ -85,17 +85,26 @@ RegisterPage::RegisterPage(QWidget *parent)
username_input_ = new TextField(); username_input_ = new TextField();
username_input_->setLabel(tr("Username")); username_input_->setLabel(tr("Username"));
username_input_->setValidator(
new QRegularExpressionValidator(QRegularExpression("[a-z0-9._=/-]+"), this));
username_input_->setToolTip(tr("The username must not be empty, and must contain only the "
"characters a-z, 0-9, ., _, =, -, and /."));
password_input_ = new TextField(); password_input_ = new TextField();
password_input_->setLabel(tr("Password")); password_input_->setLabel(tr("Password"));
password_input_->setEchoMode(QLineEdit::Password); password_input_->setEchoMode(QLineEdit::Password);
password_input_->setToolTip(tr("Please choose a secure password. The exact requirements "
"for password strength may depend on your server."));
password_confirmation_ = new TextField(); password_confirmation_ = new TextField();
password_confirmation_->setLabel(tr("Password confirmation")); password_confirmation_->setLabel(tr("Password confirmation"));
password_confirmation_->setEchoMode(QLineEdit::Password); password_confirmation_->setEchoMode(QLineEdit::Password);
server_input_ = new TextField(); server_input_ = new TextField();
server_input_->setLabel(tr("Home Server")); server_input_->setLabel(tr("Homeserver"));
server_input_->setToolTip(
tr("A server that allows registration. Since matrix is decentralized, you need to first "
"find a server you can register on or host your own."));
form_layout_->addWidget(username_input_, Qt::AlignHCenter, nullptr); form_layout_->addWidget(username_input_, Qt::AlignHCenter, nullptr);
form_layout_->addWidget(password_input_, Qt::AlignHCenter, nullptr); form_layout_->addWidget(password_input_, Qt::AlignHCenter, nullptr);

53
src/SSOHandler.cpp Normal file
View File

@ -0,0 +1,53 @@
#include "SSOHandler.h"
#include <QTimer>
#include <thread>
#include "Logging.h"
SSOHandler::SSOHandler(QObject *)
{
QTimer::singleShot(120000, this, &SSOHandler::ssoFailed);
using namespace httplib;
svr.set_logger([](const Request &req, const Response &res) {
nhlog::net()->info("req: {}, res: {}", req.path, res.status);
});
svr.Get("/sso", [this](const Request &req, Response &res) {
if (req.has_param("loginToken")) {
auto val = req.get_param_value("loginToken");
res.set_content("SSO success", "text/plain");
emit ssoSuccess(val);
} else {
res.set_content("Missing loginToken for SSO login!", "text/plain");
emit ssoFailed();
}
});
std::thread t([this]() {
this->port = svr.bind_to_any_port("localhost");
svr.listen_after_bind();
});
t.detach();
while (!svr.is_running()) {
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
}
SSOHandler::~SSOHandler()
{
svr.stop();
while (svr.is_running()) {
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
}
std::string
SSOHandler::url() const
{
return "http://localhost:" + std::to_string(port) + "/sso";
}

24
src/SSOHandler.h Normal file
View File

@ -0,0 +1,24 @@
#include "httplib.h"
#include <QObject>
#include <string>
class SSOHandler : public QObject
{
Q_OBJECT
public:
SSOHandler(QObject *parent = nullptr);
~SSOHandler();
std::string url() const;
signals:
void ssoSuccess(std::string token);
void ssoFailed();
private:
httplib::Server svr;
int port = 0;
};

View File

@ -224,6 +224,7 @@ TimelineModel::roleNames() const
{Id, "id"}, {Id, "id"},
{State, "state"}, {State, "state"},
{IsEncrypted, "isEncrypted"}, {IsEncrypted, "isEncrypted"},
{IsRoomEncrypted, "isRoomEncrypted"},
{ReplyTo, "replyTo"}, {ReplyTo, "replyTo"},
{Reactions, "reactions"}, {Reactions, "reactions"},
{RoomId, "roomId"}, {RoomId, "roomId"},
@ -294,6 +295,10 @@ TimelineModel::data(const QString &id, int role) const
if (isReply) if (isReply)
formattedBody_ = formattedBody_.remove(replyFallback); formattedBody_ = formattedBody_.remove(replyFallback);
} }
formattedBody_.replace("<img src=\"mxc:&#47;&#47;", "<img src=\"image://mxcImage/");
formattedBody_.replace("<img src=\"mxc://", "<img src=\"image://mxcImage/");
return QVariant(utils::replaceEmoji( return QVariant(utils::replaceEmoji(
utils::linkifyMessage(utils::escapeBlacklistedHtml(formattedBody_)))); utils::linkifyMessage(utils::escapeBlacklistedHtml(formattedBody_))));
} }
@ -346,6 +351,9 @@ TimelineModel::data(const QString &id, int role) const
return std::holds_alternative< return std::holds_alternative<
mtx::events::EncryptedEvent<mtx::events::msg::Encrypted>>(events[id]); mtx::events::EncryptedEvent<mtx::events::msg::Encrypted>>(events[id]);
} }
case IsRoomEncrypted: {
return cache::isRoomEncrypted(room_id_.toStdString());
}
case ReplyTo: case ReplyTo:
return QVariant(QString::fromStdString(in_reply_to_event(event))); return QVariant(QString::fromStdString(in_reply_to_event(event)));
case Reactions: case Reactions:
@ -383,6 +391,7 @@ TimelineModel::data(const QString &id, int role) const
m.insert(names[Id], data(id, static_cast<int>(Id))); m.insert(names[Id], data(id, static_cast<int>(Id)));
m.insert(names[State], data(id, static_cast<int>(State))); m.insert(names[State], data(id, static_cast<int>(State)));
m.insert(names[IsEncrypted], data(id, static_cast<int>(IsEncrypted))); m.insert(names[IsEncrypted], data(id, static_cast<int>(IsEncrypted)));
m.insert(names[IsRoomEncrypted], data(id, static_cast<int>(IsRoomEncrypted)));
m.insert(names[ReplyTo], data(id, static_cast<int>(ReplyTo))); m.insert(names[ReplyTo], data(id, static_cast<int>(ReplyTo)));
m.insert(names[RoomName], data(id, static_cast<int>(RoomName))); m.insert(names[RoomName], data(id, static_cast<int>(RoomName)));
m.insert(names[RoomTopic], data(id, static_cast<int>(RoomTopic))); m.insert(names[RoomTopic], data(id, static_cast<int>(RoomTopic)));
@ -566,7 +575,7 @@ TimelineModel::updateLastMessage()
room_id_, room_id_,
DescInfo{QString::fromStdString(mtx::accessors::event_id(event)), DescInfo{QString::fromStdString(mtx::accessors::event_id(event)),
QString::fromStdString(http::client()->user_id().to_string()), QString::fromStdString(http::client()->user_id().to_string()),
tr("You joined this room"), tr("You joined this room."),
utils::descriptiveTime(time), utils::descriptiveTime(time),
ts, ts,
time}); time});

View File

@ -159,6 +159,7 @@ public:
Id, Id,
State, State,
IsEncrypted, IsEncrypted,
IsRoomEncrypted,
ReplyTo, ReplyTo,
Reactions, Reactions,
RoomId, RoomId,

View File

@ -147,7 +147,10 @@ QColor
TextField::underlineColor() const TextField::underlineColor() const
{ {
if (!underline_color_.isValid()) { if (!underline_color_.isValid()) {
return QPalette().color(QPalette::Highlight); if (hasAcceptableInput() || !isModified())
return QPalette().color(QPalette::Highlight);
else
return Qt::red;
} }
return underline_color_; return underline_color_;

5125
third_party/cpp-httplib-0.5.12/httplib.h vendored Normal file

File diff suppressed because it is too large Load Diff