mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-24 12:08:50 +03:00
Merge branch 'master' into input_method_height
This commit is contained in:
commit
6642b5a09e
17 changed files with 402 additions and 327 deletions
|
@ -76,9 +76,6 @@ build-macos:
|
||||||
stage: build
|
stage: build
|
||||||
tags: [macos]
|
tags: [macos]
|
||||||
before_script:
|
before_script:
|
||||||
#- brew update
|
|
||||||
#- brew reinstall --force python3
|
|
||||||
#- brew bundle --file=./.ci/macos/Brewfile --force --cleanup
|
|
||||||
- rm -rf ../.hunter && mv .hunter ../.hunter || true
|
- rm -rf ../.hunter && mv .hunter ../.hunter || true
|
||||||
script:
|
script:
|
||||||
- export PATH=/usr/local/opt/qt@5/bin/:${PATH}
|
- export PATH=/usr/local/opt/qt@5/bin/:${PATH}
|
||||||
|
@ -112,6 +109,7 @@ codesign-macos:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
tags: [macos]
|
tags: [macos]
|
||||||
before_script:
|
before_script:
|
||||||
|
- 'brew upgrade qt@5'
|
||||||
- pip3 install dmgbuild
|
- pip3 install dmgbuild
|
||||||
script:
|
script:
|
||||||
- export PATH=/usr/local/opt/qt@5/bin/:${PATH}
|
- export PATH=/usr/local/opt/qt@5/bin/:${PATH}
|
||||||
|
|
45
CHANGELOG.md
45
CHANGELOG.md
|
@ -1,5 +1,50 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [0.9.3] -- 2022-03-25
|
||||||
|
|
||||||
|
### Highlights
|
||||||
|
|
||||||
|
- New upload UX
|
||||||
|
- Queue multiple uploads by pasting or dragging multiple files.
|
||||||
|
- Videos will now properly have a thumbnail as well as images.
|
||||||
|
- Duration, width and height is now also properly included so that clients can resize appropriately.
|
||||||
|
- Thumbnails are excluded if they are bigger than the original image. (tastytea)
|
||||||
|
- Improvements for mobile devices (Malte E)
|
||||||
|
- You should now be able to scroll by touching anywhere with no random dead zones.
|
||||||
|
- Preedit text can now be used in a completer and is properly sent
|
||||||
|
- If an input method is active, pressing Enter will not send the current message.
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- Optionally always open videos and images in an external program. (math)
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
- Build macOS releases against Qt 5.15.3 to resolve missing spaces after some punctuation.
|
||||||
|
- Send the shortcode as the body for stickers without a body.
|
||||||
|
- Elide long usernames in the timeline. (Malte E)
|
||||||
|
- Cleanup the reply popup. (Malte E)
|
||||||
|
- Use standard buttons where possible. (tastytea)
|
||||||
|
- Various improvements to the bubble layout. (Malte E)
|
||||||
|
- Enable online key backup by default.
|
||||||
|
- Update the bundled gstreamer in our Flatpaks.
|
||||||
|
|
||||||
|
### Translations
|
||||||
|
|
||||||
|
- Indonesian (Linerly)
|
||||||
|
- Estonian (Priit)
|
||||||
|
- Finnish (Priit)
|
||||||
|
- Esperanto (Tirifto)
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
|
- Fix hovering the action menu.
|
||||||
|
- Try to avoid using unknown UIA flows.
|
||||||
|
- Don't Components actively in use.
|
||||||
|
- Fix screensharing.
|
||||||
|
- Fix device id when doing SSO logins.
|
||||||
|
|
||||||
|
|
||||||
## [0.9.2] -- 2022-03-09
|
## [0.9.2] -- 2022-03-09
|
||||||
|
|
||||||
### Highlights
|
### Highlights
|
||||||
|
|
|
@ -106,7 +106,7 @@ include(GNUInstallDirs)
|
||||||
|
|
||||||
set(CPACK_PACKAGE_VERSION_MAJOR "0")
|
set(CPACK_PACKAGE_VERSION_MAJOR "0")
|
||||||
set(CPACK_PACKAGE_VERSION_MINOR "9")
|
set(CPACK_PACKAGE_VERSION_MINOR "9")
|
||||||
set(CPACK_PACKAGE_VERSION_PATCH "2")
|
set(CPACK_PACKAGE_VERSION_PATCH "3")
|
||||||
set(PROJECT_VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR})
|
set(PROJECT_VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR})
|
||||||
set(PROJECT_VERSION_MINOR ${CPACK_PACKAGE_VERSION_MINOR})
|
set(PROJECT_VERSION_MINOR ${CPACK_PACKAGE_VERSION_MINOR})
|
||||||
set(PROJECT_VERSION_PATCH ${CPACK_PACKAGE_VERSION_PATCH})
|
set(PROJECT_VERSION_PATCH ${CPACK_PACKAGE_VERSION_PATCH})
|
||||||
|
|
|
@ -31,8 +31,8 @@ build_script:
|
||||||
# VERSION format: branch-master/branch-1.2
|
# VERSION format: branch-master/branch-1.2
|
||||||
# INSTVERSION format: x.y.z
|
# INSTVERSION format: x.y.z
|
||||||
# WINVERSION format: 9999.0.0.123/1.2.0.234
|
# WINVERSION format: 9999.0.0.123/1.2.0.234
|
||||||
- if "%APPVEYOR_REPO_TAG%"=="false" set INSTVERSION=0.9.2
|
- if "%APPVEYOR_REPO_TAG%"=="false" set INSTVERSION=0.9.3
|
||||||
- if "%APPVEYOR_REPO_TAG%"=="false" set VERSION=0.9.2
|
- if "%APPVEYOR_REPO_TAG%"=="false" set VERSION=0.9.3
|
||||||
- if "%APPVEYOR_REPO_TAG%"=="false" if "%APPVEYOR_REPO_BRANCH%"=="master" set INSTVERSION=9999.0
|
- if "%APPVEYOR_REPO_TAG%"=="false" if "%APPVEYOR_REPO_BRANCH%"=="master" set INSTVERSION=9999.0
|
||||||
- if "%APPVEYOR_REPO_TAG%"=="false" set WINVERSION=%INSTVERSION%.0.%APPVEYOR_BUILD_NUMBER%
|
- if "%APPVEYOR_REPO_TAG%"=="false" set WINVERSION=%INSTVERSION%.0.%APPVEYOR_BUILD_NUMBER%
|
||||||
# VERSION format: v1.2.3/v1.3.4
|
# VERSION format: v1.2.3/v1.3.4
|
||||||
|
@ -94,8 +94,8 @@ after_build:
|
||||||
- copy %BUILD%\deploy\installer\gui\package.xml installer\packages\io.github.nhekoreborn.nheko\meta
|
- copy %BUILD%\deploy\installer\gui\package.xml installer\packages\io.github.nhekoreborn.nheko\meta
|
||||||
- copy %BUILD%\deploy\installer\gui\installscript.qs installer\packages\io.github.nhekoreborn.nheko\meta
|
- copy %BUILD%\deploy\installer\gui\installscript.qs installer\packages\io.github.nhekoreborn.nheko\meta
|
||||||
# Amend version and date
|
# Amend version and date
|
||||||
- sed -i "s/__VERSION__/0.9.2/" installer\config\config.xml
|
- sed -i "s/__VERSION__/0.9.3/" installer\config\config.xml
|
||||||
- sed -i "s/__VERSION__/0.9.2/" installer\packages\io.github.nhekoreborn.nheko\meta\package.xml
|
- sed -i "s/__VERSION__/0.9.3/" installer\packages\io.github.nhekoreborn.nheko\meta\package.xml
|
||||||
- sed -i "s/__DATE__/%DATE%/" installer\packages\io.github.nhekoreborn.nheko\meta\package.xml
|
- sed -i "s/__DATE__/%DATE%/" installer\packages\io.github.nhekoreborn.nheko\meta\package.xml
|
||||||
# Copy nheko data
|
# Copy nheko data
|
||||||
- xcopy NhekoData\*.* installer\packages\io.github.nhekoreborn.nheko\data\*.* /s /e /c /y
|
- xcopy NhekoData\*.* installer\packages\io.github.nhekoreborn.nheko\data\*.* /s /e /c /y
|
||||||
|
|
|
@ -1231,7 +1231,7 @@ Näiteks: https://server.minu:8787</translation>
|
||||||
<location filename="../../src/timeline/InputBar.cpp" line="+581"/>
|
<location filename="../../src/timeline/InputBar.cpp" line="+581"/>
|
||||||
<location line="+34"/>
|
<location line="+34"/>
|
||||||
<source>Failed to upload media. Please try again.</source>
|
<source>Failed to upload media. Please try again.</source>
|
||||||
<translation type="unfinished">Meediafailide üleslaadimine ei õnnestunud. Palun proovi uuesti.</translation>
|
<translation>Meediafailide üleslaadimine ei õnnestunud. Palun proovi uuesti.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2820,9 +2820,9 @@ Põhjus: %4</translation>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../qml/UploadBox.qml" line="+79"/>
|
<location filename="../qml/UploadBox.qml" line="+79"/>
|
||||||
<source>Upload %n file(s)</source>
|
<source>Upload %n file(s)</source>
|
||||||
<translation type="unfinished">
|
<translation>
|
||||||
<numerusform></numerusform>
|
<numerusform>Laadi fail üles</numerusform>
|
||||||
<numerusform></numerusform>
|
<numerusform>Laadi %n faili üles</numerusform>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
@ -3393,13 +3393,15 @@ See tavaliselt tähendab, et rakenduse ikoon tegumiribal annab mingit sorti anim
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Opens images with an external program when tapping the image.
|
<source>Opens images with an external program when tapping the image.
|
||||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Pildile klõpsimisel avab need välises rakenduses.
|
||||||
|
Kui see valik on sisse lülitatud, siis failid jäävad andmekandjale krüptimata kujul ning sa pead neid eraldi kustutama.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+4"/>
|
<location line="+4"/>
|
||||||
<source>Opens videos with an external program when tapping the video.
|
<source>Opens videos with an external program when tapping the video.
|
||||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Videole klõpsimisel avab need välises rakenduses.
|
||||||
|
Kui see valik on sisse lülitatud, siis failid jäävad andmekandjale krüptimata kujul ning sa pead neid eraldi kustutama.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+4"/>
|
<location line="+4"/>
|
||||||
|
|
|
@ -95,12 +95,12 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+13"/>
|
<location line="+13"/>
|
||||||
<source>Unknown microphone: %1</source>
|
<source>Unknown microphone: %1</source>
|
||||||
<translation>Microphone inconnu : %1</translation>
|
<translation>Microphone inconnu : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+9"/>
|
<location line="+9"/>
|
||||||
<source>Unknown camera: %1</source>
|
<source>Unknown camera: %1</source>
|
||||||
<translation>Caméra inconnue : %1</translation>
|
<translation>Caméra inconnue : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+14"/>
|
<location line="+14"/>
|
||||||
|
@ -147,7 +147,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+41"/>
|
<location line="+41"/>
|
||||||
<source>Failed to open database, logging out!</source>
|
<source>Failed to open database, logging out!</source>
|
||||||
<translation>Impossible d'ouvrir la base de données, déconnexion !</translation>
|
<translation>Impossible d'ouvrir la base de données, déconnexion !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+304"/>
|
<location line="+304"/>
|
||||||
|
@ -173,12 +173,12 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="-445"/>
|
<location line="-445"/>
|
||||||
<source>Do you really want to invite %1 (%2)?</source>
|
<source>Do you really want to invite %1 (%2)?</source>
|
||||||
<translation>Voulez-vous vraiment inviter %1 (%2) ?</translation>
|
<translation>Voulez-vous vraiment inviter %1 (%2) ?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+12"/>
|
<location line="+12"/>
|
||||||
<source>Failed to invite %1 to %2: %3</source>
|
<source>Failed to invite %1 to %2: %3</source>
|
||||||
<translation>Échec de l'invitation de %1 dans %2 : %3</translation>
|
<translation>Échec de l'invitation de %1 dans %2 : %3</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+34"/>
|
<location line="+34"/>
|
||||||
|
@ -203,12 +203,12 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>Do you really want to unban %1 (%2)?</source>
|
<source>Do you really want to unban %1 (%2)?</source>
|
||||||
<translation>Voulez-vous vraiment annuler le bannissement de %1 (%2) ?</translation>
|
<translation>Voulez-vous vraiment annuler le bannissement de %1 (%2) ?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+10"/>
|
<location line="+10"/>
|
||||||
<source>Failed to unban %1 in %2: %3</source>
|
<source>Failed to unban %1 in %2: %3</source>
|
||||||
<translation>Échec de l'annulation du bannissement de %1 dans %2 : %3</translation>
|
<translation>Échec de l'annulation du bannissement de %1 dans %2 : %3</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+3"/>
|
<location line="+3"/>
|
||||||
|
@ -223,7 +223,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="-892"/>
|
<location line="-892"/>
|
||||||
<source>Cache migration failed!</source>
|
<source>Cache migration failed!</source>
|
||||||
<translation>Échec de la migration du cache !</translation>
|
<translation>Échec de la migration du cache !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+13"/>
|
<location line="+13"/>
|
||||||
|
@ -245,18 +245,18 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+93"/>
|
<location line="+93"/>
|
||||||
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
|
<source>Failed to setup encryption keys. Server response: %1 %2. Please try again later.</source>
|
||||||
<translation>Échec de la configuration des clés de chiffrement. Réponse du serveur : %1 %2. Veuillez réessayer plus tard.</translation>
|
<translation>Échec de la configuration des clés de chiffrement. Réponse du serveur : %1 %2. Veuillez réessayer plus tard.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+34"/>
|
<location line="+34"/>
|
||||||
<location line="+111"/>
|
<location line="+111"/>
|
||||||
<source>Please try to login again: %1</source>
|
<source>Please try to login again: %1</source>
|
||||||
<translation>Veuillez re-tenter vous reconnecter : %1</translation>
|
<translation>Veuillez re-tenter vous reconnecter : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+43"/>
|
<location line="+43"/>
|
||||||
<source>Failed to join room: %1</source>
|
<source>Failed to join room: %1</source>
|
||||||
<translation>Impossible de rejoindre le salon : %1</translation>
|
<translation>Impossible de rejoindre le salon : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+4"/>
|
<location line="+4"/>
|
||||||
|
@ -266,42 +266,42 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+6"/>
|
<location line="+6"/>
|
||||||
<source>Failed to remove invite: %1</source>
|
<source>Failed to remove invite: %1</source>
|
||||||
<translation>Impossible de supprimer l'invitation : %1</translation>
|
<translation>Impossible de supprimer l'invitation : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+19"/>
|
<location line="+19"/>
|
||||||
<source>Room creation failed: %1</source>
|
<source>Room creation failed: %1</source>
|
||||||
<translation>Échec de la création du salon : %1</translation>
|
<translation>Échec de la création du salon : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+18"/>
|
<location line="+18"/>
|
||||||
<source>Failed to leave room: %1</source>
|
<source>Failed to leave room: %1</source>
|
||||||
<translation>Impossible de quitter le salon : %1</translation>
|
<translation>Impossible de quitter le salon : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+59"/>
|
<location line="+59"/>
|
||||||
<source>Reason for the kick</source>
|
<source>Reason for the kick</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Motif de l’expulsion</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>Enter reason for kicking %1 (%2) or hit enter for no reason:</source>
|
<source>Enter reason for kicking %1 (%2) or hit enter for no reason:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Saisissez le motif de l'expulsion de %1 (%2), ou appuyez sur entrée pour l'omettre :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+15"/>
|
<location line="+15"/>
|
||||||
<source>Failed to kick %1 from %2: %3</source>
|
<source>Failed to kick %1 from %2: %3</source>
|
||||||
<translation>Échec de l'expulsion de %1 de %2  : %3</translation>
|
<translation>Échec de l'expulsion de %1 de %2 : %3</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+15"/>
|
<location line="+15"/>
|
||||||
<source>Reason for the ban</source>
|
<source>Reason for the ban</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Motif du bannissement</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>Enter reason for banning %1 (%2) or hit enter for no reason:</source>
|
<source>Enter reason for banning %1 (%2) or hit enter for no reason:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Saisissez le motif du bannissement de %1 (%2), ou appuyez sur entrée pour l'omettre :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../qml/ChatPage.qml" line="+37"/>
|
<location filename="../qml/ChatPage.qml" line="+37"/>
|
||||||
|
@ -390,12 +390,12 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Enter your recovery key or passphrase to decrypt your secrets:</source>
|
<source>Enter your recovery key or passphrase to decrypt your secrets:</source>
|
||||||
<translation>Entrez votre clé de récupération ou phrase de passe pour déchiffrer vos secrets :</translation>
|
<translation>Entrez votre clé de récupération ou phrase de passe pour déchiffrer vos secrets :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Enter your recovery key or passphrase called %1 to decrypt your secrets:</source>
|
<source>Enter your recovery key or passphrase called %1 to decrypt your secrets:</source>
|
||||||
<translation>Entrez votre clé de récupération ou votre phrase de passe nommée %1 pour déchiffrer vos secrets :</translation>
|
<translation>Entrez votre clé de récupération ou votre phrase de passe nommée %1 pour déchiffrer vos secrets :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+28"/>
|
<location line="+28"/>
|
||||||
|
@ -418,17 +418,17 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+13"/>
|
<location line="+13"/>
|
||||||
<source>Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification!</source>
|
<source>Please verify the following digits. You should see the same numbers on both sides. If they differ, please press 'They do not match!' to abort verification!</source>
|
||||||
<translation>Veuillez vérifier les chiffres suivants. Vous devriez voir les mêmes chiffres des deux côtés. Si ceux-ci diffèrent, veuillez choisir « Ils sont différents ! » pour annuler la vérification !</translation>
|
<translation>Veuillez vérifier les chiffres suivants. Vous devriez voir les mêmes chiffres des deux côtés. Si ceux-ci diffèrent, veuillez choisir « Ils sont différents ! » pour annuler la vérification !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+33"/>
|
<location line="+33"/>
|
||||||
<source>They do not match!</source>
|
<source>They do not match!</source>
|
||||||
<translation>Ils sont différents !</translation>
|
<translation>Ils sont différents !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+13"/>
|
<location line="+13"/>
|
||||||
<source>They match!</source>
|
<source>They match!</source>
|
||||||
<translation>Ils sont identiques !</translation>
|
<translation>Ils sont identiques !</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -436,12 +436,12 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../qml/dialogs/DirectChatSetup.qml" line="+28"/>
|
<location filename="../qml/dialogs/DirectChatSetup.qml" line="+28"/>
|
||||||
<source>Room Settings</source>
|
<source>Room Settings</source>
|
||||||
<translation type="unfinished">Configuration du salon</translation>
|
<translation>Configuration du salon</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location line="+94"/>
|
<location line="+94"/>
|
||||||
<source>%n member(s)</source>
|
<source>%n member(s)</source>
|
||||||
<translation type="unfinished">
|
<translation>
|
||||||
<numerusform>%n membre</numerusform>
|
<numerusform>%n membre</numerusform>
|
||||||
<numerusform>%n membres</numerusform>
|
<numerusform>%n membres</numerusform>
|
||||||
</translation>
|
</translation>
|
||||||
|
@ -449,133 +449,134 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+65"/>
|
<location line="+65"/>
|
||||||
<source>SETTINGS</source>
|
<source>SETTINGS</source>
|
||||||
<translation type="unfinished">CONFIGURATION</translation>
|
<translation>CONFIGURATION</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+10"/>
|
<location line="+10"/>
|
||||||
<source>Notifications</source>
|
<source>Notifications</source>
|
||||||
<translation type="unfinished">Notifications</translation>
|
<translation>Notifications</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+6"/>
|
<location line="+6"/>
|
||||||
<source>Muted</source>
|
<source>Muted</source>
|
||||||
<translation type="unfinished">En sourdine</translation>
|
<translation>En sourdine</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>Mentions only</source>
|
<source>Mentions only</source>
|
||||||
<translation type="unfinished">Seulement les mentions</translation>
|
<translation>Seulement les mentions</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>All messages</source>
|
<source>All messages</source>
|
||||||
<translation type="unfinished">Tous les messages</translation>
|
<translation>Tous les messages</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+10"/>
|
<location line="+10"/>
|
||||||
<source>Room access</source>
|
<source>Room access</source>
|
||||||
<translation type="unfinished">Accès au salon</translation>
|
<translation>Accès au salon</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+8"/>
|
<location line="+8"/>
|
||||||
<source>Anyone and guests</source>
|
<source>Anyone and guests</source>
|
||||||
<translation type="unfinished">Tous le monde et les invités</translation>
|
<translation>Tous le monde et les invités</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>Anyone</source>
|
<source>Anyone</source>
|
||||||
<translation type="unfinished">Tout le monde</translation>
|
<translation>Tout le monde</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>Invited users</source>
|
<source>Invited users</source>
|
||||||
<translation type="unfinished">Utilisateurs invités</translation>
|
<translation>Utilisateurs invités</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>By knocking</source>
|
<source>By knocking</source>
|
||||||
<translation type="unfinished">En toquant</translation>
|
<translation>En toquant</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+3"/>
|
<location line="+3"/>
|
||||||
<source>Restricted by membership in other rooms</source>
|
<source>Restricted by membership in other rooms</source>
|
||||||
<translation type="unfinished">Restreint par l'appartenance à d'autre salons</translation>
|
<translation>Restreint par l'appartenance à d'autre salons</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+13"/>
|
<location line="+13"/>
|
||||||
<source>Encryption</source>
|
<source>Encryption</source>
|
||||||
<translation type="unfinished">Chiffrement</translation>
|
<translation>Chiffrement</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+21"/>
|
<location line="+21"/>
|
||||||
<source>End-to-End Encryption</source>
|
<source>End-to-End Encryption</source>
|
||||||
<translation type="unfinished">Chiffrement bout-à-bout</translation>
|
<translation>Chiffrement de bout en bout</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>Encryption is currently experimental and things might break unexpectedly. <br>
|
<source>Encryption is currently experimental and things might break unexpectedly. <br>
|
||||||
Please take note that it can't be disabled afterwards.</source>
|
Please take note that it can't be disabled afterwards.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Le chiffrement est expérimental pour le moment, à vos risques et périls. <br>
|
||||||
|
Veuillez noter qu'il ne pourra plus être désactivé par la suite.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
<source>Sticker & Emote Settings</source>
|
<source>Sticker & Emote Settings</source>
|
||||||
<translation type="unfinished">Paramètres des autocollants & emotes</translation>
|
<translation>Paramètres des autocollants & emotes</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+5"/>
|
<location line="+5"/>
|
||||||
<source>Change</source>
|
<source>Change</source>
|
||||||
<translation type="unfinished">Modifier</translation>
|
<translation>Modifier</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>Change what packs are enabled, remove packs or create new ones</source>
|
<source>Change what packs are enabled, remove packs or create new ones</source>
|
||||||
<translation type="unfinished">Modifier quels paquets sont activés, retirer des paquets ou bien en créer de nouveaux</translation>
|
<translation>Modifier quels paquets sont activés, supprimer des paquets, en créer des nouveaux</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+6"/>
|
<location line="+6"/>
|
||||||
<source>Hidden events</source>
|
<source>Hidden events</source>
|
||||||
<translation type="unfinished">Évènements cachés</translation>
|
<translation>Évènements cachés</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+11"/>
|
<location line="+11"/>
|
||||||
<source>Configure</source>
|
<source>Configure</source>
|
||||||
<translation type="unfinished">Configurer</translation>
|
<translation>Configurer</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>Select events to hide in this room</source>
|
<source>Select events to hide in this room</source>
|
||||||
<translation type="unfinished">Sélectionner les évènements à cacher dans ce salon</translation>
|
<translation>Sélectionnez les évènements à cacher dans ce salon</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
<source>INFO</source>
|
<source>INFO</source>
|
||||||
<translation type="unfinished">INFO</translation>
|
<translation>INFO</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+10"/>
|
<location line="+10"/>
|
||||||
<source>Internal ID</source>
|
<source>Internal ID</source>
|
||||||
<translation type="unfinished">Identifiant interne</translation>
|
<translation>Identifiant interne</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
<source>Copied to clipboard</source>
|
<source>Copied to clipboard</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Copié dans le presse-papiers</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+19"/>
|
<location line="+19"/>
|
||||||
<source>Room Version</source>
|
<source>Room Version</source>
|
||||||
<translation type="unfinished">Version du salon</translation>
|
<translation>Version du salon</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+19"/>
|
<location line="+19"/>
|
||||||
<source>show less</source>
|
<source>show less</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>montrer moins</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>show more</source>
|
<source>show more</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>montrer plus</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -659,17 +660,17 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+13"/>
|
<location line="+13"/>
|
||||||
<source>Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification!</source>
|
<source>Please verify the following emoji. You should see the same emoji on both sides. If they differ, please press 'They do not match!' to abort verification!</source>
|
||||||
<translation>Veuillez vérifier les émoji suivants. Vous devriez voir les mêmes émoji des deux côtés. S'ils diffèrent, veuillez choisir « Ils sont différents ! » pour annuler la vérification !</translation>
|
<translation>Veuillez vérifier les émoji suivants. Vous devriez voir les mêmes émoji des deux côtés. S'ils diffèrent, veuillez choisir « Ils sont différents ! » pour annuler la vérification !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+378"/>
|
<location line="+378"/>
|
||||||
<source>They do not match!</source>
|
<source>They do not match!</source>
|
||||||
<translation>Ils sont différents !</translation>
|
<translation>Ils sont différents !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+13"/>
|
<location line="+13"/>
|
||||||
<source>They match!</source>
|
<source>They match!</source>
|
||||||
<translation>Ils sont identiques !</translation>
|
<translation>Ils sont identiques !</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -720,7 +721,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../qml/EncryptionIndicator.qml" line="+54"/>
|
<location filename="../qml/EncryptionIndicator.qml" line="+54"/>
|
||||||
<source>This message is not encrypted!</source>
|
<source>This message is not encrypted!</source>
|
||||||
<translation>Ce message n'est pas chiffré !</translation>
|
<translation>Ce message n'est pas chiffré !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+4"/>
|
<location line="+4"/>
|
||||||
|
@ -753,7 +754,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+4"/>
|
<location line="+4"/>
|
||||||
<source>Key mismatch detected!</source>
|
<source>Key mismatch detected!</source>
|
||||||
<translation>Clés non correspondantes détectées !</translation>
|
<translation>Clés non correspondantes détectées !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
|
@ -768,7 +769,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Verification messages received out of order!</source>
|
<source>Verification messages received out of order!</source>
|
||||||
<translation>Messages de vérification reçus dans le désordre !</translation>
|
<translation>Messages de vérification reçus dans le désordre !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
|
@ -813,12 +814,12 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+18"/>
|
<location line="+18"/>
|
||||||
<source>These events will be <b>shown</b> in %1:</source>
|
<source>These events will be <b>shown</b> in %1:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ces évènements seront <b>affichés</b> dans %1 :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+3"/>
|
<location line="+3"/>
|
||||||
<source>These events will be <b>shown</b> in all rooms:</source>
|
<source>These events will be <b>shown</b> in all rooms:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ces évènements seront <b>affichés</b> dans tous les salons :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+15"/>
|
<location line="+15"/>
|
||||||
|
@ -1080,9 +1081,9 @@
|
||||||
You can also put your homeserver address there, if your server doesn't support .well-known lookup.
|
You can also put your homeserver address there, if your server doesn't support .well-known lookup.
|
||||||
Example: @user:server.my
|
Example: @user:server.my
|
||||||
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
|
If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source>
|
||||||
<translation>Votre nom de connexion. Un mxid doit commencer par un « @ » suivi de l'identifiant. L'identifiant doit être suivi du nom de serveur, séparé de celui-ci par « : ».
|
<translation>Votre nom de connexion. Un mxid doit commencer par un « @ » suivi de l'identifiant. L'identifiant doit être suivi du nom de serveur, séparé de celui-ci par « : ».
|
||||||
Vous pouvez également spécifier l'adresse de votre serveur ici, si votre serveur ne supporte pas l'identification .well-known.
|
Vous pouvez également spécifier l'adresse de votre serveur ici, si votre serveur ne supporte pas l'identification .well-known.
|
||||||
Exemple : @utilisateur :monserveur.example.com
|
Exemple : @utilisateur :monserveur.example.com
|
||||||
Si Nheko n'arrive pas à trouver votre serveur, il vous proposera de l'indiquer manuellement.</translation>
|
Si Nheko n'arrive pas à trouver votre serveur, il vous proposera de l'indiquer manuellement.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
|
@ -1120,7 +1121,7 @@ Si Nheko n'arrive pas à trouver votre serveur, il vous proposera de l&apos
|
||||||
<source>The address that can be used to contact you homeservers client API.
|
<source>The address that can be used to contact you homeservers client API.
|
||||||
Example: https://server.my:8787</source>
|
Example: https://server.my:8787</source>
|
||||||
<translation>L'adresse qui peut être utilisée pour joindre l'API client de votre serveur.
|
<translation>L'adresse qui peut être utilisée pour joindre l'API client de votre serveur.
|
||||||
Exemple : https ://monserveur.example.com:8787</translation>
|
Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+30"/>
|
<location line="+30"/>
|
||||||
|
@ -1138,7 +1139,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<location line="+58"/>
|
<location line="+58"/>
|
||||||
<location line="+109"/>
|
<location line="+109"/>
|
||||||
<source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source>
|
<source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source>
|
||||||
<translation>Vous avez entré un identifiant Matrix invalide exemple correct : @moi:monserveur.example.com)</translation>
|
<translation>Vous avez entré un identifiant Matrix invalide exemple correct : @moi:monserveur.example.com)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="-139"/>
|
<location line="-139"/>
|
||||||
|
@ -1168,27 +1169,27 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+19"/>
|
<location line="+19"/>
|
||||||
<source>Sign in with Apple</source>
|
<source>Sign in with Apple</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Se connecter avec Apple</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Continue with Facebook</source>
|
<source>Continue with Facebook</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Continuer avec Facebook</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Sign in with Google</source>
|
<source>Sign in with Google</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Connexion avec Google</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Sign in with Twitter</source>
|
<source>Sign in with Twitter</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Connexion avec Twitter</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Login using %1</source>
|
<source>Login using %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Connexion avec %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+9"/>
|
<location line="+9"/>
|
||||||
|
@ -1216,12 +1217,12 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>A call is in progress. Log out?</source>
|
<source>A call is in progress. Log out?</source>
|
||||||
<translation>Un appel est en cours. Se déconnecter ?</translation>
|
<translation>Un appel est en cours. Se déconnecter ?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>Are you sure you want to log out?</source>
|
<source>Are you sure you want to log out?</source>
|
||||||
<translation>Êtes-vous certain de vouloir vous déconnecter ?</translation>
|
<translation>Êtes-vous certain de vouloir vous déconnecter ?</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1230,7 +1231,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<location filename="../../src/timeline/InputBar.cpp" line="+581"/>
|
<location filename="../../src/timeline/InputBar.cpp" line="+581"/>
|
||||||
<location line="+34"/>
|
<location line="+34"/>
|
||||||
<source>Failed to upload media. Please try again.</source>
|
<source>Failed to upload media. Please try again.</source>
|
||||||
<translation type="unfinished">Échec de l'envoi du média. Veuillez réessayer.</translation>
|
<translation>Échec de l'envoi du média. Veuillez réessayer.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1293,7 +1294,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+13"/>
|
<location line="+13"/>
|
||||||
<source>%1 created and configured room: %2</source>
|
<source>%1 created and configured room: %2</source>
|
||||||
<translation>%1 a créé et configuré le salon : %2</translation>
|
<translation>%1 a créé et configuré le salon : %2</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
|
@ -1399,12 +1400,12 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+436"/>
|
<location line="+436"/>
|
||||||
<source>Reason for removal</source>
|
<source>Reason for removal</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Raison de la suppression</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>Enter reason for removal or hit enter for no reason:</source>
|
<source>Enter reason for removal or hit enter for no reason:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Entrez la raison de la suppression, ou appuyez sur entrée pour l'omettre :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+10"/>
|
<location line="+10"/>
|
||||||
|
@ -1509,12 +1510,12 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+19"/>
|
<location line="+19"/>
|
||||||
<source>To allow other users to see, which of your devices actually belong to you, you can verify them. This also allows key backup to work automatically. Verify an unverified device now? (Please make sure you have one of those devices available.)</source>
|
<source>To allow other users to see, which of your devices actually belong to you, you can verify them. This also allows key backup to work automatically. Verify an unverified device now? (Please make sure you have one of those devices available.)</source>
|
||||||
<translation>Pour permettre à d'autres utilisateurs de confirmer qu'un appareil est vraiment le vôtre, vous pouvez le vérifier. Cela permet également aux sauvegardes de clés de déchiffrement de fonctionner automatiquement sur ces appareils, pour ne pas perdre vos messages chiffrés. Vérifier un appareil maintenant ? (Vérifiez que celui-ci est à proximité).</translation>
|
<translation>Pour permettre à d'autres utilisateurs de confirmer qu'un appareil est vraiment le vôtre, vous pouvez le vérifier. Cela permet également aux sauvegardes de clés de déchiffrement de fonctionner automatiquement sur ces appareils, pour ne pas perdre vos messages chiffrés. Vérifier un appareil maintenant ? (Vérifiez que celui-ci est à proximité).</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>To allow other users to see, which of your devices actually belong to you, you can verify them. This also allows key backup to work automatically. Verify %1 now?</source>
|
<source>To allow other users to see, which of your devices actually belong to you, you can verify them. This also allows key backup to work automatically. Verify %1 now?</source>
|
||||||
<translation>Pour permettre aux autres utilisateurs de vérifier quels appareils de votre compte sont réellement les vôtres, vous pouvez les vérifier. Cela permet également à la sauvegarde des clés de fonctionner automatiquement. Vérifier %1 maintenant ?</translation>
|
<translation>Pour permettre aux autres utilisateurs de vérifier quels appareils de votre compte sont réellement les vôtres, vous pouvez les vérifier. Cela permet également à la sauvegarde des clés de fonctionner automatiquement. Vérifier %1 maintenant ?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
|
@ -1602,7 +1603,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../qml/voip/PlaceCall.qml" line="+41"/>
|
<location filename="../qml/voip/PlaceCall.qml" line="+41"/>
|
||||||
<source>Place a call to %1?</source>
|
<source>Place a call to %1?</source>
|
||||||
<translation>Appeler %1 ?</translation>
|
<translation>Appeler %1 ?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
|
@ -1635,7 +1636,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../qml/delegates/Placeholder.qml" line="+12"/>
|
<location filename="../qml/delegates/Placeholder.qml" line="+12"/>
|
||||||
<source>unimplemented event: </source>
|
<source>unimplemented event: </source>
|
||||||
<translation>Évènement non implémenté : </translation>
|
<translation>Évènement non implémenté : </translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1801,7 +1802,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
<source>Cancel Edit</source>
|
<source>Cancel Edit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Annuler les modifications</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1850,7 +1851,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+5"/>
|
<location line="+5"/>
|
||||||
<source>Tag room as:</source>
|
<source>Tag room as:</source>
|
||||||
<translation>Étiqueter le salon comme :</translation>
|
<translation>Étiqueter le salon comme :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+14"/>
|
<location line="+14"/>
|
||||||
|
@ -2077,7 +2078,8 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>Encryption is currently experimental and things might break unexpectedly. <br>
|
<source>Encryption is currently experimental and things might break unexpectedly. <br>
|
||||||
Please take note that it can't be disabled afterwards.</source>
|
Please take note that it can't be disabled afterwards.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Le chiffrement est expérimental pour le moment, à vos risques et périls. <br>
|
||||||
|
Veuillez noter qu'il ne pourra plus être désactivé par la suite.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
|
@ -2122,7 +2124,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
<source>Copied to clipboard</source>
|
<source>Copied to clipboard</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Copié dans le presse-papiers</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+19"/>
|
<location line="+19"/>
|
||||||
|
@ -2132,17 +2134,17 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+19"/>
|
<location line="+19"/>
|
||||||
<source>show less</source>
|
<source>show less</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>montrer moins</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>show more</source>
|
<source>show more</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>montrer plus</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/ui/RoomSettings.cpp" line="+256"/>
|
<location filename="../../src/ui/RoomSettings.cpp" line="+256"/>
|
||||||
<source>Failed to enable encryption: %1</source>
|
<source>Failed to enable encryption: %1</source>
|
||||||
<translation>Échec de l'activation du chiffrement : %1</translation>
|
<translation>Échec de l'activation du chiffrement : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+249"/>
|
<location line="+249"/>
|
||||||
|
@ -2162,13 +2164,13 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+5"/>
|
<location line="+5"/>
|
||||||
<source>Error while reading file: %1</source>
|
<source>Error while reading file: %1</source>
|
||||||
<translation>Erreur lors de la lecture du fichier : %1</translation>
|
<translation>Erreur lors de la lecture du fichier : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+32"/>
|
<location line="+32"/>
|
||||||
<location line="+19"/>
|
<location line="+19"/>
|
||||||
<source>Failed to upload image: %s</source>
|
<source>Failed to upload image: %s</source>
|
||||||
<translation>Échec de l'envoi de l'image : %s</translation>
|
<translation>Échec de l'envoi de l'image : %s</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2194,22 +2196,22 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../qml/Root.qml" line="+319"/>
|
<location filename="../qml/Root.qml" line="+319"/>
|
||||||
<source>Please enter your login password to continue:</source>
|
<source>Please enter your login password to continue:</source>
|
||||||
<translation>Veuillez saisir votre mot de passe pour continuer :</translation>
|
<translation>Veuillez saisir votre mot de passe pour continuer :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+10"/>
|
<location line="+10"/>
|
||||||
<source>Please enter a valid email address to continue:</source>
|
<source>Please enter a valid email address to continue:</source>
|
||||||
<translation>Veuillez saisir un courriel valide pour continuer :</translation>
|
<translation>Veuillez saisir un courriel valide pour continuer :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+10"/>
|
<location line="+10"/>
|
||||||
<source>Please enter a valid phone number to continue:</source>
|
<source>Please enter a valid phone number to continue:</source>
|
||||||
<translation>Veuillez saisir un numéro de téléphone valide pour continuer :</translation>
|
<translation>Veuillez saisir un numéro de téléphone valide pour continuer :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+10"/>
|
<location line="+10"/>
|
||||||
<source>Please enter the token, which has been sent to you:</source>
|
<source>Please enter the token, which has been sent to you:</source>
|
||||||
<translation>Veuillez entrer le jeton qui vous a été envoyé :</translation>
|
<translation>Veuillez entrer le jeton qui vous a été envoyé :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
|
@ -2222,17 +2224,17 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../qml/voip/ScreenShare.qml" line="+29"/>
|
<location filename="../qml/voip/ScreenShare.qml" line="+29"/>
|
||||||
<source>Share desktop with %1?</source>
|
<source>Share desktop with %1?</source>
|
||||||
<translation>Partager le bureau avec %1  ?</translation>
|
<translation>Partager le bureau avec %1 ?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+11"/>
|
<location line="+11"/>
|
||||||
<source>Window:</source>
|
<source>Window:</source>
|
||||||
<translation>Fenêtre :</translation>
|
<translation>Fenêtre :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+20"/>
|
<location line="+20"/>
|
||||||
<source>Frame rate:</source>
|
<source>Frame rate:</source>
|
||||||
<translation>Fréquence d'images :</translation>
|
<translation>Fréquence d'images :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+19"/>
|
<location line="+19"/>
|
||||||
|
@ -2281,7 +2283,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>Nheko could not connect to the secure storage to save encryption secrets to. This can have multiple reasons. Check if your D-Bus service is running and you have configured a service like KWallet, Gnome Keyring, KeePassXC or the equivalent for your platform. If you are having trouble, feel free to open an issue here: https://github.com/Nheko-Reborn/nheko/issues</source>
|
<source>Nheko could not connect to the secure storage to save encryption secrets to. This can have multiple reasons. Check if your D-Bus service is running and you have configured a service like KWallet, Gnome Keyring, KeePassXC or the equivalent for your platform. If you are having trouble, feel free to open an issue here: https://github.com/Nheko-Reborn/nheko/issues</source>
|
||||||
<translation>Nheko n'a pas pu se connecter au stockage sécurisé afin d'y sauvegarder les clés de chiffrement. Cela peut avoir différentes causes. Vérifiez si votre service D-Bus est lancé, et si vous avez configuré un service tel que KWallet ; Gnome Keyring ; KeePassXC ou l'équivalent pour votre système. Si vous n'arrivez pas à résoudre le problème, n'hésitez pas à nous en faire part ici : https ://github.com/Nheko-Reborn/nheko/issues</translation>
|
<translation>Nheko n'a pas pu se connecter au stockage sécurisé afin d'y sauvegarder les clés de chiffrement. Cela peut avoir différentes causes. Vérifiez si votre service D-Bus est lancé, et si vous avez configuré un service tel que KWallet ; Gnome Keyring ; KeePassXC ou l'équivalent pour votre système. Si vous n'arrivez pas à résoudre le problème, n'hésitez pas à nous en faire part ici : https ://github.com/Nheko-Reborn/nheko/issues</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2289,7 +2291,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../qml/SelfVerificationCheck.qml" line="+40"/>
|
<location filename="../qml/SelfVerificationCheck.qml" line="+40"/>
|
||||||
<source>This is your recovery key. You will need it to restore access to your encrypted messages and verification keys. Keep this safe. Don't share it with anyone and don't lose it! Do not pass go! Do not collect $200!</source>
|
<source>This is your recovery key. You will need it to restore access to your encrypted messages and verification keys. Keep this safe. Don't share it with anyone and don't lose it! Do not pass go! Do not collect $200!</source>
|
||||||
<translation>Ceci est votre clé de récupération. Vous en aurez besoin afin de restaurer l'accès à vos messages chiffrés et à vos clés de vérification. Gardez cette clé en sûreté. Ne la partagez pas avec qui que ce soit et ne la perdez pas ! Ne passez pas par la case départ et ne recevez pas 20 000 francs !</translation>
|
<translation>Ceci est votre clé de récupération. Vous en aurez besoin afin de restaurer l'accès à vos messages chiffrés et à vos clés de vérification. Gardez cette clé en sûreté. Ne la partagez pas avec qui que ce soit et ne la perdez pas ! Ne passez pas par la case départ et ne recevez pas 20 000 francs !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+33"/>
|
<location line="+33"/>
|
||||||
|
@ -2299,7 +2301,7 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+9"/>
|
<location line="+9"/>
|
||||||
<source>Failed to setup encryption: %1</source>
|
<source>Failed to setup encryption: %1</source>
|
||||||
<translation>Échec de la configuration du chiffrement : %1</translation>
|
<translation>Échec de la configuration du chiffrement : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+22"/>
|
<location line="+22"/>
|
||||||
|
@ -2310,8 +2312,8 @@ Exemple : https ://monserveur.example.com:8787</translation>
|
||||||
<location line="+10"/>
|
<location line="+10"/>
|
||||||
<source>Hello and welcome to Matrix!
|
<source>Hello and welcome to Matrix!
|
||||||
It seems like you are new. Before you can securely encrypt your messages, we need to setup a few small things. You can either press accept immediately or adjust a few basic options. We also try to explain a few of the basics. You can skip those parts, but they might prove to be helpful!</source>
|
It seems like you are new. Before you can securely encrypt your messages, we need to setup a few small things. You can either press accept immediately or adjust a few basic options. We also try to explain a few of the basics. You can skip those parts, but they might prove to be helpful!</source>
|
||||||
<translation>Bonjour et bienvenue sur le réseau Matrix !
|
<translation>Bonjour et bienvenue sur le réseau Matrix !
|
||||||
Il semblerait que ce soit votre première fois ici. Avant de pouvoir chiffrer vos messages de manière sécurisée, nous devons configurer quelques détails. Vous pouvez soit accepter immédiatement, soit ajuster quelques options basiques. Nous essayons également d'expliquer le fonctionnement de certains mécanismes. Vous pouvez sauter ces étapes, mais celles-ci pourraient se montrer utiles par la suite !</translation>
|
Il semblerait que ce soit votre première fois ici. Avant de pouvoir chiffrer vos messages de manière sécurisée, nous devons configurer quelques détails. Vous pouvez soit accepter immédiatement, soit ajuster quelques options basiques. Nous essayons également d'expliquer le fonctionnement de certains mécanismes. Vous pouvez sauter ces étapes, mais celles-ci pourraient se montrer utiles par la suite !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+124"/>
|
<location line="+124"/>
|
||||||
|
@ -2341,17 +2343,17 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/encryption/SelfVerificationStatus.cpp" line="+43"/>
|
<location filename="../../src/encryption/SelfVerificationStatus.cpp" line="+43"/>
|
||||||
<source>Failed to create keys for cross-signing!</source>
|
<source>Failed to create keys for cross-signing!</source>
|
||||||
<translation>Échec de la création des clés pour l'auto-vérification (cross-signing) !</translation>
|
<translation>Échec de la création des clés pour l'auto-vérification (cross-signing) !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
<source>Failed to create keys for online key backup!</source>
|
<source>Failed to create keys for online key backup!</source>
|
||||||
<translation>Échec de la création de clés pour la sauvegarde en ligne !</translation>
|
<translation>Échec de la création de clés pour la sauvegarde en ligne !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+29"/>
|
<location line="+29"/>
|
||||||
<source>Failed to create keys for secure server side secret storage!</source>
|
<source>Failed to create keys for secure server side secret storage!</source>
|
||||||
<translation>Échec de la création des clés pour le stockage sécurisé côté serveur !</translation>
|
<translation>Échec de la création des clés pour le stockage sécurisé côté serveur !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+44"/>
|
<location line="+44"/>
|
||||||
|
@ -2361,7 +2363,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si
|
||||||
<message>
|
<message>
|
||||||
<location line="+6"/>
|
<location line="+6"/>
|
||||||
<source>Encryption setup failed: %1</source>
|
<source>Encryption setup failed: %1</source>
|
||||||
<translation>Échec de la configuration du chiffrement : %1</translation>
|
<translation>Échec de la configuration du chiffrement : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+140"/>
|
<location line="+140"/>
|
||||||
|
@ -2436,7 +2438,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si
|
||||||
<message>
|
<message>
|
||||||
<location line="+15"/>
|
<location line="+15"/>
|
||||||
<source>Verification successful! Both sides verified their devices!</source>
|
<source>Verification successful! Both sides verified their devices!</source>
|
||||||
<translation>Vérification réussie ! Les deux côtés ont vérifié leur appareil !</translation>
|
<translation>Vérification réussie ! Les deux côtés ont vérifié leur appareil !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+14"/>
|
<location line="+14"/>
|
||||||
|
@ -2450,13 +2452,13 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si
|
||||||
<location filename="../../src/timeline/TimelineModel.cpp" line="+1256"/>
|
<location filename="../../src/timeline/TimelineModel.cpp" line="+1256"/>
|
||||||
<location line="+17"/>
|
<location line="+17"/>
|
||||||
<source>Message redaction failed: %1</source>
|
<source>Message redaction failed: %1</source>
|
||||||
<translation>Échec de la suppression du message : %1</translation>
|
<translation>Échec de la suppression du message : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+74"/>
|
<location line="+74"/>
|
||||||
<location line="+5"/>
|
<location line="+5"/>
|
||||||
<source>Failed to encrypt event, sending aborted!</source>
|
<source>Failed to encrypt event, sending aborted!</source>
|
||||||
<translation>Échec du chiffrement de l'évènement, envoi abandonné !</translation>
|
<translation>Échec du chiffrement de l'évènement, envoi abandonné !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+174"/>
|
<location line="+174"/>
|
||||||
|
@ -2648,7 +2650,7 @@ Raison : %4</translation>
|
||||||
<location line="+39"/>
|
<location line="+39"/>
|
||||||
<source>%1 left after having already left!</source>
|
<source>%1 left after having already left!</source>
|
||||||
<comment>This is a leave event after the user already left and shouldn't happen apart from state resets</comment>
|
<comment>This is a leave event after the user already left and shouldn't happen apart from state resets</comment>
|
||||||
<translation>%1 a quitté le salon après l'avoir déjà quitté !</translation>
|
<translation>%1 a quitté le salon après l'avoir déjà quitté !</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+7"/>
|
<location line="+7"/>
|
||||||
|
@ -2818,9 +2820,9 @@ Raison : %4</translation>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../qml/UploadBox.qml" line="+79"/>
|
<location filename="../qml/UploadBox.qml" line="+79"/>
|
||||||
<source>Upload %n file(s)</source>
|
<source>Upload %n file(s)</source>
|
||||||
<translation type="unfinished">
|
<translation>
|
||||||
<numerusform></numerusform>
|
<numerusform>Mettre en ligne un fichier</numerusform>
|
||||||
<numerusform></numerusform>
|
<numerusform>Mettre en ligne %n fichiers</numerusform>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
@ -2945,7 +2947,7 @@ Raison : %4</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+5"/>
|
<location line="+5"/>
|
||||||
<source>Error while reading file: %1</source>
|
<source>Error while reading file: %1</source>
|
||||||
<translation>Erreur lors de la lecture du fichier  : %1</translation>
|
<translation>Erreur lors de la lecture du fichier : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -3062,12 +3064,12 @@ Raison : %4</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Open images with external program</source>
|
<source>Open images with external program</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ouvrir les images avec un programme externe</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Open videos with external program</source>
|
<source>Open videos with external program</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ouvrir les vidéos avec un programme externe</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
|
@ -3361,18 +3363,19 @@ Le statut est affiché près de la date des messages.</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Notify about received messages when the client is not currently focused.</source>
|
<source>Notify about received messages when the client is not currently focused.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Notifier des messages reçus quand le client n'est pas la fenêtre active.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+6"/>
|
<location line="+6"/>
|
||||||
<source>Change the appearance of user avatars in chats.
|
<source>Change the appearance of user avatars in chats.
|
||||||
OFF - square, ON - circle.</source>
|
OFF - square, ON - circle.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Changer l'apparence des images de profil dans les discussions.
|
||||||
|
OFF - carré, ON - circulaire.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+60"/>
|
<location line="+60"/>
|
||||||
<source>The key to verify your own devices. If it is cached, verifying one of your devices will mark it verified for all your other devices and for users that have verified you.</source>
|
<source>The key to verify your own devices. If it is cached, verifying one of your devices will mark it verified for all your other devices and for users that have verified you.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>La clef pour vérifier vos propres appareils. Si elle est en cache, vérifier un de vos appareils le marquera comme vérifié pour tous vos autres appareils et pour les utilisateurs qui vous ont vérifié.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="-64"/>
|
<location line="-64"/>
|
||||||
|
@ -3390,13 +3393,15 @@ Typiquement, l'icône de l'application est mise en évidence dans la b
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Opens images with an external program when tapping the image.
|
<source>Opens images with an external program when tapping the image.
|
||||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ouvre les images avec un programme externe au clic de l'image.
|
||||||
|
Notez que si cette option est activée, les fichiers sont laissés déchiffrés sur le disque et doivent être supprimés manuellement.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+4"/>
|
<location line="+4"/>
|
||||||
<source>Opens videos with an external program when tapping the video.
|
<source>Opens videos with an external program when tapping the video.
|
||||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ouvre les vidéos avec un programme externe au clic de la vidéo.
|
||||||
|
Notez que si cette option est activée, les fichiers sont laissés déchiffrés sur le disque et doivent être supprimés manuellement.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+4"/>
|
<location line="+4"/>
|
||||||
|
@ -3490,7 +3495,7 @@ be blurred.</source>
|
||||||
<message>
|
<message>
|
||||||
<location line="-25"/>
|
<location line="-25"/>
|
||||||
<source>Enter the passphrase to decrypt the file:</source>
|
<source>Enter the passphrase to decrypt the file:</source>
|
||||||
<translation>Entrez la phrase de passe pour déchiffrer le fichier :</translation>
|
<translation>Entrez la phrase de passe pour déchiffrer le fichier :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+8"/>
|
<location line="+8"/>
|
||||||
|
@ -3501,7 +3506,7 @@ be blurred.</source>
|
||||||
<message>
|
<message>
|
||||||
<location line="-8"/>
|
<location line="-8"/>
|
||||||
<source>Enter passphrase to encrypt your session keys:</source>
|
<source>Enter passphrase to encrypt your session keys:</source>
|
||||||
<translation>Entrez une phrase de passe pour chiffrer vos clés de session :</translation>
|
<translation>Entrez une phrase de passe pour chiffrer vos clés de session :</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+15"/>
|
<location line="+15"/>
|
||||||
|
@ -3788,12 +3793,12 @@ be blurred.</source>
|
||||||
<message>
|
<message>
|
||||||
<location line="+5"/>
|
<location line="+5"/>
|
||||||
<source>You: %1</source>
|
<source>You: %1</source>
|
||||||
<translation>Vous : %1</translation>
|
<translation>Vous : %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>%1: %2</source>
|
<source>%1: %2</source>
|
||||||
<translation>%1 : %2</translation>
|
<translation>%1 : %2</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+6"/>
|
<location line="+6"/>
|
||||||
|
|
|
@ -1229,7 +1229,7 @@ Misalnya: https://server.my:8787</translation>
|
||||||
<location filename="../../src/timeline/InputBar.cpp" line="+581"/>
|
<location filename="../../src/timeline/InputBar.cpp" line="+581"/>
|
||||||
<location line="+34"/>
|
<location line="+34"/>
|
||||||
<source>Failed to upload media. Please try again.</source>
|
<source>Failed to upload media. Please try again.</source>
|
||||||
<translation type="unfinished">Gagal untuk mengunggah media. Silakan coba lagi.</translation>
|
<translation>Gagal untuk mengunggah media. Silakan coba lagi.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2815,8 +2815,8 @@ Alasan: %4</translation>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../qml/UploadBox.qml" line="+79"/>
|
<location filename="../qml/UploadBox.qml" line="+79"/>
|
||||||
<source>Upload %n file(s)</source>
|
<source>Upload %n file(s)</source>
|
||||||
<translation type="unfinished">
|
<translation>
|
||||||
<numerusform></numerusform>
|
<numerusform>Unggah %n file</numerusform>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
@ -3387,13 +3387,15 @@ Ini biasanya menyebabkan ikon aplikasi di bilah tugas untuk beranimasi.</transla
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Opens images with an external program when tapping the image.
|
<source>Opens images with an external program when tapping the image.
|
||||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Membuka gambar dengan sebuah program eksternal ketika mengetuk pada gambar.
|
||||||
|
Dicatat bahwa ketika opsi ini NYALA, file yang terbuka ditinggal tidak terenkripsi pada disk dan harus dihapus secara manual.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+4"/>
|
<location line="+4"/>
|
||||||
<source>Opens videos with an external program when tapping the video.
|
<source>Opens videos with an external program when tapping the video.
|
||||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Membuka video dengan sebuah program eksternal ketika mengetuk pada video.
|
||||||
|
Dicatat bahwa ketika opsi ini NYALA, file yang terbuka ditinggal tidak terenkripsi pada disk dan harus dihapus secara manual.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+4"/>
|
<location line="+4"/>
|
||||||
|
|
|
@ -436,12 +436,12 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../qml/dialogs/DirectChatSetup.qml" line="+28"/>
|
<location filename="../qml/dialogs/DirectChatSetup.qml" line="+28"/>
|
||||||
<source>Room Settings</source>
|
<source>Room Settings</source>
|
||||||
<translation type="unfinished">Kamerinstellingen</translation>
|
<translation>Kamerinstellingen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location line="+94"/>
|
<location line="+94"/>
|
||||||
<source>%n member(s)</source>
|
<source>%n member(s)</source>
|
||||||
<translation type="unfinished">
|
<translation>
|
||||||
<numerusform>%n deelnemer</numerusform>
|
<numerusform>%n deelnemer</numerusform>
|
||||||
<numerusform>%n deelnemers</numerusform>
|
<numerusform>%n deelnemers</numerusform>
|
||||||
</translation>
|
</translation>
|
||||||
|
@ -449,134 +449,134 @@
|
||||||
<message>
|
<message>
|
||||||
<location line="+65"/>
|
<location line="+65"/>
|
||||||
<source>SETTINGS</source>
|
<source>SETTINGS</source>
|
||||||
<translation type="unfinished">INSTELLINGEN</translation>
|
<translation>INSTELLINGEN</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+10"/>
|
<location line="+10"/>
|
||||||
<source>Notifications</source>
|
<source>Notifications</source>
|
||||||
<translation type="unfinished">Meldingen</translation>
|
<translation>Meldingen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+6"/>
|
<location line="+6"/>
|
||||||
<source>Muted</source>
|
<source>Muted</source>
|
||||||
<translation type="unfinished">Gedempt</translation>
|
<translation>Gedempt</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>Mentions only</source>
|
<source>Mentions only</source>
|
||||||
<translation type="unfinished">Alleen vermeldingen</translation>
|
<translation>Alleen vermeldingen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>All messages</source>
|
<source>All messages</source>
|
||||||
<translation type="unfinished">Alle berichten</translation>
|
<translation>Alle berichten</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+10"/>
|
<location line="+10"/>
|
||||||
<source>Room access</source>
|
<source>Room access</source>
|
||||||
<translation type="unfinished">Kamertoegang</translation>
|
<translation>Kamertoegang</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+8"/>
|
<location line="+8"/>
|
||||||
<source>Anyone and guests</source>
|
<source>Anyone and guests</source>
|
||||||
<translation type="unfinished">Iedereen (inclusief gasten)</translation>
|
<translation>Iedereen (inclusief gasten)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>Anyone</source>
|
<source>Anyone</source>
|
||||||
<translation type="unfinished">Iedereen</translation>
|
<translation>Iedereen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>Invited users</source>
|
<source>Invited users</source>
|
||||||
<translation type="unfinished">Uitgenodigde gebruikers</translation>
|
<translation>Uitgenodigde gebruikers</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>By knocking</source>
|
<source>By knocking</source>
|
||||||
<translation type="unfinished">Door aan te kloppen</translation>
|
<translation>Door aan te kloppen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+3"/>
|
<location line="+3"/>
|
||||||
<source>Restricted by membership in other rooms</source>
|
<source>Restricted by membership in other rooms</source>
|
||||||
<translation type="unfinished">Beperkt door deelname aan andere kamers</translation>
|
<translation>Beperkt door deelname aan andere kamers</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+13"/>
|
<location line="+13"/>
|
||||||
<source>Encryption</source>
|
<source>Encryption</source>
|
||||||
<translation type="unfinished">Versleuteling</translation>
|
<translation>Versleuteling</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+21"/>
|
<location line="+21"/>
|
||||||
<source>End-to-End Encryption</source>
|
<source>End-to-End Encryption</source>
|
||||||
<translation type="unfinished">Eind-tot-eind versleuteling</translation>
|
<translation>Eind-tot-eind versleuteling</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>Encryption is currently experimental and things might break unexpectedly. <br>
|
<source>Encryption is currently experimental and things might break unexpectedly. <br>
|
||||||
Please take note that it can't be disabled afterwards.</source>
|
Please take note that it can't be disabled afterwards.</source>
|
||||||
<translation type="unfinished">Versleuteling is momenteel experimenteel en dingen gaan misschien stuk. <br>
|
<translation>Versleuteling is momenteel experimenteel en dingen gaan misschien stuk. <br>
|
||||||
Wees ervan bewust dat het achteraf niet meer uitgeschakeld kan worden.</translation>
|
Wees ervan bewust dat het achteraf niet meer uitgeschakeld kan worden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
<source>Sticker & Emote Settings</source>
|
<source>Sticker & Emote Settings</source>
|
||||||
<translation type="unfinished">Sticker & Emoji instellingen</translation>
|
<translation>Sticker & Emoji instellingen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+5"/>
|
<location line="+5"/>
|
||||||
<source>Change</source>
|
<source>Change</source>
|
||||||
<translation type="unfinished">Bewerken</translation>
|
<translation>Bewerken</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>Change what packs are enabled, remove packs or create new ones</source>
|
<source>Change what packs are enabled, remove packs or create new ones</source>
|
||||||
<translation type="unfinished">Verander welke afbeeldingspakketten zijn ingeschakeld, verwijder ze of voeg nieuwe toe</translation>
|
<translation>Verander welke afbeeldingspakketten zijn ingeschakeld, verwijder ze of voeg nieuwe toe</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+6"/>
|
<location line="+6"/>
|
||||||
<source>Hidden events</source>
|
<source>Hidden events</source>
|
||||||
<translation type="unfinished">Verborgen gebeurtenissen</translation>
|
<translation>Verborgen gebeurtenissen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+11"/>
|
<location line="+11"/>
|
||||||
<source>Configure</source>
|
<source>Configure</source>
|
||||||
<translation type="unfinished">Instellen</translation>
|
<translation>Instellen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+1"/>
|
<location line="+1"/>
|
||||||
<source>Select events to hide in this room</source>
|
<source>Select events to hide in this room</source>
|
||||||
<translation type="unfinished">Selecteer gebeurtenissen die verborgen dienen te worden in deze kamer</translation>
|
<translation>Selecteer gebeurtenissen die verborgen dienen te worden in deze kamer</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
<source>INFO</source>
|
<source>INFO</source>
|
||||||
<translation type="unfinished">INFO</translation>
|
<translation>INFO</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+10"/>
|
<location line="+10"/>
|
||||||
<source>Internal ID</source>
|
<source>Internal ID</source>
|
||||||
<translation type="unfinished">Interne ID</translation>
|
<translation>Interne ID</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
<source>Copied to clipboard</source>
|
<source>Copied to clipboard</source>
|
||||||
<translation type="unfinished">Gekopieerd naar klembord</translation>
|
<translation>Gekopieerd naar klembord</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+19"/>
|
<location line="+19"/>
|
||||||
<source>Room Version</source>
|
<source>Room Version</source>
|
||||||
<translation type="unfinished">Kamerversie</translation>
|
<translation>Kamerversie</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+19"/>
|
<location line="+19"/>
|
||||||
<source>show less</source>
|
<source>show less</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>minder tonen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>show more</source>
|
<source>show more</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>meer tonen</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1231,7 +1231,7 @@ Voorbeeld: https://mijnserver.nl:8787</translation>
|
||||||
<location filename="../../src/timeline/InputBar.cpp" line="+581"/>
|
<location filename="../../src/timeline/InputBar.cpp" line="+581"/>
|
||||||
<location line="+34"/>
|
<location line="+34"/>
|
||||||
<source>Failed to upload media. Please try again.</source>
|
<source>Failed to upload media. Please try again.</source>
|
||||||
<translation type="unfinished">Het is niet is gelukt om de media te versturen. Probeer het a.u.b. opnieuw.</translation>
|
<translation>Het is niet is gelukt om de media te versturen. Probeer het a.u.b. opnieuw.</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1802,7 +1802,7 @@ Voorbeeld: https://mijnserver.nl:8787</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+16"/>
|
<location line="+16"/>
|
||||||
<source>Cancel Edit</source>
|
<source>Cancel Edit</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Bewerken annuleren</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -2134,12 +2134,12 @@ Wees ervan bewust dat het achteraf niet meer uitgeschakeld kan worden.</translat
|
||||||
<message>
|
<message>
|
||||||
<location line="+19"/>
|
<location line="+19"/>
|
||||||
<source>show less</source>
|
<source>show less</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>minder tonen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+0"/>
|
<location line="+0"/>
|
||||||
<source>show more</source>
|
<source>show more</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>meer tonen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/ui/RoomSettings.cpp" line="+256"/>
|
<location filename="../../src/ui/RoomSettings.cpp" line="+256"/>
|
||||||
|
@ -2820,9 +2820,9 @@ Reden: %4</translation>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../qml/UploadBox.qml" line="+79"/>
|
<location filename="../qml/UploadBox.qml" line="+79"/>
|
||||||
<source>Upload %n file(s)</source>
|
<source>Upload %n file(s)</source>
|
||||||
<translation type="unfinished">
|
<translation>
|
||||||
<numerusform></numerusform>
|
<numerusform>Bestand versturen</numerusform>
|
||||||
<numerusform></numerusform>
|
<numerusform>%n bestanden versturen</numerusform>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
@ -3064,12 +3064,12 @@ Reden: %4</translation>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Open images with external program</source>
|
<source>Open images with external program</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Open afbeeldingen met externe applicatie</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Open videos with external program</source>
|
<source>Open videos with external program</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Open videos met externe applicatie</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
|
@ -3393,13 +3393,15 @@ Meestal zorgt dit dat het icoon in de taakbalk op een manier animeert of iets de
|
||||||
<location line="+2"/>
|
<location line="+2"/>
|
||||||
<source>Opens images with an external program when tapping the image.
|
<source>Opens images with an external program when tapping the image.
|
||||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Opent afbeeldingen met een externe applicatie wanneer op een afbeelding geklikt wordt.
|
||||||
|
Let up dat als deze instelling AAN staat, geopende afbeeldingen zonder versleuteling opgeslagen worden en met de hand moeten worden opgeruimd.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+4"/>
|
<location line="+4"/>
|
||||||
<source>Opens videos with an external program when tapping the video.
|
<source>Opens videos with an external program when tapping the video.
|
||||||
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
Note that when this option is ON, opened files are left unencrypted on disk and must be manually deleted.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Opent videos met een externe applicatie wanneer op een afbeelding geklikt wordt.
|
||||||
|
Let up dat als deze instelling AAN staat, geopende videos zonder versleuteling opgeslagen worden en met de hand moeten worden opgeruimd.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location line="+4"/>
|
<location line="+4"/>
|
||||||
|
|
|
@ -56,7 +56,8 @@
|
||||||
<url type="homepage">https://github.com/Nheko-Reborn/nheko</url>
|
<url type="homepage">https://github.com/Nheko-Reborn/nheko</url>
|
||||||
<update_contact>https://github.com/Nheko-Reborn</update_contact>
|
<update_contact>https://github.com/Nheko-Reborn</update_contact>
|
||||||
<releases>
|
<releases>
|
||||||
<release date="2021-03-09" version="0.9.2"/>
|
<release date="2022-03-25" version="0.9.3"/>
|
||||||
|
<release date="2022-03-09" version="0.9.2"/>
|
||||||
<release date="2021-12-21" version="0.9.1"/>
|
<release date="2021-12-21" version="0.9.1"/>
|
||||||
<release date="2021-11-19" version="0.9.0"/>
|
<release date="2021-11-19" version="0.9.0"/>
|
||||||
<release date="2021-04-23" version="0.8.2"/>
|
<release date="2021-04-23" version="0.8.2"/>
|
||||||
|
|
|
@ -68,7 +68,7 @@ Item {
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
visible: Settings.buttonsInTimeline && !!attached && (attached.hovered || hovered)
|
visible: Settings.buttonsInTimeline && !!attached && (attached.hovered || hovered)
|
||||||
x: attached ? attachedPos.x : 0
|
x: attached ? attachedPos.x : 0
|
||||||
y: attached ? attachedPos.y + Nheko.paddingMedium : 0
|
y: attached ? attachedPos.y + Nheko.paddingSmall : 0
|
||||||
z: 10
|
z: 10
|
||||||
|
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
|
@ -362,7 +362,7 @@ Item {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delegate: ItemDelegate {
|
delegate: Item {
|
||||||
id: wrapper
|
id: wrapper
|
||||||
|
|
||||||
required property double proportionalHeight
|
required property double proportionalHeight
|
||||||
|
@ -407,55 +407,6 @@ Item {
|
||||||
width: chat.delegateMaxWidth
|
width: chat.delegateMaxWidth
|
||||||
height: section.active ? section.height + timelinerow.height : timelinerow.height
|
height: section.active ? section.height + timelinerow.height : timelinerow.height
|
||||||
|
|
||||||
hoverEnabled: true
|
|
||||||
|
|
||||||
background: Rectangle {
|
|
||||||
id: scrollHighlight
|
|
||||||
|
|
||||||
opacity: 0
|
|
||||||
visible: true
|
|
||||||
z: 1
|
|
||||||
enabled: false
|
|
||||||
color: Nheko.colors.highlight
|
|
||||||
|
|
||||||
states: State {
|
|
||||||
name: "revealed"
|
|
||||||
when: wrapper.scrolledToThis
|
|
||||||
}
|
|
||||||
|
|
||||||
transitions: Transition {
|
|
||||||
from: ""
|
|
||||||
to: "revealed"
|
|
||||||
|
|
||||||
SequentialAnimation {
|
|
||||||
PropertyAnimation {
|
|
||||||
target: scrollHighlight
|
|
||||||
properties: "opacity"
|
|
||||||
easing.type: Easing.InOutQuad
|
|
||||||
from: 0
|
|
||||||
to: 1
|
|
||||||
duration: 500
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyAnimation {
|
|
||||||
target: scrollHighlight
|
|
||||||
properties: "opacity"
|
|
||||||
easing.type: Easing.InOutQuad
|
|
||||||
from: 1
|
|
||||||
to: 0
|
|
||||||
duration: 500
|
|
||||||
}
|
|
||||||
|
|
||||||
ScriptAction {
|
|
||||||
script: chat.model.eventShown()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Loader {
|
Loader {
|
||||||
id: section
|
id: section
|
||||||
|
|
||||||
|
@ -480,8 +431,6 @@ Item {
|
||||||
TimelineRow {
|
TimelineRow {
|
||||||
id: timelinerow
|
id: timelinerow
|
||||||
|
|
||||||
hovered: messageActions.hovered ? (messageActions.model != undefined && messageActions.model == timelinerow) : wrapper.hovered
|
|
||||||
|
|
||||||
proportionalHeight: wrapper.proportionalHeight
|
proportionalHeight: wrapper.proportionalHeight
|
||||||
type: chat.model, wrapper.type
|
type: chat.model, wrapper.type
|
||||||
typeString: wrapper.typeString
|
typeString: wrapper.typeString
|
||||||
|
@ -523,7 +472,52 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
background: Rectangle {
|
||||||
|
id: scrollHighlight
|
||||||
|
|
||||||
|
opacity: 0
|
||||||
|
visible: true
|
||||||
|
z: 1
|
||||||
|
enabled: false
|
||||||
|
color: Nheko.colors.highlight
|
||||||
|
|
||||||
|
states: State {
|
||||||
|
name: "revealed"
|
||||||
|
when: wrapper.scrolledToThis
|
||||||
|
}
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
from: ""
|
||||||
|
to: "revealed"
|
||||||
|
|
||||||
|
SequentialAnimation {
|
||||||
|
PropertyAnimation {
|
||||||
|
target: scrollHighlight
|
||||||
|
properties: "opacity"
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
from: 0
|
||||||
|
to: 1
|
||||||
|
duration: 500
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyAnimation {
|
||||||
|
target: scrollHighlight
|
||||||
|
properties: "opacity"
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
from: 1
|
||||||
|
to: 0
|
||||||
|
duration: 500
|
||||||
|
}
|
||||||
|
|
||||||
|
ScriptAction {
|
||||||
|
script: chat.model.eventShown()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
|
@ -729,10 +723,12 @@ Item {
|
||||||
|
|
||||||
property string text
|
property string text
|
||||||
property string link
|
property string link
|
||||||
|
property string eventId
|
||||||
|
|
||||||
function show(text_, link_) {
|
function show(text_, link_, eventId_) {
|
||||||
text = text_;
|
text = text_;
|
||||||
link = link_;
|
link = link_;
|
||||||
|
eventId = eventId_;
|
||||||
open();
|
open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -754,7 +750,7 @@ Item {
|
||||||
visible: true
|
visible: true
|
||||||
enabled: visible
|
enabled: visible
|
||||||
text: qsTr("&Go to quoted message")
|
text: qsTr("&Go to quoted message")
|
||||||
onTriggered: chat.model.showEvent(eventId)
|
onTriggered: chat.model.showEvent(replyContextMenu.eventId)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,13 +5,13 @@
|
||||||
|
|
||||||
import "./delegates"
|
import "./delegates"
|
||||||
import "./emoji"
|
import "./emoji"
|
||||||
import QtQuick 2.12
|
import QtQuick 2.15
|
||||||
import QtQuick.Controls 2.3
|
import QtQuick.Controls 2.3
|
||||||
import QtQuick.Layouts 1.2
|
import QtQuick.Layouts 1.2
|
||||||
import QtQuick.Window 2.13
|
import QtQuick.Window 2.13
|
||||||
import im.nheko 1.0
|
import im.nheko 1.0
|
||||||
|
|
||||||
Item {
|
AbstractButton {
|
||||||
id: r
|
id: r
|
||||||
|
|
||||||
required property double proportionalHeight
|
required property double proportionalHeight
|
||||||
|
@ -46,7 +46,7 @@ Item {
|
||||||
required property int status
|
required property int status
|
||||||
required property int relatedEventCacheBuster
|
required property int relatedEventCacheBuster
|
||||||
|
|
||||||
property bool hovered: false
|
hoverEnabled: true
|
||||||
|
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: row.height+(reactionRow.height > 0 ? reactionRow.height-2 : 0 )
|
height: row.height+(reactionRow.height > 0 ? reactionRow.height-2 : 0 )
|
||||||
|
@ -55,21 +55,44 @@ Item {
|
||||||
color: (Settings.messageHoverHighlight && hovered) ? Nheko.colors.alternateBase : "transparent"
|
color: (Settings.messageHoverHighlight && hovered) ? Nheko.colors.alternateBase : "transparent"
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
// this looks better without margins
|
// this looks better without margins
|
||||||
|
TapHandler {
|
||||||
|
acceptedButtons: Qt.RightButton
|
||||||
|
onSingleTapped: messageContextMenu.show(eventId, type, isSender, isEncrypted, isEditable, contentItem.child.hoveredLink, contentItem.child.copyText)
|
||||||
|
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TapHandler {
|
|
||||||
acceptedButtons: Qt.RightButton
|
onPressAndHold: messageContextMenu.show(eventId, type, isSender, isEncrypted, isEditable, contentItem.child.hoveredLink, contentItem.child.copyText)
|
||||||
onSingleTapped: messageContextMenu.show(eventId, type, isSender, isEncrypted, isEditable, contentItem.child.hoveredLink, contentItem.child.copyText)
|
onDoubleClicked: chat.model.reply = eventId
|
||||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
|
||||||
|
DragHandler {
|
||||||
|
id: draghandler
|
||||||
|
yAxis.enabled: false
|
||||||
|
xAxis.maximum: 100
|
||||||
|
xAxis.minimum: -100
|
||||||
|
onActiveChanged: {
|
||||||
|
if(!active && (x < -70 || x > 70))
|
||||||
|
chat.model.reply = eventId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
states: State {
|
||||||
|
name: "dragging"
|
||||||
|
when: draghandler.active
|
||||||
|
}
|
||||||
|
transitions: Transition {
|
||||||
|
from: "dragging"
|
||||||
|
to: ""
|
||||||
|
PropertyAnimation {
|
||||||
|
target: r
|
||||||
|
properties: "x"
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
to: 0
|
||||||
|
duration: 100
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TapHandler {
|
Rectangle {
|
||||||
onLongPressed: messageContextMenu.show(eventId, type, isSender, isEncrypted, isEditable, contentItem.child.hoveredLink, contentItem.child.copyText)
|
|
||||||
onDoubleTapped: chat.model.reply = eventId
|
|
||||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
|
||||||
}
|
|
||||||
|
|
||||||
Control {
|
|
||||||
id: row
|
id: row
|
||||||
property bool bubbleOnRight : isSender && Settings.bubbles
|
property bool bubbleOnRight : isSender && Settings.bubbles
|
||||||
anchors.leftMargin: isStateEvent || Settings.smallAvatars? 0 : Nheko.avatarSize+8 // align bubble with section header
|
anchors.leftMargin: isStateEvent || Settings.smallAvatars? 0 : Nheko.avatarSize+8 // align bubble with section header
|
||||||
|
@ -78,20 +101,21 @@ Item {
|
||||||
anchors.horizontalCenter: isStateEvent? parent.horizontalCenter : undefined
|
anchors.horizontalCenter: isStateEvent? parent.horizontalCenter : undefined
|
||||||
property int maxWidth: (parent.width-(Settings.smallAvatars || isStateEvent? 0 : Nheko.avatarSize+8))*(Settings.bubbles && !isStateEvent? 0.9 : 1)
|
property int maxWidth: (parent.width-(Settings.smallAvatars || isStateEvent? 0 : Nheko.avatarSize+8))*(Settings.bubbles && !isStateEvent? 0.9 : 1)
|
||||||
width: Settings.bubbles? Math.min(maxWidth,Math.max(reply.implicitWidth+8,contentItem.implicitWidth+metadata.width+20)) : maxWidth
|
width: Settings.bubbles? Math.min(maxWidth,Math.max(reply.implicitWidth+8,contentItem.implicitWidth+metadata.width+20)) : maxWidth
|
||||||
|
height: msg.height+msg.anchors.margins*2
|
||||||
|
|
||||||
leftPadding: 4
|
property color userColor: TimelineManager.userColor(userId, Nheko.colors.base)
|
||||||
rightPadding: (Settings.bubbles && !isStateEvent)? 4: 2
|
property color bgColor: Nheko.colors.base
|
||||||
topPadding: rightPadding
|
color: (Settings.bubbles && !isStateEvent) ? Qt.tint(bgColor, Qt.hsla(userColor.hslHue, 0.5, userColor.hslLightness, 0.2)) : "#00000000"
|
||||||
bottomPadding: topPadding
|
radius: 4
|
||||||
background: Rectangle {
|
|
||||||
property color userColor: TimelineManager.userColor(userId, Nheko.colors.base)
|
|
||||||
property color bgColor: Nheko.colors.base
|
|
||||||
color: Qt.tint(bgColor, Qt.hsla(userColor.hslHue, 0.5, userColor.hslLightness, 0.2))
|
|
||||||
radius: 4
|
|
||||||
visible: Settings.bubbles && !isStateEvent
|
|
||||||
}
|
|
||||||
|
|
||||||
contentItem: GridLayout {
|
GridLayout {
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
top: parent.top
|
||||||
|
right: parent.right
|
||||||
|
margins: (Settings.bubbles && ! isStateEvent)? 4 : 2
|
||||||
|
leftMargin: 4
|
||||||
|
}
|
||||||
id: msg
|
id: msg
|
||||||
rowSpacing: 0
|
rowSpacing: 0
|
||||||
columnSpacing: 2
|
columnSpacing: 2
|
||||||
|
|
|
@ -33,6 +33,8 @@ Item {
|
||||||
fullHeight = height
|
fullHeight = height
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clip: true
|
||||||
|
|
||||||
Label {
|
Label {
|
||||||
visible: !room && !TimelineManager.isInitialSync && (!roomPreview || !roomPreview.roomid)
|
visible: !room && !TimelineManager.isInitialSync && (!roomPreview || !roomPreview.roomid)
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
|
|
|
@ -131,6 +131,7 @@ Container {
|
||||||
interactive: singlePageMode
|
interactive: singlePageMode
|
||||||
highlightMoveDuration: container.singlePageMode ? 200 : 0
|
highlightMoveDuration: container.singlePageMode ? 200 : 0
|
||||||
currentIndex: container.singlePageMode ? container.pageIndex : 0
|
currentIndex: container.singlePageMode ? container.pageIndex : 0
|
||||||
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,10 @@
|
||||||
|
|
||||||
import QtQuick 2.15
|
import QtQuick 2.15
|
||||||
import QtQuick.Window 2.15
|
import QtQuick.Window 2.15
|
||||||
|
import QtQuick.Controls 2.3
|
||||||
import im.nheko 1.0
|
import im.nheko 1.0
|
||||||
|
|
||||||
Item {
|
AbstractButton {
|
||||||
required property int type
|
required property int type
|
||||||
required property int originalWidth
|
required property int originalWidth
|
||||||
required property double proportionalHeight
|
required property double proportionalHeight
|
||||||
|
@ -24,6 +25,7 @@ Item {
|
||||||
implicitWidth: Math.round(tempWidth*Math.min((timelineView.fullHeight/divisor)/(tempWidth*proportionalHeight), 1))
|
implicitWidth: Math.round(tempWidth*Math.min((timelineView.fullHeight/divisor)/(tempWidth*proportionalHeight), 1))
|
||||||
width: Math.min(parent.width,implicitWidth)
|
width: Math.min(parent.width,implicitWidth)
|
||||||
height: width*proportionalHeight
|
height: width*proportionalHeight
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
property int metadataWidth
|
property int metadataWidth
|
||||||
property bool fitsMetadata: (parent.width - width) > metadataWidth+4
|
property bool fitsMetadata: (parent.width - width) > metadataWidth+4
|
||||||
|
@ -61,28 +63,17 @@ Item {
|
||||||
visible: loaded
|
visible: loaded
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
roomm: room
|
roomm: room
|
||||||
play: !Settings.animateImagesOnHover || mouseArea.hovered
|
play: !Settings.animateImagesOnHover || parent.hovered
|
||||||
eventId: parent.eventId
|
eventId: parent.eventId
|
||||||
}
|
}
|
||||||
|
|
||||||
TapHandler {
|
onClicked :Settings.openImageExternal ? room.openMedia(eventId) : TimelineManager.openImageOverlay(room, url, eventId);
|
||||||
//enabled: type == MtxEvent.ImageMessage && (img.status == Image.Ready || mxcimage.loaded)
|
|
||||||
onSingleTapped: {
|
|
||||||
Settings.openImageExternal ? room.openMedia(eventId) : TimelineManager.openImageOverlay(room, url, eventId);
|
|
||||||
eventPoint.accepted = true;
|
|
||||||
}
|
|
||||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
|
||||||
}
|
|
||||||
|
|
||||||
HoverHandler {
|
|
||||||
id: mouseArea
|
|
||||||
}
|
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: overlay
|
id: overlay
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
visible: mouseArea.hovered
|
visible: parent.hovered
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: container
|
id: container
|
||||||
|
|
|
@ -11,7 +11,7 @@ import QtQuick.Window 2.13
|
||||||
import im.nheko 1.0
|
import im.nheko 1.0
|
||||||
import "../"
|
import "../"
|
||||||
|
|
||||||
Item {
|
AbstractButton {
|
||||||
id: r
|
id: r
|
||||||
|
|
||||||
property color userColor: "red"
|
property color userColor: "red"
|
||||||
|
@ -57,6 +57,16 @@ Item {
|
||||||
color: TimelineManager.userColor(userId, Nheko.colors.base)
|
color: TimelineManager.userColor(userId, Nheko.colors.base)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
let link = reply.child.linkAt != undefined && reply.child.linkAt(pressX-colorLine.width, pressY - userName_.implicitHeight);
|
||||||
|
if (link) {
|
||||||
|
Nheko.openLink(link)
|
||||||
|
} else {
|
||||||
|
room.showEvent(r.eventId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onPressAndHold: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(pressX-colorLine.width, pressY - userName_.implicitHeight), r.eventId)
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: replyContainer
|
id: replyContainer
|
||||||
|
|
||||||
|
@ -64,23 +74,9 @@ Item {
|
||||||
width: parent.width - 4
|
width: parent.width - 4
|
||||||
spacing: 0
|
spacing: 0
|
||||||
|
|
||||||
TapHandler {
|
|
||||||
acceptedButtons: Qt.LeftButton
|
|
||||||
onSingleTapped: {
|
|
||||||
let link = reply.child.linkAt != undefined && reply.child.linkAt(eventPoint.position.x, eventPoint.position.y - userName_.implicitHeight);
|
|
||||||
if (link) {
|
|
||||||
Nheko.openLink(link)
|
|
||||||
} else {
|
|
||||||
room.showEvent(r.eventId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
|
||||||
}
|
|
||||||
|
|
||||||
TapHandler {
|
TapHandler {
|
||||||
acceptedButtons: Qt.RightButton
|
acceptedButtons: Qt.RightButton
|
||||||
onLongPressed: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(eventPoint.position.x, eventPoint.position.y - userName_.implicitHeight))
|
onSingleTapped: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(eventPoint.position.x, eventPoint.position.y - userName_.implicitHeight), r.eventId)
|
||||||
onSingleTapped: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(eventPoint.position.x, eventPoint.position.y - userName_.implicitHeight))
|
|
||||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3708,8 +3708,10 @@ Cache::getImagePacks(const std::string &room_id, std::optional<bool> stickers)
|
||||||
auto addPack = [&infos, stickers](const mtx::events::msc2545::ImagePack &pack,
|
auto addPack = [&infos, stickers](const mtx::events::msc2545::ImagePack &pack,
|
||||||
const std::string &source_room,
|
const std::string &source_room,
|
||||||
const std::string &state_key) {
|
const std::string &state_key) {
|
||||||
bool pack_matches = !stickers.has_value() ||
|
bool pack_is_sticker = pack.pack ? pack.pack->is_sticker() : true;
|
||||||
(stickers.value() ? pack.pack->is_sticker() : pack.pack->is_emoji());
|
bool pack_is_emoji = pack.pack ? pack.pack->is_emoji() : true;
|
||||||
|
bool pack_matches =
|
||||||
|
!stickers.has_value() || (stickers.value() ? pack_is_sticker : pack_is_emoji);
|
||||||
|
|
||||||
ImagePackInfo info;
|
ImagePackInfo info;
|
||||||
info.source_room = source_room;
|
info.source_room = source_room;
|
||||||
|
|
|
@ -896,39 +896,47 @@ MediaUpload::startUpload()
|
||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
QBuffer buffer(&ba);
|
QBuffer buffer(&ba);
|
||||||
buffer.open(QIODevice::WriteOnly);
|
buffer.open(QIODevice::WriteOnly);
|
||||||
thumbnail_.save(&buffer, "PNG");
|
thumbnail_.save(&buffer, "PNG", 0);
|
||||||
auto payload = std::string(ba.data(), ba.size());
|
if (ba.size() >= (data.size() - data.size() / 10)) {
|
||||||
if (encrypt_) {
|
nhlog::ui()->info(
|
||||||
mtx::crypto::BinaryBuf buf;
|
"Thumbnail is not a lot smaller than original image, not uploading it");
|
||||||
std::tie(buf, thumbnailEncryptedFile) = mtx::crypto::encrypt_file(std::move(payload));
|
nhlog::ui()->debug(
|
||||||
payload = mtx::crypto::to_string(buf);
|
"\n Image size: {:9d}\nThumbnail size: {:9d}", data.size(), ba.size());
|
||||||
}
|
} else {
|
||||||
thumbnailSize_ = payload.size();
|
auto payload = std::string(ba.data(), ba.size());
|
||||||
|
if (encrypt_) {
|
||||||
|
mtx::crypto::BinaryBuf buf;
|
||||||
|
std::tie(buf, thumbnailEncryptedFile) =
|
||||||
|
mtx::crypto::encrypt_file(std::move(payload));
|
||||||
|
payload = mtx::crypto::to_string(buf);
|
||||||
|
}
|
||||||
|
thumbnailSize_ = payload.size();
|
||||||
|
|
||||||
|
http::client()->upload(
|
||||||
|
payload,
|
||||||
|
encryptedFile ? "application/octet-stream" : "image/png",
|
||||||
|
"",
|
||||||
|
[this](const mtx::responses::ContentURI &res, mtx::http::RequestErr err) mutable {
|
||||||
|
if (err) {
|
||||||
|
emit ChatPage::instance()->showNotification(
|
||||||
|
tr("Failed to upload media. Please try again."));
|
||||||
|
nhlog::net()->warn("failed to upload media: {} {} ({})",
|
||||||
|
err->matrix_error.error,
|
||||||
|
to_string(err->matrix_error.errcode),
|
||||||
|
static_cast<int>(err->status_code));
|
||||||
|
thumbnail_ = QImage();
|
||||||
|
startUpload();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
thumbnailUrl_ = QString::fromStdString(res.content_uri);
|
||||||
|
if (thumbnailEncryptedFile)
|
||||||
|
thumbnailEncryptedFile->url = res.content_uri;
|
||||||
|
|
||||||
http::client()->upload(
|
|
||||||
payload,
|
|
||||||
encryptedFile ? "application/octet-stream" : "image/png",
|
|
||||||
"",
|
|
||||||
[this](const mtx::responses::ContentURI &res, mtx::http::RequestErr err) mutable {
|
|
||||||
if (err) {
|
|
||||||
emit ChatPage::instance()->showNotification(
|
|
||||||
tr("Failed to upload media. Please try again."));
|
|
||||||
nhlog::net()->warn("failed to upload media: {} {} ({})",
|
|
||||||
err->matrix_error.error,
|
|
||||||
to_string(err->matrix_error.errcode),
|
|
||||||
static_cast<int>(err->status_code));
|
|
||||||
thumbnail_ = QImage();
|
|
||||||
startUpload();
|
startUpload();
|
||||||
return;
|
});
|
||||||
}
|
return;
|
||||||
|
}
|
||||||
thumbnailUrl_ = QString::fromStdString(res.content_uri);
|
|
||||||
if (thumbnailEncryptedFile)
|
|
||||||
thumbnailEncryptedFile->url = res.content_uri;
|
|
||||||
|
|
||||||
startUpload();
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
auto payload = std::string(data.data(), data.size());
|
auto payload = std::string(data.data(), data.size());
|
||||||
|
|
Loading…
Reference in a new issue