mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 03:00:46 +03:00
Merge master into reactions
This commit is contained in:
commit
6d2789f4d5
38 changed files with 6320 additions and 467 deletions
|
@ -295,6 +295,7 @@ set(SRC_FILES
|
|||
src/RegisterPage.cpp
|
||||
src/RoomInfoListItem.cpp
|
||||
src/RoomList.cpp
|
||||
src/SSOHandler.cpp
|
||||
src/SideBarActions.cpp
|
||||
src/Splitter.cpp
|
||||
src/TextInputWidget.cpp
|
||||
|
@ -337,7 +338,7 @@ if(USE_BUNDLED_MTXCLIENT)
|
|||
FetchContent_Declare(
|
||||
MatrixClient
|
||||
GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git
|
||||
GIT_TAG 1893cd6171c40c250ca64d388c082789452340a8
|
||||
GIT_TAG 71bd56b66cf634341ffef804f07d33f01fd57c25
|
||||
)
|
||||
FetchContent_MakeAvailable(MatrixClient)
|
||||
else()
|
||||
|
@ -496,6 +497,7 @@ qt5_wrap_cpp(MOC_HEADERS
|
|||
src/RegisterPage.h
|
||||
src/RoomInfoListItem.h
|
||||
src/RoomList.h
|
||||
src/SSOHandler.h
|
||||
src/SideBarActions.h
|
||||
src/Splitter.h
|
||||
src/TextInputWidget.h
|
||||
|
@ -559,7 +561,7 @@ elseif(WIN32)
|
|||
else()
|
||||
target_link_libraries (nheko PRIVATE Qt5::DBus)
|
||||
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
|
||||
MatrixClient::MatrixClient
|
||||
|
|
26
README.md
26
README.md
|
@ -58,7 +58,7 @@ can be found in the [Github releases](https://github.com/Nheko-Reborn/nheko/rele
|
|||
pacaur -S nheko # nheko-git
|
||||
```
|
||||
|
||||
#### Debian (10 and above)
|
||||
#### Debian (10 and above) / Ubuntu (18.04 and above)
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
##### Ubuntu 16.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
|
||||
##### Ubuntu 20.04
|
||||
|
||||
```bash
|
||||
# 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)
|
||||
|
||||
|
@ -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:
|
||||
|
||||
```bash
|
||||
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release
|
||||
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build
|
||||
```
|
||||
|
||||
To use bundled dependencies you can use hunter, i.e.:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
|
@ -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
|
||||
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
|
@ -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`.
|
||||
|
||||
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.
|
||||
Now choose `Build all` in the CMake menu or press `F7` to compile the executable.
|
||||
|
||||
|
|
|
@ -146,9 +146,9 @@
|
|||
"name": "mtxclient",
|
||||
"sources": [
|
||||
{
|
||||
"sha256": "a8c0239b7157fe8eadae8b06cd6c4e3531dcc61fc5a7f52dbb3c85106f70e3a5",
|
||||
"sha256": "7055f1459a43a12f27f949564624f13cc593ac894e445e6de0e6563ad38ebc3e",
|
||||
"type": "archive",
|
||||
"url": "https://github.com/Nheko-Reborn/mtxclient/archive/1893cd6171c40c250ca64d388c082789452340a8.tar.gz"
|
||||
"url": "https://github.com/Nheko-Reborn/mtxclient/archive/71bd56b66cf634341ffef804f07d33f01fd57c25.tar.gz"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
BIN
resources/icons/ui/unlock.png
Normal file
BIN
resources/icons/ui/unlock.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 385 B |
BIN
resources/icons/ui/unlock@2x.png
Normal file
BIN
resources/icons/ui/unlock@2x.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 741 B |
|
@ -5,8 +5,8 @@
|
|||
<name>Cache</name>
|
||||
<message>
|
||||
<location filename="../../src/Cache.cpp" line="+1341"/>
|
||||
<source>You joined this room</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>You joined this room.</source>
|
||||
<translation>Du bist dem Raum beigetreten.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -18,12 +18,22 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+894"/>
|
||||
<location line="+898"/>
|
||||
<source>Invited user: %1</source>
|
||||
<translation>Eingeladener Benutzer: %1</translation>
|
||||
</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>
|
||||
<translation>Einladung von %1 in Raum %2 fehlgeschlagen: %3</translation>
|
||||
</message>
|
||||
|
@ -58,29 +68,24 @@
|
|||
<translation>Verbannung von %1 wurde aufgehoben.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-819"/>
|
||||
<location line="-823"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation>Medienupload fehlgeschlagen. Bitte versuche es erneut.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+302"/>
|
||||
<source>Cache migration failed!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Cache migration fehlgeschlagen!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<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"/>
|
||||
<location line="+13"/>
|
||||
<source>Incompatible cache version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Inkompatible Cacheversion</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<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>
|
||||
<location line="+111"/>
|
||||
|
@ -99,7 +104,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+51"/>
|
||||
<location line="+215"/>
|
||||
<location line="+219"/>
|
||||
<source>Please try to login again: %1</source>
|
||||
<translation>Bitte melde dich erneut an: %1</translation>
|
||||
</message>
|
||||
|
@ -124,12 +129,7 @@
|
|||
<translation>Raum konnte nicht erstellt werden: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Room %1 created</source>
|
||||
<translation>Raum %1 wurde erstellt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<location line="+16"/>
|
||||
<source>Failed to leave room: %1</source>
|
||||
<translation>Konnte den Raum nicht verlassen: %1</translation>
|
||||
</message>
|
||||
|
@ -238,10 +238,15 @@
|
|||
<context>
|
||||
<name>EncryptionIndicator</name>
|
||||
<message>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+12"/>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+36"/>
|
||||
<source>Encrypted</source>
|
||||
<translation>Verschlüsselt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>This message is not encrypted!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InviteeItem</name>
|
||||
|
@ -254,7 +259,7 @@
|
|||
<context>
|
||||
<name>LoginPage</name>
|
||||
<message>
|
||||
<location filename="../../src/LoginPage.cpp" line="+82"/>
|
||||
<location filename="../../src/LoginPage.cpp" line="+89"/>
|
||||
<source>Matrix ID</source>
|
||||
<translation>Matrix-ID</translation>
|
||||
</message>
|
||||
|
@ -264,22 +269,46 @@
|
|||
<translation>z.B. @joe:matrix.org</translation>
|
||||
</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'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>
|
||||
<translation>Passwort</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+5"/>
|
||||
<source>Device name</source>
|
||||
<translation>Gerätename</translation>
|
||||
</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>
|
||||
<translation>ANMELDEN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+85"/>
|
||||
<location line="-100"/>
|
||||
<source>Autodiscovery failed. Received malformed response.</source>
|
||||
<translation>Automatische Erkennung fehlgeschlagen. Antwort war fehlerhaft.</translation>
|
||||
</message>
|
||||
|
@ -289,7 +318,7 @@
|
|||
<translation>Automatische Erkennung fehlgeschlagen. Unbekannter Fehler bei Anfrage .well-known.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+24"/>
|
||||
<location line="+25"/>
|
||||
<source>The required endpoints were not found. Possibly not a Matrix server.</source>
|
||||
<translation>Benötigte Ansprechpunkte nicht auffindbar. Möglicherweise kein Matrixserver.</translation>
|
||||
</message>
|
||||
|
@ -304,10 +333,20 @@
|
|||
<translation>Ein unbekannter Fehler ist aufgetreten. Bitte Homeserverdomain prüfen.</translation>
|
||||
</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>
|
||||
<translation>Leeres Passwort</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+52"/>
|
||||
<source>SSO login failed</source>
|
||||
<translation>SSO Anmeldung fehlgeschlagen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MemberList</name>
|
||||
|
@ -325,7 +364,7 @@
|
|||
<context>
|
||||
<name>MessageDelegate</name>
|
||||
<message>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
|
||||
<source>redacted</source>
|
||||
<translation>gelöscht</translation>
|
||||
</message>
|
||||
|
@ -385,9 +424,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>Passwort</translation>
|
||||
</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>
|
||||
<location line="+4"/>
|
||||
<source>Password confirmation</source>
|
||||
|
@ -395,11 +444,16 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Home Server</source>
|
||||
<translation>Homeserver</translation>
|
||||
<source>Homeserver</source>
|
||||
<translation>Heimserver</translation>
|
||||
</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>
|
||||
<translation>REGISTRIEREN</translation>
|
||||
</message>
|
||||
|
@ -548,7 +602,7 @@
|
|||
<context>
|
||||
<name>TimelineModel</name>
|
||||
<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>
|
||||
<comment>Placeholder, when the message can't be decrypted, because the DB access failed when trying to lookup the session.</comment>
|
||||
<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>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-258"/>
|
||||
<source>You joined this room</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+340"/>
|
||||
<location line="+82"/>
|
||||
<source>-- Encrypted Event (Unknown event type) --</source>
|
||||
<comment>Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet.</comment>
|
||||
<translation>-- Verschlüsseltes Event (Unbekannter Eventtyp) --</translation>
|
||||
|
@ -722,7 +771,12 @@
|
|||
<translation>%1 hat das Anklopfen zurückgezogen.</translation>
|
||||
</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>
|
||||
<translation>Hat das Anklopfen von %1 abgewiesen.</translation>
|
||||
</message>
|
||||
|
@ -746,7 +800,7 @@
|
|||
<context>
|
||||
<name>TimelineRow</name>
|
||||
<message>
|
||||
<location filename="../qml/TimelineRow.qml" line="+83"/>
|
||||
<location filename="../qml/TimelineRow.qml" line="+84"/>
|
||||
<source>React</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -809,7 +863,7 @@
|
|||
<translation>Kein Raum geöffnet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+254"/>
|
||||
<location line="+256"/>
|
||||
<source>Close</source>
|
||||
<translation>Schließen</translation>
|
||||
</message>
|
||||
|
@ -898,7 +952,7 @@
|
|||
<message>
|
||||
<location line="+1"/>
|
||||
<source>Show buttons in timeline</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Zeige Buttons in der Historie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
|
@ -1116,7 +1170,7 @@
|
|||
<message>
|
||||
<location filename="../../src/dialogs/FallbackAuth.cpp" line="+30"/>
|
||||
<source>Open Fallback in Browser</source>
|
||||
<translation type="unfinished">Öffne Fallback im Browser</translation>
|
||||
<translation>Öffne Fallback im Browser</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<name>Cache</name>
|
||||
<message>
|
||||
<location filename="../../src/Cache.cpp" line="+1341"/>
|
||||
<source>You joined this room</source>
|
||||
<source>You joined this room.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -18,12 +18,22 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+894"/>
|
||||
<location line="+898"/>
|
||||
<source>Invited user: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -58,7 +68,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-819"/>
|
||||
<location line="-823"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -68,12 +78,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<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"/>
|
||||
<location line="+13"/>
|
||||
<source>Incompatible cache version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -99,7 +104,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+51"/>
|
||||
<location line="+215"/>
|
||||
<location line="+219"/>
|
||||
<source>Please try to login again: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -124,12 +129,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Room %1 created</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<location line="+16"/>
|
||||
<source>Failed to leave room: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -238,10 +238,15 @@
|
|||
<context>
|
||||
<name>EncryptionIndicator</name>
|
||||
<message>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+12"/>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+36"/>
|
||||
<source>Encrypted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>This message is not encrypted!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InviteeItem</name>
|
||||
|
@ -254,7 +259,7 @@
|
|||
<context>
|
||||
<name>LoginPage</name>
|
||||
<message>
|
||||
<location filename="../../src/LoginPage.cpp" line="+82"/>
|
||||
<location filename="../../src/LoginPage.cpp" line="+89"/>
|
||||
<source>Matrix ID</source>
|
||||
<translation>Matrix ID</translation>
|
||||
</message>
|
||||
|
@ -264,22 +269,42 @@
|
|||
<translation>π.χ @john:matrix.org</translation>
|
||||
</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'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>
|
||||
<translation>Κωδικός</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+5"/>
|
||||
<source>Device name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>ΕΙΣΟΔΟΣ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+85"/>
|
||||
<location line="-100"/>
|
||||
<source>Autodiscovery failed. Received malformed response.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -289,7 +314,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+24"/>
|
||||
<location line="+25"/>
|
||||
<source>The required endpoints were not found. Possibly not a Matrix server.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -304,10 +329,20 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>Κενός κωδικός</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+52"/>
|
||||
<source>SSO login failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MemberList</name>
|
||||
|
@ -325,7 +360,7 @@
|
|||
<context>
|
||||
<name>MessageDelegate</name>
|
||||
<message>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
|
||||
<source>redacted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -385,9 +420,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>Κωδικός</translation>
|
||||
</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>
|
||||
<location line="+4"/>
|
||||
<source>Password confirmation</source>
|
||||
|
@ -395,11 +440,16 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Home Server</source>
|
||||
<translation>Διακομιστής</translation>
|
||||
<source>Homeserver</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>ΕΓΓΡΑΦΗ</translation>
|
||||
</message>
|
||||
|
@ -548,7 +598,7 @@
|
|||
<context>
|
||||
<name>TimelineModel</name>
|
||||
<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>
|
||||
<comment>Placeholder, when the message can't be decrypted, because the DB access failed when trying to lookup the session.</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -597,12 +647,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-258"/>
|
||||
<source>You joined this room</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+340"/>
|
||||
<location line="+82"/>
|
||||
<source>-- Encrypted Event (Unknown event type) --</source>
|
||||
<comment>Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet.</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -722,7 +767,12 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -746,7 +796,7 @@
|
|||
<context>
|
||||
<name>TimelineRow</name>
|
||||
<message>
|
||||
<location filename="../qml/TimelineRow.qml" line="+83"/>
|
||||
<location filename="../qml/TimelineRow.qml" line="+84"/>
|
||||
<source>React</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -809,7 +859,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+254"/>
|
||||
<location line="+256"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
BIN
resources/langs/nheko_en.qm
Normal file
BIN
resources/langs/nheko_en.qm
Normal file
Binary file not shown.
|
@ -5,8 +5,8 @@
|
|||
<name>Cache</name>
|
||||
<message>
|
||||
<location filename="../../src/Cache.cpp" line="+1341"/>
|
||||
<source>You joined this room</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>You joined this room.</source>
|
||||
<translation>You joined this room.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -18,12 +18,22 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+894"/>
|
||||
<location line="+898"/>
|
||||
<source>Invited user: %1</source>
|
||||
<translation>Invited user: %1</translation>
|
||||
</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>
|
||||
<translation>Failed to invite %1 to %2: %3</translation>
|
||||
</message>
|
||||
|
@ -58,29 +68,24 @@
|
|||
<translation>Unbanned user: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-819"/>
|
||||
<location line="-823"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation>Failed to upload media. Please try again.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+302"/>
|
||||
<source>Cache migration failed!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Cache migration failed!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<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"/>
|
||||
<location line="+13"/>
|
||||
<source>Incompatible cache version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Incompatible cache version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<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>
|
||||
<location line="+111"/>
|
||||
|
@ -99,7 +104,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+51"/>
|
||||
<location line="+215"/>
|
||||
<location line="+219"/>
|
||||
<source>Please try to login again: %1</source>
|
||||
<translation>Please try to login again: %1</translation>
|
||||
</message>
|
||||
|
@ -124,12 +129,7 @@
|
|||
<translation>Room creation failed: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Room %1 created</source>
|
||||
<translation>Room %1 created.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<location line="+16"/>
|
||||
<source>Failed to leave room: %1</source>
|
||||
<translation>Failed to leave room: %1</translation>
|
||||
</message>
|
||||
|
@ -238,10 +238,15 @@
|
|||
<context>
|
||||
<name>EncryptionIndicator</name>
|
||||
<message>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+12"/>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+36"/>
|
||||
<source>Encrypted</source>
|
||||
<translation>Encrypted</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>This message is not encrypted!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InviteeItem</name>
|
||||
|
@ -254,7 +259,7 @@
|
|||
<context>
|
||||
<name>LoginPage</name>
|
||||
<message>
|
||||
<location filename="../../src/LoginPage.cpp" line="+82"/>
|
||||
<location filename="../../src/LoginPage.cpp" line="+89"/>
|
||||
<source>Matrix ID</source>
|
||||
<translation>Matrix ID</translation>
|
||||
</message>
|
||||
|
@ -264,22 +269,46 @@
|
|||
<translation>e.g @joe:matrix.org</translation>
|
||||
</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'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'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>
|
||||
<translation>Password</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+5"/>
|
||||
<source>Device name</source>
|
||||
<translation>Device name</translation>
|
||||
</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>
|
||||
<translation>LOGIN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+85"/>
|
||||
<location line="-100"/>
|
||||
<source>Autodiscovery failed. Received malformed response.</source>
|
||||
<translation>Autodiscovery failed. Received malformed response.</translation>
|
||||
</message>
|
||||
|
@ -289,7 +318,7 @@
|
|||
<translation>Autodiscovery failed. Unknown error while requesting .well-known.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+24"/>
|
||||
<location line="+25"/>
|
||||
<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>
|
||||
</message>
|
||||
|
@ -304,10 +333,20 @@
|
|||
<translation>An unknown error occured. Make sure the homeserver domain is valid.</translation>
|
||||
</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>
|
||||
<translation>Empty password</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+52"/>
|
||||
<source>SSO login failed</source>
|
||||
<translation>SSO login failed</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MemberList</name>
|
||||
|
@ -325,7 +364,7 @@
|
|||
<context>
|
||||
<name>MessageDelegate</name>
|
||||
<message>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
|
||||
<source>redacted</source>
|
||||
<translation>redacted</translation>
|
||||
</message>
|
||||
|
@ -385,9 +424,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>Password</translation>
|
||||
</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>
|
||||
<location line="+4"/>
|
||||
<source>Password confirmation</source>
|
||||
|
@ -395,11 +444,16 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Home Server</source>
|
||||
<translation>Home Server</translation>
|
||||
<source>Homeserver</source>
|
||||
<translation>Homeserver</translation>
|
||||
</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>
|
||||
<translation>REGISTER</translation>
|
||||
</message>
|
||||
|
@ -548,7 +602,7 @@
|
|||
<context>
|
||||
<name>TimelineModel</name>
|
||||
<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>
|
||||
<comment>Placeholder, when the message can't be decrypted, because the DB access failed when trying to lookup the session.</comment>
|
||||
<translation>-- Decryption Error (failed to communicate with DB) --</translation>
|
||||
|
@ -597,12 +651,7 @@
|
|||
<translation>-- Encrypted Event (No keys found for decryption) --</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-258"/>
|
||||
<source>You joined this room</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+340"/>
|
||||
<location line="+82"/>
|
||||
<source>-- Encrypted Event (Unknown event type) --</source>
|
||||
<comment>Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet.</comment>
|
||||
<translation>-- Encrypted Event (Unknown event type) --</translation>
|
||||
|
@ -612,8 +661,8 @@
|
|||
<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>
|
||||
<translation>
|
||||
<numerusform>%1%2 is typing</numerusform>
|
||||
<numerusform>%1 and %2 are typing</numerusform>
|
||||
<numerusform>%1%2 is typing.</numerusform>
|
||||
<numerusform>%1 and %2 are typing.</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -722,7 +771,12 @@
|
|||
<translation>%1 redacted their knock.</translation>
|
||||
</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>
|
||||
<translation>Rejected the knock from %1.</translation>
|
||||
</message>
|
||||
|
@ -746,7 +800,7 @@
|
|||
<context>
|
||||
<name>TimelineRow</name>
|
||||
<message>
|
||||
<location filename="../qml/TimelineRow.qml" line="+83"/>
|
||||
<location filename="../qml/TimelineRow.qml" line="+84"/>
|
||||
<source>React</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -791,7 +845,7 @@
|
|||
<message>
|
||||
<location line="+6"/>
|
||||
<source>View decrypted raw message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>View decrypted raw message</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
|
@ -809,7 +863,7 @@
|
|||
<translation>No room open</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+254"/>
|
||||
<location line="+256"/>
|
||||
<source>Close</source>
|
||||
<translation>Close</translation>
|
||||
</message>
|
||||
|
@ -893,7 +947,7 @@
|
|||
<message>
|
||||
<location line="+2"/>
|
||||
<source>Decrypt messages in sidebar</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Decrypt messages in sidebar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<name>Cache</name>
|
||||
<message>
|
||||
<location filename="../../src/Cache.cpp" line="+1341"/>
|
||||
<source>You joined this room</source>
|
||||
<source>You joined this room.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -18,12 +18,22 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+894"/>
|
||||
<location line="+898"/>
|
||||
<source>Invited user: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -58,7 +68,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-819"/>
|
||||
<location line="-823"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -68,12 +78,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<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"/>
|
||||
<location line="+13"/>
|
||||
<source>Incompatible cache version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -99,7 +104,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+51"/>
|
||||
<location line="+215"/>
|
||||
<location line="+219"/>
|
||||
<source>Please try to login again: %1</source>
|
||||
<translation>Ole hyvä ja yritä kirjautua sisään uudelleen: %1</translation>
|
||||
</message>
|
||||
|
@ -124,12 +129,7 @@
|
|||
<translation>Huoneen luominen epäonnistui: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Room %1 created</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<location line="+16"/>
|
||||
<source>Failed to leave room: %1</source>
|
||||
<translation>Huoneesta poistuminen epäonnistui: %1</translation>
|
||||
</message>
|
||||
|
@ -238,10 +238,15 @@
|
|||
<context>
|
||||
<name>EncryptionIndicator</name>
|
||||
<message>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+12"/>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+36"/>
|
||||
<source>Encrypted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>This message is not encrypted!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InviteeItem</name>
|
||||
|
@ -254,7 +259,7 @@
|
|||
<context>
|
||||
<name>LoginPage</name>
|
||||
<message>
|
||||
<location filename="../../src/LoginPage.cpp" line="+82"/>
|
||||
<location filename="../../src/LoginPage.cpp" line="+89"/>
|
||||
<source>Matrix ID</source>
|
||||
<translation>Matrix-tunnus</translation>
|
||||
</message>
|
||||
|
@ -264,22 +269,42 @@
|
|||
<translation>esim. @joe:matrix.org</translation>
|
||||
</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'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>
|
||||
<translation>Salasana</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+5"/>
|
||||
<source>Device name</source>
|
||||
<translation>Laitteen nimi</translation>
|
||||
</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>
|
||||
<translation>KIRJAUDU</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+85"/>
|
||||
<location line="-100"/>
|
||||
<source>Autodiscovery failed. Received malformed response.</source>
|
||||
<translation>Palvelimen tietojen hakeminen epäonnistui: virheellinen vastaus.</translation>
|
||||
</message>
|
||||
|
@ -289,7 +314,7 @@
|
|||
<translation>Palvelimen tietojen hakeminen epäonnistui: tuntematon virhe hakiessa .well-known -tiedostoa.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+24"/>
|
||||
<location line="+25"/>
|
||||
<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>
|
||||
</message>
|
||||
|
@ -304,10 +329,20 @@
|
|||
<translation>Tapahtui tuntematon virhe. Varmista, että kotipalvelimen osoite on pätevä.</translation>
|
||||
</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>
|
||||
<translation>Tyhjä salasana</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+52"/>
|
||||
<source>SSO login failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MemberList</name>
|
||||
|
@ -325,7 +360,7 @@
|
|||
<context>
|
||||
<name>MessageDelegate</name>
|
||||
<message>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
|
||||
<source>redacted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -385,9 +420,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>Salasana</translation>
|
||||
</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>
|
||||
<location line="+4"/>
|
||||
<source>Password confirmation</source>
|
||||
|
@ -395,11 +440,16 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Home Server</source>
|
||||
<translation>Kotipalvelin</translation>
|
||||
<source>Homeserver</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>REKISTERÖIDY</translation>
|
||||
</message>
|
||||
|
@ -548,7 +598,7 @@
|
|||
<context>
|
||||
<name>TimelineModel</name>
|
||||
<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>
|
||||
<comment>Placeholder, when the message can'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>
|
||||
|
@ -597,12 +647,7 @@
|
|||
<translation type="unfinished">-- Salattu viesti (salauksen purkuavaimia ei löydetty) --</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-258"/>
|
||||
<source>You joined this room</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+340"/>
|
||||
<location line="+82"/>
|
||||
<source>-- Encrypted Event (Unknown event type) --</source>
|
||||
<comment>Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet.</comment>
|
||||
<translation type="unfinished">-- Salattu viesti (tuntematon viestityyppi) --</translation>
|
||||
|
@ -722,7 +767,12 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -746,7 +796,7 @@
|
|||
<context>
|
||||
<name>TimelineRow</name>
|
||||
<message>
|
||||
<location filename="../qml/TimelineRow.qml" line="+83"/>
|
||||
<location filename="../qml/TimelineRow.qml" line="+84"/>
|
||||
<source>React</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -809,7 +859,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+254"/>
|
||||
<location line="+256"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished">Sulje</translation>
|
||||
</message>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<name>Cache</name>
|
||||
<message>
|
||||
<location filename="../../src/Cache.cpp" line="+1341"/>
|
||||
<source>You joined this room</source>
|
||||
<source>You joined this room.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -18,12 +18,22 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+894"/>
|
||||
<location line="+898"/>
|
||||
<source>Invited user: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -58,7 +68,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-819"/>
|
||||
<location line="-823"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -68,12 +78,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<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"/>
|
||||
<location line="+13"/>
|
||||
<source>Incompatible cache version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -99,7 +104,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+51"/>
|
||||
<location line="+215"/>
|
||||
<location line="+219"/>
|
||||
<source>Please try to login again: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -124,12 +129,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Room %1 created</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<location line="+16"/>
|
||||
<source>Failed to leave room: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -238,10 +238,15 @@
|
|||
<context>
|
||||
<name>EncryptionIndicator</name>
|
||||
<message>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+12"/>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+36"/>
|
||||
<source>Encrypted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>This message is not encrypted!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InviteeItem</name>
|
||||
|
@ -254,7 +259,7 @@
|
|||
<context>
|
||||
<name>LoginPage</name>
|
||||
<message>
|
||||
<location filename="../../src/LoginPage.cpp" line="+82"/>
|
||||
<location filename="../../src/LoginPage.cpp" line="+89"/>
|
||||
<source>Matrix ID</source>
|
||||
<translation>Identifiant Matrix</translation>
|
||||
</message>
|
||||
|
@ -264,22 +269,42 @@
|
|||
<translation>ex : @joe:matrix.org</translation>
|
||||
</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'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>
|
||||
<translation>Mot de passe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+5"/>
|
||||
<source>Device name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>CONNEXION</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+85"/>
|
||||
<location line="-100"/>
|
||||
<source>Autodiscovery failed. Received malformed response.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -289,7 +314,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+24"/>
|
||||
<location line="+25"/>
|
||||
<source>The required endpoints were not found. Possibly not a Matrix server.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -304,10 +329,20 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>Mot de passe vide</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+52"/>
|
||||
<source>SSO login failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MemberList</name>
|
||||
|
@ -325,7 +360,7 @@
|
|||
<context>
|
||||
<name>MessageDelegate</name>
|
||||
<message>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
|
||||
<source>redacted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -385,9 +420,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>Mot de passe</translation>
|
||||
</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>
|
||||
<location line="+4"/>
|
||||
<source>Password confirmation</source>
|
||||
|
@ -395,12 +440,16 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Home Server</source>
|
||||
<translatorcomment>À affiner...</translatorcomment>
|
||||
<translation>Serveur Matrix</translation>
|
||||
<source>Homeserver</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>S'ENREGISTRER</translation>
|
||||
</message>
|
||||
|
@ -549,7 +598,7 @@
|
|||
<context>
|
||||
<name>TimelineModel</name>
|
||||
<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>
|
||||
<comment>Placeholder, when the message can't be decrypted, because the DB access failed when trying to lookup the session.</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -598,12 +647,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-258"/>
|
||||
<source>You joined this room</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+340"/>
|
||||
<location line="+82"/>
|
||||
<source>-- Encrypted Event (Unknown event type) --</source>
|
||||
<comment>Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet.</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -723,7 +767,12 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -747,7 +796,7 @@
|
|||
<context>
|
||||
<name>TimelineRow</name>
|
||||
<message>
|
||||
<location filename="../qml/TimelineRow.qml" line="+83"/>
|
||||
<location filename="../qml/TimelineRow.qml" line="+84"/>
|
||||
<source>React</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -810,7 +859,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+254"/>
|
||||
<location line="+256"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<name>Cache</name>
|
||||
<message>
|
||||
<location filename="../../src/Cache.cpp" line="+1341"/>
|
||||
<source>You joined this room</source>
|
||||
<source>You joined this room.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -18,12 +18,22 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+894"/>
|
||||
<location line="+898"/>
|
||||
<source>Invited user: %1</source>
|
||||
<translation>招待されたユーザー: %1</translation>
|
||||
</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>
|
||||
<translation>%2に%1を招待できませんでした: %3</translation>
|
||||
</message>
|
||||
|
@ -58,7 +68,7 @@
|
|||
<translation>永久追放を解除されたユーザー: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-819"/>
|
||||
<location line="-823"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation>メディアをアップロードできませんでした。やり直して下さい。</translation>
|
||||
</message>
|
||||
|
@ -68,12 +78,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<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"/>
|
||||
<location line="+13"/>
|
||||
<source>Incompatible cache version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -99,7 +104,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+51"/>
|
||||
<location line="+215"/>
|
||||
<location line="+219"/>
|
||||
<source>Please try to login again: %1</source>
|
||||
<translation>もう一度ログインしてみて下さい: %1</translation>
|
||||
</message>
|
||||
|
@ -124,12 +129,7 @@
|
|||
<translation>部屋を作成できませんでした: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Room %1 created</source>
|
||||
<translation>部屋 %1 を作成しました</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<location line="+16"/>
|
||||
<source>Failed to leave room: %1</source>
|
||||
<translation>部屋から出られませんでした: %1</translation>
|
||||
</message>
|
||||
|
@ -238,10 +238,15 @@
|
|||
<context>
|
||||
<name>EncryptionIndicator</name>
|
||||
<message>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+12"/>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+36"/>
|
||||
<source>Encrypted</source>
|
||||
<translation>暗号化されています</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>This message is not encrypted!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InviteeItem</name>
|
||||
|
@ -254,7 +259,7 @@
|
|||
<context>
|
||||
<name>LoginPage</name>
|
||||
<message>
|
||||
<location filename="../../src/LoginPage.cpp" line="+82"/>
|
||||
<location filename="../../src/LoginPage.cpp" line="+89"/>
|
||||
<source>Matrix ID</source>
|
||||
<translation>Matrix ID</translation>
|
||||
</message>
|
||||
|
@ -264,22 +269,42 @@
|
|||
<translation>例 @joe:matrix.org</translation>
|
||||
</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'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>
|
||||
<translation>パスワード</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+5"/>
|
||||
<source>Device name</source>
|
||||
<translation>デバイス名</translation>
|
||||
</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>
|
||||
<translation>ログイン</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+85"/>
|
||||
<location line="-100"/>
|
||||
<source>Autodiscovery failed. Received malformed response.</source>
|
||||
<translation>自動検出できませんでした。不正な形式の応答を受信しました。</translation>
|
||||
</message>
|
||||
|
@ -289,7 +314,7 @@
|
|||
<translation>自動検出できませんでした。.well-known要求時の不明なエラー。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+24"/>
|
||||
<location line="+25"/>
|
||||
<source>The required endpoints were not found. Possibly not a Matrix server.</source>
|
||||
<translation>必要な端点が見つかりません。Matrixサーバーではないかもしれません。</translation>
|
||||
</message>
|
||||
|
@ -304,10 +329,20 @@
|
|||
<translation>不明なエラーが発生しました。ホームサーバーのドメイン名が有効であるかを確認して下さい。</translation>
|
||||
</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>
|
||||
<translation>パスワードが入力されていません</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+52"/>
|
||||
<source>SSO login failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MemberList</name>
|
||||
|
@ -325,7 +360,7 @@
|
|||
<context>
|
||||
<name>MessageDelegate</name>
|
||||
<message>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
|
||||
<source>redacted</source>
|
||||
<translation>編集済み</translation>
|
||||
</message>
|
||||
|
@ -385,9 +420,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>パスワード</translation>
|
||||
</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>
|
||||
<location line="+4"/>
|
||||
<source>Password confirmation</source>
|
||||
|
@ -395,11 +440,16 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Home Server</source>
|
||||
<translation>ホームサーバー</translation>
|
||||
<source>Homeserver</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>登録</translation>
|
||||
</message>
|
||||
|
@ -548,7 +598,7 @@
|
|||
<context>
|
||||
<name>TimelineModel</name>
|
||||
<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>
|
||||
<comment>Placeholder, when the message can't be decrypted, because the DB access failed when trying to lookup the session.</comment>
|
||||
<translation>-- 復号エラー (データベースと通信できませんでした) --</translation>
|
||||
|
@ -597,12 +647,7 @@
|
|||
<translation type="unfinished">-- 暗号化イベント (復号鍵が見つかりません) --</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-258"/>
|
||||
<source>You joined this room</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+340"/>
|
||||
<location line="+82"/>
|
||||
<source>-- Encrypted Event (Unknown event type) --</source>
|
||||
<comment>Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet.</comment>
|
||||
<translation type="unfinished">-- 暗号化イベント (不明なイベント型です) --</translation>
|
||||
|
@ -721,7 +766,12 @@
|
|||
<translation>%1がノックを編集しました。</translation>
|
||||
</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>
|
||||
<translation>%1からのノックを拒否しました。</translation>
|
||||
</message>
|
||||
|
@ -745,7 +795,7 @@
|
|||
<context>
|
||||
<name>TimelineRow</name>
|
||||
<message>
|
||||
<location filename="../qml/TimelineRow.qml" line="+83"/>
|
||||
<location filename="../qml/TimelineRow.qml" line="+84"/>
|
||||
<source>React</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -808,7 +858,7 @@
|
|||
<translation>部屋が開いていません</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+254"/>
|
||||
<location line="+256"/>
|
||||
<source>Close</source>
|
||||
<translation>閉じる</translation>
|
||||
</message>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<name>Cache</name>
|
||||
<message>
|
||||
<location filename="../../src/Cache.cpp" line="+1341"/>
|
||||
<source>You joined this room</source>
|
||||
<source>You joined this room.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -18,12 +18,22 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+894"/>
|
||||
<location line="+898"/>
|
||||
<source>Invited user: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -58,7 +68,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-819"/>
|
||||
<location line="-823"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -68,12 +78,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<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"/>
|
||||
<location line="+13"/>
|
||||
<source>Incompatible cache version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -99,7 +104,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+51"/>
|
||||
<location line="+215"/>
|
||||
<location line="+219"/>
|
||||
<source>Please try to login again: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -124,12 +129,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Room %1 created</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<location line="+16"/>
|
||||
<source>Failed to leave room: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -238,10 +238,15 @@
|
|||
<context>
|
||||
<name>EncryptionIndicator</name>
|
||||
<message>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+12"/>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+36"/>
|
||||
<source>Encrypted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>This message is not encrypted!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InviteeItem</name>
|
||||
|
@ -254,7 +259,7 @@
|
|||
<context>
|
||||
<name>LoginPage</name>
|
||||
<message>
|
||||
<location filename="../../src/LoginPage.cpp" line="+82"/>
|
||||
<location filename="../../src/LoginPage.cpp" line="+89"/>
|
||||
<source>Matrix ID</source>
|
||||
<translation>Matrix-id</translation>
|
||||
</message>
|
||||
|
@ -264,22 +269,42 @@
|
|||
<translation>b.v @jan:matrix.org<</translation>
|
||||
</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'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>
|
||||
<translation>Wachtwoord</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+5"/>
|
||||
<source>Device name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>INLOGGEN</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+85"/>
|
||||
<location line="-100"/>
|
||||
<source>Autodiscovery failed. Received malformed response.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -289,7 +314,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+24"/>
|
||||
<location line="+25"/>
|
||||
<source>The required endpoints were not found. Possibly not a Matrix server.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -304,10 +329,20 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>Leeg wachtwoord</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+52"/>
|
||||
<source>SSO login failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MemberList</name>
|
||||
|
@ -325,7 +360,7 @@
|
|||
<context>
|
||||
<name>MessageDelegate</name>
|
||||
<message>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
|
||||
<source>redacted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -385,9 +420,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>Wachtwoord</translation>
|
||||
</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>
|
||||
<location line="+4"/>
|
||||
<source>Password confirmation</source>
|
||||
|
@ -395,11 +440,16 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Home Server</source>
|
||||
<translation>Thuisserver</translation>
|
||||
<source>Homeserver</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>REGISTREREN</translation>
|
||||
</message>
|
||||
|
@ -548,7 +598,7 @@
|
|||
<context>
|
||||
<name>TimelineModel</name>
|
||||
<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>
|
||||
<comment>Placeholder, when the message can't be decrypted, because the DB access failed when trying to lookup the session.</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -597,12 +647,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-258"/>
|
||||
<source>You joined this room</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+340"/>
|
||||
<location line="+82"/>
|
||||
<source>-- Encrypted Event (Unknown event type) --</source>
|
||||
<comment>Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet.</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -722,7 +767,12 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -746,7 +796,7 @@
|
|||
<context>
|
||||
<name>TimelineRow</name>
|
||||
<message>
|
||||
<location filename="../qml/TimelineRow.qml" line="+83"/>
|
||||
<location filename="../qml/TimelineRow.qml" line="+84"/>
|
||||
<source>React</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -809,7 +859,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+254"/>
|
||||
<location line="+256"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<name>Cache</name>
|
||||
<message>
|
||||
<location filename="../../src/Cache.cpp" line="+1341"/>
|
||||
<source>You joined this room</source>
|
||||
<source>You joined this room.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -18,12 +18,22 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+894"/>
|
||||
<location line="+898"/>
|
||||
<source>Invited user: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -58,7 +68,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-819"/>
|
||||
<location line="-823"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -68,12 +78,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<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"/>
|
||||
<location line="+13"/>
|
||||
<source>Incompatible cache version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -99,7 +104,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+51"/>
|
||||
<location line="+215"/>
|
||||
<location line="+219"/>
|
||||
<source>Please try to login again: %1</source>
|
||||
<translation>Spróbuj zalogować się ponownie: %1</translation>
|
||||
</message>
|
||||
|
@ -124,12 +129,7 @@
|
|||
<translation>Tworzenie pokoju nie powiodło się: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Room %1 created</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<location line="+16"/>
|
||||
<source>Failed to leave room: %1</source>
|
||||
<translation>Nie udało się opuścić pokoju: %1</translation>
|
||||
</message>
|
||||
|
@ -238,10 +238,15 @@
|
|||
<context>
|
||||
<name>EncryptionIndicator</name>
|
||||
<message>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+12"/>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+36"/>
|
||||
<source>Encrypted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>This message is not encrypted!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InviteeItem</name>
|
||||
|
@ -254,7 +259,7 @@
|
|||
<context>
|
||||
<name>LoginPage</name>
|
||||
<message>
|
||||
<location filename="../../src/LoginPage.cpp" line="+82"/>
|
||||
<location filename="../../src/LoginPage.cpp" line="+89"/>
|
||||
<source>Matrix ID</source>
|
||||
<translation>ID Matrixa</translation>
|
||||
</message>
|
||||
|
@ -264,22 +269,42 @@
|
|||
<translation>np. @joe:matrix.org</translation>
|
||||
</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'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>
|
||||
<translation>Hasło</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+5"/>
|
||||
<source>Device name</source>
|
||||
<translation>Nazwa urządzenia</translation>
|
||||
</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>
|
||||
<translation>ZALOGUJ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+85"/>
|
||||
<location line="-100"/>
|
||||
<source>Autodiscovery failed. Received malformed response.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -289,7 +314,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+24"/>
|
||||
<location line="+25"/>
|
||||
<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>
|
||||
</message>
|
||||
|
@ -304,10 +329,20 @@
|
|||
<translation>Wystąpił nieznany błąd. Upewnij się, że domena serwera domowego jest prawidłowa.</translation>
|
||||
</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>
|
||||
<translation>Puste hasło</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+52"/>
|
||||
<source>SSO login failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MemberList</name>
|
||||
|
@ -325,7 +360,7 @@
|
|||
<context>
|
||||
<name>MessageDelegate</name>
|
||||
<message>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
|
||||
<source>redacted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -385,9 +420,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>Hasło</translation>
|
||||
</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>
|
||||
<location line="+4"/>
|
||||
<source>Password confirmation</source>
|
||||
|
@ -395,11 +440,16 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Home Server</source>
|
||||
<translation>Serwer domowy</translation>
|
||||
<source>Homeserver</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>ZAREJESTRUJ</translation>
|
||||
</message>
|
||||
|
@ -548,7 +598,7 @@
|
|||
<context>
|
||||
<name>TimelineModel</name>
|
||||
<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>
|
||||
<comment>Placeholder, when the message can't be decrypted, because the DB access failed when trying to lookup the session.</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -597,12 +647,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-258"/>
|
||||
<source>You joined this room</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+340"/>
|
||||
<location line="+82"/>
|
||||
<source>-- Encrypted Event (Unknown event type) --</source>
|
||||
<comment>Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet.</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -723,7 +768,12 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -747,7 +797,7 @@
|
|||
<context>
|
||||
<name>TimelineRow</name>
|
||||
<message>
|
||||
<location filename="../qml/TimelineRow.qml" line="+83"/>
|
||||
<location filename="../qml/TimelineRow.qml" line="+84"/>
|
||||
<source>React</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -810,7 +860,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+254"/>
|
||||
<location line="+256"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<name>Cache</name>
|
||||
<message>
|
||||
<location filename="../../src/Cache.cpp" line="+1341"/>
|
||||
<source>You joined this room</source>
|
||||
<source>You joined this room.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -18,12 +18,22 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+894"/>
|
||||
<location line="+898"/>
|
||||
<source>Invited user: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -58,7 +68,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-819"/>
|
||||
<location line="-823"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -68,12 +78,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<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"/>
|
||||
<location line="+13"/>
|
||||
<source>Incompatible cache version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -99,7 +104,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+51"/>
|
||||
<location line="+215"/>
|
||||
<location line="+219"/>
|
||||
<source>Please try to login again: %1</source>
|
||||
<translation>Повторите попытку входа: %1</translation>
|
||||
</message>
|
||||
|
@ -124,12 +129,7 @@
|
|||
<translation>Не удалось создать комнату: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Room %1 created</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<location line="+16"/>
|
||||
<source>Failed to leave room: %1</source>
|
||||
<translation>Не удалось покинуть комнату: %1</translation>
|
||||
</message>
|
||||
|
@ -238,10 +238,15 @@
|
|||
<context>
|
||||
<name>EncryptionIndicator</name>
|
||||
<message>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+12"/>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+36"/>
|
||||
<source>Encrypted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>This message is not encrypted!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InviteeItem</name>
|
||||
|
@ -254,7 +259,7 @@
|
|||
<context>
|
||||
<name>LoginPage</name>
|
||||
<message>
|
||||
<location filename="../../src/LoginPage.cpp" line="+82"/>
|
||||
<location filename="../../src/LoginPage.cpp" line="+89"/>
|
||||
<source>Matrix ID</source>
|
||||
<translation>Идентификатор Matrix</translation>
|
||||
</message>
|
||||
|
@ -264,22 +269,42 @@
|
|||
<translation>Пример: @joe:matrix.org</translation>
|
||||
</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'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>
|
||||
<translation>Пароль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+5"/>
|
||||
<source>Device name</source>
|
||||
<translation>Имя устройства</translation>
|
||||
</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>
|
||||
<translation>ВОЙТИ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+85"/>
|
||||
<location line="-100"/>
|
||||
<source>Autodiscovery failed. Received malformed response.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -289,7 +314,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+24"/>
|
||||
<location line="+25"/>
|
||||
<source>The required endpoints were not found. Possibly not a Matrix server.</source>
|
||||
<translation>Необходимые конечные точки не найдены. Возможно, это не сервер Matrix.</translation>
|
||||
</message>
|
||||
|
@ -304,10 +329,20 @@
|
|||
<translation>Произошла неизвестная ошибка. Убедитесь, что домен homeserver действителен.</translation>
|
||||
</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>
|
||||
<translation>Пустой пароль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+52"/>
|
||||
<source>SSO login failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MemberList</name>
|
||||
|
@ -325,7 +360,7 @@
|
|||
<context>
|
||||
<name>MessageDelegate</name>
|
||||
<message>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
|
||||
<source>redacted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -385,9 +420,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>Пароль</translation>
|
||||
</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>
|
||||
<location line="+4"/>
|
||||
<source>Password confirmation</source>
|
||||
|
@ -395,11 +440,16 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Home Server</source>
|
||||
<translation>Домашний сервер</translation>
|
||||
<source>Homeserver</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>РЕГИСТРАЦИЯ</translation>
|
||||
</message>
|
||||
|
@ -548,7 +598,7 @@
|
|||
<context>
|
||||
<name>TimelineModel</name>
|
||||
<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>
|
||||
<comment>Placeholder, when the message can't be decrypted, because the DB access failed when trying to lookup the session.</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -597,12 +647,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-258"/>
|
||||
<source>You joined this room</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+340"/>
|
||||
<location line="+82"/>
|
||||
<source>-- Encrypted Event (Unknown event type) --</source>
|
||||
<comment>Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet.</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -723,7 +768,12 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -747,7 +797,7 @@
|
|||
<context>
|
||||
<name>TimelineRow</name>
|
||||
<message>
|
||||
<location filename="../qml/TimelineRow.qml" line="+83"/>
|
||||
<location filename="../qml/TimelineRow.qml" line="+84"/>
|
||||
<source>React</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -810,7 +860,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+254"/>
|
||||
<location line="+256"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished">Закрыть</translation>
|
||||
</message>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<name>Cache</name>
|
||||
<message>
|
||||
<location filename="../../src/Cache.cpp" line="+1341"/>
|
||||
<source>You joined this room</source>
|
||||
<source>You joined this room.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
|
@ -18,12 +18,22 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+894"/>
|
||||
<location line="+898"/>
|
||||
<source>Invited user: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -58,7 +68,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-819"/>
|
||||
<location line="-823"/>
|
||||
<source>Failed to upload media. Please try again.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -68,12 +78,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+1"/>
|
||||
<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"/>
|
||||
<location line="+13"/>
|
||||
<source>Incompatible cache version</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -99,7 +104,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+51"/>
|
||||
<location line="+215"/>
|
||||
<location line="+219"/>
|
||||
<source>Please try to login again: %1</source>
|
||||
<translation>请尝试再次登录:%1</translation>
|
||||
</message>
|
||||
|
@ -124,12 +129,7 @@
|
|||
<translation>创建聊天室失败:%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+5"/>
|
||||
<source>Room %1 created</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+11"/>
|
||||
<location line="+16"/>
|
||||
<source>Failed to leave room: %1</source>
|
||||
<translation>离开聊天室失败:%1</translation>
|
||||
</message>
|
||||
|
@ -238,10 +238,15 @@
|
|||
<context>
|
||||
<name>EncryptionIndicator</name>
|
||||
<message>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+12"/>
|
||||
<location filename="../qml/EncryptionIndicator.qml" line="+36"/>
|
||||
<source>Encrypted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+2"/>
|
||||
<source>This message is not encrypted!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>InviteeItem</name>
|
||||
|
@ -254,7 +259,7 @@
|
|||
<context>
|
||||
<name>LoginPage</name>
|
||||
<message>
|
||||
<location filename="../../src/LoginPage.cpp" line="+82"/>
|
||||
<location filename="../../src/LoginPage.cpp" line="+89"/>
|
||||
<source>Matrix ID</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
|
@ -264,22 +269,42 @@
|
|||
<translation>例如 @joe:matrix.org</translation>
|
||||
</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'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>
|
||||
<translation>密码</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<location line="+5"/>
|
||||
<source>Device name</source>
|
||||
<translation>设备名</translation>
|
||||
</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>
|
||||
<translation>登录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+85"/>
|
||||
<location line="-100"/>
|
||||
<source>Autodiscovery failed. Received malformed response.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -289,7 +314,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+24"/>
|
||||
<location line="+25"/>
|
||||
<source>The required endpoints were not found. Possibly not a Matrix server.</source>
|
||||
<translation>没找到要求的终端。可能不是一个 Matrix 服务器。</translation>
|
||||
</message>
|
||||
|
@ -304,10 +329,20 @@
|
|||
<translation>发生了一个未知错误。请确认服务器域名合法。</translation>
|
||||
</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>
|
||||
<translation>空密码</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+52"/>
|
||||
<source>SSO login failed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MemberList</name>
|
||||
|
@ -325,7 +360,7 @@
|
|||
<context>
|
||||
<name>MessageDelegate</name>
|
||||
<message>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+64"/>
|
||||
<location filename="../qml/delegates/MessageDelegate.qml" line="+66"/>
|
||||
<source>redacted</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -385,9 +420,19 @@
|
|||
</message>
|
||||
<message>
|
||||
<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>
|
||||
<translation>密码</translation>
|
||||
</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>
|
||||
<location line="+4"/>
|
||||
<source>Password confirmation</source>
|
||||
|
@ -395,11 +440,16 @@
|
|||
</message>
|
||||
<message>
|
||||
<location line="+4"/>
|
||||
<source>Home Server</source>
|
||||
<translation>服务器</translation>
|
||||
<source>Homeserver</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation>注册</translation>
|
||||
</message>
|
||||
|
@ -548,7 +598,7 @@
|
|||
<context>
|
||||
<name>TimelineModel</name>
|
||||
<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>
|
||||
<comment>Placeholder, when the message can't be decrypted, because the DB access failed when trying to lookup the session.</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -597,12 +647,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="-258"/>
|
||||
<source>You joined this room</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+340"/>
|
||||
<location line="+82"/>
|
||||
<source>-- Encrypted Event (Unknown event type) --</source>
|
||||
<comment>Placeholder, when the message was decrypted, but we couldn't parse it, because Nheko/mtxclient don't support that event type yet.</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -721,7 +766,12 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</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>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -745,7 +795,7 @@
|
|||
<context>
|
||||
<name>TimelineRow</name>
|
||||
<message>
|
||||
<location filename="../qml/TimelineRow.qml" line="+83"/>
|
||||
<location filename="../qml/TimelineRow.qml" line="+84"/>
|
||||
<source>React</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -808,7 +858,7 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location line="+254"/>
|
||||
<location line="+256"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -3,13 +3,14 @@ import QtQuick.Controls 2.1
|
|||
import im.nheko 1.0
|
||||
|
||||
Rectangle {
|
||||
property bool encrypted: false
|
||||
id: indicator
|
||||
color: "transparent"
|
||||
width: 16
|
||||
height: 16
|
||||
|
||||
ToolTip.visible: ma.containsMouse && indicator.visible
|
||||
ToolTip.text: qsTr("Encrypted")
|
||||
ToolTip.text: getEncryptionTooltip()
|
||||
|
||||
MouseArea{
|
||||
id: ma
|
||||
|
@ -20,7 +21,21 @@ Rectangle {
|
|||
Image {
|
||||
id: stateImg
|
||||
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!")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -71,6 +71,8 @@ MouseArea {
|
|||
pixelDelta = wheel.pixelDelta.y
|
||||
}
|
||||
|
||||
pixelDelta = Math.round(pixelDelta)
|
||||
|
||||
if (!pixelDelta) {
|
||||
return flickableItem.contentY;
|
||||
}
|
||||
|
|
|
@ -67,7 +67,8 @@ MouseArea {
|
|||
}
|
||||
|
||||
EncryptionIndicator {
|
||||
visible: model.isEncrypted
|
||||
visible: model.isRoomEncrypted
|
||||
encrypted: model.isEncrypted
|
||||
Layout.alignment: Qt.AlignRight | Qt.AlignTop
|
||||
Layout.preferredHeight: 16
|
||||
width: 16
|
||||
|
|
|
@ -125,6 +125,8 @@ Page {
|
|||
|
||||
visible: timelineManager.timeline != null
|
||||
|
||||
cacheBuffer: 500
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
|
|
|
@ -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 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
|
||||
width: tooHigh ? (timelineRoot.height / 2) / model.data.proportionalHeight : tempWidth
|
||||
height: tooHigh ? timelineRoot.height / divisor : tempHeight
|
||||
width: tooHigh ? (timelineRoot.height / divisor) / model.data.proportionalHeight : tempWidth
|
||||
|
||||
Image {
|
||||
id: blurhash
|
||||
|
|
|
@ -6,9 +6,11 @@ Item {
|
|||
Item {
|
||||
id: model
|
||||
property var data;
|
||||
property bool isReply: false
|
||||
}
|
||||
|
||||
property alias modelData: model.data
|
||||
property alias isReply: model.isReply
|
||||
|
||||
height: chooser.childrenRect.height
|
||||
property real implicitWidth: (chooser.child && chooser.child.implicitWidth) ? chooser.child.implicitWidth : width
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
TextMessage {
|
||||
font.italic: true
|
||||
color: colors.buttonText
|
||||
height: isReply ? Math.min(chat.height / 8, implicitHeight) : undefined
|
||||
clip: true
|
||||
}
|
||||
|
|
|
@ -20,8 +20,14 @@ Rectangle {
|
|||
Rectangle {
|
||||
id: videoContainer
|
||||
visible: model.data.type == MtxEvent.VideoMessage
|
||||
width: Math.min(parent.width, model.data.width ? model.data.width : 400) // some media has 0 as size...
|
||||
height: width*model.data.proportionalHeight
|
||||
property double tempWidth: Math.min(parent ? parent.width : undefined, model.data.width < 1 ? 400 : model.data.width)
|
||||
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 {
|
||||
anchors.fill: parent
|
||||
source: model.data.thumbnailUrl.replace("mxc://", "image://MxcImage/")
|
||||
|
|
|
@ -51,6 +51,7 @@ Item {
|
|||
MessageDelegate {
|
||||
id: reply
|
||||
width: parent.width
|
||||
isReply: true
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,4 +4,6 @@ MatrixText {
|
|||
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'>")
|
||||
width: parent ? parent.width : undefined
|
||||
height: isReply ? Math.min(chat.height / 8, implicitHeight) : undefined
|
||||
clip: true
|
||||
}
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
<file>icons/ui/double-tick-indicator@2x.png</file>
|
||||
<file>icons/ui/lock.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@2x.png</file>
|
||||
<file>icons/ui/checkmark.png</file>
|
||||
|
|
|
@ -1338,7 +1338,7 @@ Cache::getLastMessageInfo(lmdb::txn &txn, const std::string &room_id)
|
|||
auto time = QDateTime::fromMSecsSinceEpoch(ts);
|
||||
fallbackDesc = DescInfo{QString::fromStdString(obj["event"]["event_id"]),
|
||||
local_user,
|
||||
tr("You joined this room"),
|
||||
tr("You joined this room."),
|
||||
utils::descriptiveTime(time),
|
||||
ts,
|
||||
time};
|
||||
|
|
|
@ -666,7 +666,7 @@ ChatPage::bootstrap(QString userid, QString homeserver, QString token)
|
|||
"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"));
|
||||
"manually."));
|
||||
QCoreApplication::quit();
|
||||
}
|
||||
loadStateFromCache();
|
||||
|
@ -994,8 +994,12 @@ ChatPage::trySync()
|
|||
const auto err_code = mtx::errors::to_string(err->matrix_error.errcode);
|
||||
const int status_code = static_cast<int>(err->status_code);
|
||||
|
||||
if (http::is_logged_in() && err->matrix_error.errcode ==
|
||||
mtx::errors::ErrorCode::M_UNKNOWN_TOKEN) {
|
||||
if ((http::is_logged_in() &&
|
||||
(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);
|
||||
return;
|
||||
}
|
||||
|
@ -1086,7 +1090,7 @@ ChatPage::createRoom(const mtx::requests::CreateRoom &req)
|
|||
}
|
||||
|
||||
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())));
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -15,28 +15,35 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <QDesktopServices>
|
||||
#include <QPainter>
|
||||
#include <QStyleOption>
|
||||
|
||||
#include <mtx/identifiers.hpp>
|
||||
#include <mtx/requests.hpp>
|
||||
#include <mtx/responses/login.hpp>
|
||||
|
||||
#include "Config.h"
|
||||
#include "Logging.h"
|
||||
#include "LoginPage.h"
|
||||
#include "MatrixClient.h"
|
||||
#include "SSOHandler.h"
|
||||
#include "ui/FlatButton.h"
|
||||
#include "ui/LoadingIndicator.h"
|
||||
#include "ui/OverlayModal.h"
|
||||
#include "ui/RaisedButton.h"
|
||||
#include "ui/TextField.h"
|
||||
|
||||
Q_DECLARE_METATYPE(LoginPage::LoginMethod)
|
||||
|
||||
using namespace mtx::identifiers;
|
||||
|
||||
LoginPage::LoginPage(QWidget *parent)
|
||||
: QWidget(parent)
|
||||
, inferredServerAddress_()
|
||||
{
|
||||
qRegisterMetaType<LoginPage::LoginMethod>("LoginPage::LoginMethod");
|
||||
|
||||
top_layout_ = new QVBoxLayout();
|
||||
|
||||
top_bar_layout_ = new QHBoxLayout();
|
||||
|
@ -81,6 +88,14 @@ LoginPage::LoginPage(QWidget *parent)
|
|||
matrixid_input_ = new TextField(this);
|
||||
matrixid_input_->setLabel(tr("Matrix ID"));
|
||||
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_->setFixedHeight(40);
|
||||
|
@ -97,13 +112,19 @@ LoginPage::LoginPage(QWidget *parent)
|
|||
password_input_ = new TextField(this);
|
||||
password_input_->setLabel(tr("Password"));
|
||||
password_input_->setEchoMode(QLineEdit::Password);
|
||||
password_input_->setToolTip("Your password.");
|
||||
|
||||
deviceName_ = new TextField(this);
|
||||
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_->setLabel("Homeserver address");
|
||||
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();
|
||||
|
||||
serverLayout_ = new QHBoxLayout();
|
||||
|
@ -212,7 +233,8 @@ LoginPage::onMatrixIdEntered()
|
|||
emit versionErrorCb(tr("Autodiscovery failed. Unknown error when "
|
||||
"requesting .well-known."));
|
||||
nhlog::net()->error("Autodiscovery failed. Unknown error when "
|
||||
"requesting .well-known.");
|
||||
"requesting .well-known. {}",
|
||||
err->error_code.message());
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -249,7 +271,16 @@ LoginPage::checkHomeserverVersion()
|
|||
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
|
||||
LoginPage::versionOk()
|
||||
LoginPage::versionOk(LoginMethod loginMethod_)
|
||||
{
|
||||
this->loginMethod = loginMethod_;
|
||||
|
||||
serverLayout_->removeWidget(spinner_);
|
||||
matrixidLayout_->removeWidget(spinner_);
|
||||
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())
|
||||
serverInput_->hide();
|
||||
}
|
||||
|
@ -303,29 +344,68 @@ LoginPage::onLoginButtonClicked()
|
|||
return loginError("You have entered an invalid Matrix ID e.g @joe:matrix.org");
|
||||
}
|
||||
|
||||
if (password_input_->text().isEmpty())
|
||||
return loginError(tr("Empty password"));
|
||||
if (loginMethod == LoginMethod::Password) {
|
||||
if (password_input_->text().isEmpty())
|
||||
return loginError(tr("Empty password"));
|
||||
|
||||
http::client()->login(
|
||||
user.localpart(),
|
||||
password_input_->text().toStdString(),
|
||||
deviceName_->text().trimmed().isEmpty() ? initialDeviceName()
|
||||
: deviceName_->text().toStdString(),
|
||||
[this](const mtx::responses::Login &res, mtx::http::RequestErr err) {
|
||||
if (err) {
|
||||
emit loginError(QString::fromStdString(err->matrix_error.error));
|
||||
emit errorOccurred();
|
||||
return;
|
||||
}
|
||||
http::client()->login(
|
||||
user.localpart(),
|
||||
password_input_->text().toStdString(),
|
||||
deviceName_->text().trimmed().isEmpty() ? initialDeviceName()
|
||||
: deviceName_->text().toStdString(),
|
||||
[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);
|
||||
}
|
||||
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);
|
||||
});
|
||||
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();
|
||||
}
|
||||
|
@ -335,6 +415,7 @@ LoginPage::reset()
|
|||
{
|
||||
matrixid_input_->clear();
|
||||
password_input_->clear();
|
||||
password_input_->show();
|
||||
serverInput_->clear();
|
||||
|
||||
spinner_->stop();
|
||||
|
|
|
@ -38,6 +38,12 @@ class LoginPage : public QWidget
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum class LoginMethod
|
||||
{
|
||||
Password,
|
||||
SSO,
|
||||
};
|
||||
|
||||
LoginPage(QWidget *parent = nullptr);
|
||||
|
||||
void reset();
|
||||
|
@ -50,7 +56,7 @@ signals:
|
|||
//! Used to trigger the corresponding slot outside of the main thread.
|
||||
void versionErrorCb(const QString &err);
|
||||
void loginErrorCb(const QString &err);
|
||||
void versionOkCb();
|
||||
void versionOkCb(LoginPage::LoginMethod method);
|
||||
|
||||
void loginOk(const mtx::responses::Login &res);
|
||||
|
||||
|
@ -77,7 +83,7 @@ private slots:
|
|||
// Callback for errors produced during server probing
|
||||
void versionError(const QString &error_message);
|
||||
// Callback for successful server probing
|
||||
void versionOk();
|
||||
void versionOk(LoginPage::LoginMethod method);
|
||||
|
||||
private:
|
||||
bool isMatrixIdValid();
|
||||
|
@ -123,4 +129,5 @@ private:
|
|||
TextField *password_input_;
|
||||
TextField *deviceName_;
|
||||
TextField *serverInput_;
|
||||
LoginMethod loginMethod = LoginMethod::Password;
|
||||
};
|
||||
|
|
|
@ -85,17 +85,26 @@ RegisterPage::RegisterPage(QWidget *parent)
|
|||
|
||||
username_input_ = new TextField();
|
||||
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_->setLabel(tr("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_->setLabel(tr("Password confirmation"));
|
||||
password_confirmation_->setEchoMode(QLineEdit::Password);
|
||||
|
||||
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(password_input_, Qt::AlignHCenter, nullptr);
|
||||
|
|
53
src/SSOHandler.cpp
Normal file
53
src/SSOHandler.cpp
Normal 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
24
src/SSOHandler.h
Normal 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;
|
||||
};
|
|
@ -224,6 +224,7 @@ TimelineModel::roleNames() const
|
|||
{Id, "id"},
|
||||
{State, "state"},
|
||||
{IsEncrypted, "isEncrypted"},
|
||||
{IsRoomEncrypted, "isRoomEncrypted"},
|
||||
{ReplyTo, "replyTo"},
|
||||
{Reactions, "reactions"},
|
||||
{RoomId, "roomId"},
|
||||
|
@ -294,6 +295,10 @@ TimelineModel::data(const QString &id, int role) const
|
|||
if (isReply)
|
||||
formattedBody_ = formattedBody_.remove(replyFallback);
|
||||
}
|
||||
|
||||
formattedBody_.replace("<img src=\"mxc://", "<img src=\"image://mxcImage/");
|
||||
formattedBody_.replace("<img src=\"mxc://", "<img src=\"image://mxcImage/");
|
||||
|
||||
return QVariant(utils::replaceEmoji(
|
||||
utils::linkifyMessage(utils::escapeBlacklistedHtml(formattedBody_))));
|
||||
}
|
||||
|
@ -346,6 +351,9 @@ TimelineModel::data(const QString &id, int role) const
|
|||
return std::holds_alternative<
|
||||
mtx::events::EncryptedEvent<mtx::events::msg::Encrypted>>(events[id]);
|
||||
}
|
||||
case IsRoomEncrypted: {
|
||||
return cache::isRoomEncrypted(room_id_.toStdString());
|
||||
}
|
||||
case ReplyTo:
|
||||
return QVariant(QString::fromStdString(in_reply_to_event(event)));
|
||||
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[State], data(id, static_cast<int>(State)));
|
||||
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[RoomName], data(id, static_cast<int>(RoomName)));
|
||||
m.insert(names[RoomTopic], data(id, static_cast<int>(RoomTopic)));
|
||||
|
@ -566,7 +575,7 @@ TimelineModel::updateLastMessage()
|
|||
room_id_,
|
||||
DescInfo{QString::fromStdString(mtx::accessors::event_id(event)),
|
||||
QString::fromStdString(http::client()->user_id().to_string()),
|
||||
tr("You joined this room"),
|
||||
tr("You joined this room."),
|
||||
utils::descriptiveTime(time),
|
||||
ts,
|
||||
time});
|
||||
|
|
|
@ -159,6 +159,7 @@ public:
|
|||
Id,
|
||||
State,
|
||||
IsEncrypted,
|
||||
IsRoomEncrypted,
|
||||
ReplyTo,
|
||||
Reactions,
|
||||
RoomId,
|
||||
|
|
|
@ -147,7 +147,10 @@ QColor
|
|||
TextField::underlineColor() const
|
||||
{
|
||||
if (!underline_color_.isValid()) {
|
||||
return QPalette().color(QPalette::Highlight);
|
||||
if (hasAcceptableInput() || !isModified())
|
||||
return QPalette().color(QPalette::Highlight);
|
||||
else
|
||||
return Qt::red;
|
||||
}
|
||||
|
||||
return underline_color_;
|
||||
|
|
5125
third_party/cpp-httplib-0.5.12/httplib.h
vendored
Normal file
5125
third_party/cpp-httplib-0.5.12/httplib.h
vendored
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue