diff options
156 files changed, 19609 insertions, 12226 deletions
diff --git a/.ci/format.sh b/.ci/format.sh index cc4a3b82..20c1d126 100755 --- a/.ci/format.sh +++ b/.ci/format.sh @@ -8,6 +8,7 @@ set -eu FILES=$(find src -type f \( -iname "*.cpp" -o -iname "*.h" \)) +QML_FILES=$(find resources/qml -type f \( -iname "*.qml" \)) for f in $FILES do @@ -15,3 +16,11 @@ do done; git diff --exit-code + +if command -v /usr/lib64/qt6/bin/qmllint &> /dev/null; then + /usr/lib64/qt6/bin/qmllint $QML_FILES +elif command -v /usr/lib/qt6/bin/qmllint &> /dev/null; then + /usr/lib/qt6/bin/qmllint $QML_FILES +else + echo "No qmllint found, skipping check!" +fi diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..65ee036b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,8 @@ +root = true + +[*] +insert_final_newline = true +charset = utf-8 +indent_style = space +indent_size = 4 +max_line_length = 100 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..04bb3c2a --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +# Explicitly disable EOL normalization +* -text diff +third_party/** linguist-vendored diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0dab93df..0a15fa33 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -106,7 +106,6 @@ build-tw: "pkgconfig" "spdlog-devel" "zlib-devel" - "libQt5PlatformHeaders-devel" "cmake(re2)" "cmake(Qt6Core)" "cmake(Qt6DBus)" @@ -117,6 +116,7 @@ build-tw: "cmake(Qt6Svg)" "cmake(Qt6Widgets)" "cmake(Qt6Gui)" + "qt6-qml-private-devel" "pkgconfig(libcurl)" "pkgconfig(libevent)" "pkgconfig(gstreamer-webrtc-1.0)" @@ -312,7 +312,7 @@ linting: image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine:latest tags: [docker] before_script: - - apk update && apk add make git python3 py3-pip + - apk update && apk add make git python3 py3-pip qt6-qtdeclarative-dev - apk add clang-extra-tools --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main - export PATH="$PATH:/root/.local/bin" - pip3 install --user reuse diff --git a/.qmllint.ini b/.qmllint.ini new file mode 100644 index 00000000..387b5163 --- /dev/null +++ b/.qmllint.ini @@ -0,0 +1,68 @@ +[General] +AdditionalQmlImportPaths= +DisableDefaultImports=false +DisablePlugins= +OverwriteImportTypes= +ResourcePath= + +[Warnings] +#AccessSingletonViaObject=warning +#AttachedPropertyReuse=disable +#BadSignalHandlerParameters=warning +#CompilerWarnings=disable +#Deprecated=warning +#DuplicatePropertyBinding=warning +#DuplicatedName=warning +#ImportFailure=warning +#IncompatibleType=warning +#InheritanceCycle=warning +#InvalidLintDirective=warning +#LintPluginWarnings=disable +#MissingProperty=warning +#MissingType=warning +#MultilineStrings=info +#NonListProperty=warning +#PrefixedImportType=warning +#PropertyAliasCycles=warning +#ReadOnlyProperty=warning +#RequiredProperty=warning +#RestrictedType=warning +#TopLevelComponent=warning +#UncreatableType=warning +#UnqualifiedAccess=warning +#UnresolvedType=warning +#UnusedImports=info +#UseProperFunction=warning +#VarUsedBeforeDeclaration=warning +#WithStatement=warning + +AccessSingletonViaObject=warning +AttachedPropertyReuse=warning +# https://bugreports.qt.io/browse/QTBUG-115439 -> set to disabled until Qt6.7 +BadSignalHandlerParameters=disable +CompilerWarnings=disable +Deprecated=warning +DuplicatePropertyBinding=warning +DuplicatedName=warning +ImportFailure=disable +IncompatibleType=warning +InheritanceCycle=warning +InvalidLintDirective=warning +LintPluginWarnings=warning +MissingProperty=disable +MissingType=disable +MultilineStrings=warning +NonListProperty=warning +PrefixedImportType=warning +PropertyAliasCycles=disable +ReadOnlyProperty=warning +RequiredProperty=warning +RestrictedType=warning +TopLevelComponent=warning +UncreatableType=warning +UnqualifiedAccess=disable +UnresolvedType=disable +UnusedImports=info +UseProperFunction=warning +VarUsedBeforeDeclaration=warning +WithStatement=warning diff --git a/CMakeLists.txt b/CMakeLists.txt index e9fe8cd4..886beec6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,18 +6,18 @@ option(ASAN "Compile with address sanitizers" OFF) option(QML_DEBUGGING "Enable qml debugging" OFF) option(COMPILE_QML "Compile Qml. It will make Nheko faster, but you will need to recompile it, when you update Qt." OFF) if(UNIX AND NOT APPLE) - option(MAN "Build man page" ON) + option(MAN "Build man page" ON) else() - option(MAN "Build man page" OFF) + option(MAN "Build man page" OFF) endif() option(FLATPAK "Set this only if Nheko is built as a flatpak" OFF) option(JSON_ImplicitConversions "Disable implicit conversions in nlohmann/json" ON) set( - CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_LIST_DIR}/toolchain.cmake" - CACHE - FILEPATH "Default toolchain" - ) + CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_LIST_DIR}/toolchain.cmake" + CACHE + FILEPATH "Default toolchain" +) set(CMAKE_CXX_STANDARD 20 CACHE STRING "C++ standard") set(CMAKE_CXX_STANDARD_REQUIRED ON CACHE BOOL "Require C++ standard to be supported") set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "compile as PIC by default") @@ -32,20 +32,20 @@ HunterGate( ) macro(hunter_add_package_safe) - set(pkg_temp_backup_libdir "$ENV{PKG_CONFIG_LIBDIR}") - set(pkg_temp_backup_path "$ENV{PKG_CONFIG_PATH}") - hunter_add_package(${ARGV}) - if("${pkg_temp_backup_path}" STREQUAL "") - unset(ENV{PKG_CONFIG_PATH}) - else() - set(ENV{PKG_CONFIG_PATH} "${pkg_temp_backup_path}") - endif() - if("${pkg_temp_backup_libdir}" STREQUAL "") - unset(ENV{PKG_CONFIG_LIBDIR}) - else() - set(ENV{PKG_CONFIG_LIBDIR} "${pkg_temp_backup_libdir}") - endif() - message("pkg_conf_path: '$ENV{PKG_CONFIG_PATH}', pkg_conf_libdir: '$ENV{PKG_CONFIG_LIBDIR}'") + set(pkg_temp_backup_libdir "$ENV{PKG_CONFIG_LIBDIR}") + set(pkg_temp_backup_path "$ENV{PKG_CONFIG_PATH}") + hunter_add_package(${ARGV}) + if("${pkg_temp_backup_path}" STREQUAL "") + unset(ENV{PKG_CONFIG_PATH}) + else() + set(ENV{PKG_CONFIG_PATH} "${pkg_temp_backup_path}") + endif() + if("${pkg_temp_backup_libdir}" STREQUAL "") + unset(ENV{PKG_CONFIG_LIBDIR}) + else() + set(ENV{PKG_CONFIG_LIBDIR} "${pkg_temp_backup_libdir}") + endif() + message("pkg_conf_path: '$ENV{PKG_CONFIG_PATH}', pkg_conf_libdir: '$ENV{PKG_CONFIG_LIBDIR}'") endmacro() option(USE_BUNDLED_SPDLOG "Use the bundled version of spdlog." ${HUNTER_ENABLED}) @@ -59,7 +59,7 @@ option(USE_BUNDLED_LMDB "Use the bundled version of lmdb." ${HUNTER_ENABLED}) option(USE_BUNDLED_LMDBXX "Use the bundled version of lmdb++." ${HUNTER_ENABLED}) option(USE_BUNDLED_QTKEYCHAIN "Use the bundled version of Qt6Keychain." ${HUNTER_ENABLED}) option(USE_BUNDLED_COEURL "Use a bundled version of the Curl wrapper" - ${HUNTER_ENABLED}) + ${HUNTER_ENABLED}) option(USE_BUNDLED_LIBEVENT "Use the bundled version of libevent." ${HUNTER_ENABLED}) option(USE_BUNDLED_LIBCURL "Use the bundled version of libcurl." ${HUNTER_ENABLED}) option(USE_BUNDLED_RE2 "Use the bundled version of re2." ${HUNTER_ENABLED}) @@ -68,13 +68,13 @@ option(USE_BUNDLED_BLURHASH "Use the bundled version of blurhash." ON) include(CMakeDependentOption) set(VOIP_DEFAULT ON) -if (APPLE OR WIN32) - set(VOIP_DEFAULT OFF) +if(APPLE OR WIN32) + set(VOIP_DEFAULT OFF) endif() option(VOIP "Whether to enable voip support. Disable this, if you don't have gstreamer." ${VOIP_DEFAULT}) set(X11_DEFAULT) -if (WIN32 OR APPLE OR HAIKU) - set(X11_DEFAULT OFF) +if(WIN32 OR APPLE OR HAIKU) + set(X11_DEFAULT OFF) endif() option(X11 "Whether to enable X11 specific features (screenshare, window roles)." ${X11_DEFAULT}) cmake_dependent_option(SCREENSHARE_XDP "Whether to enable screenshare support using xdg-desktop-portal." ON "VOIP" OFF) @@ -82,29 +82,27 @@ cmake_dependent_option(SCREENSHARE_XDP "Whether to enable screenshare support us list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") if(${CMAKE_VERSION} VERSION_LESS "3.14.0") - message("Adding FetchContent_MakeAvailable") - # from cmakes sources - macro(FetchContent_MakeAvailable) - - foreach(contentName IN ITEMS ${ARGV}) - string(TOLOWER ${contentName} contentNameLower) - FetchContent_GetProperties(${contentName}) - if(NOT ${contentNameLower}_POPULATED) - FetchContent_Populate(${contentName}) - - # Only try to call add_subdirectory() if the populated content - # can be treated that way. Protecting the call with the check - # allows this function to be used for projects that just want - # to ensure the content exists, such as to provide content at - # a known location. - if(EXISTS ${${contentNameLower}_SOURCE_DIR}/CMakeLists.txt) - add_subdirectory(${${contentNameLower}_SOURCE_DIR} - ${${contentNameLower}_BINARY_DIR}) - endif() - endif() - endforeach() - - endmacro() + message("Adding FetchContent_MakeAvailable") + # from cmakes sources + macro(FetchContent_MakeAvailable) + foreach(contentName IN ITEMS ${ARGV}) + string(TOLOWER ${contentName} contentNameLower) + FetchContent_GetProperties(${contentName}) + if(NOT ${contentNameLower}_POPULATED) + FetchContent_Populate(${contentName}) + + # Only try to call add_subdirectory() if the populated content + # can be treated that way. Protecting the call with the check + # allows this function to be used for projects that just want + # to ensure the content exists, such as to provide content at + # a known location. + if(EXISTS ${${contentNameLower}_SOURCE_DIR}/CMakeLists.txt) + add_subdirectory(${${contentNameLower}_SOURCE_DIR} + ${${contentNameLower}_BINARY_DIR}) + endif() + endif() + endforeach() + endmacro() endif() # Include Qt basic functions @@ -133,111 +131,109 @@ set(IDENTIFIER "io.github.nheko-reborn.nheko") add_project_meta(META_FILES_TO_INCLUDE) if(NOT MSVC AND NOT APPLE) - set(THREADS_PREFER_PTHREAD_FLAG ON) - find_package(Threads REQUIRED) + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads REQUIRED) endif() -if (BUILD_DOCS) - find_package(Doxygen) +if(BUILD_DOCS) + find_package(Doxygen) - if (DOXYGEN_FOUND) - set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Doxyfile.in) - set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) + if(DOXYGEN_FOUND) + set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Doxyfile.in) + set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) - configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT}) + configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT}) - add_custom_target(docs ALL - COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API documentation with Doxygen" - VERBATIM ) - else (DOXYGEN_FOUND) - message("Doxygen need to be installed to generate the doxygen documentation") - endif (DOXYGEN_FOUND) + add_custom_target(docs ALL + COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating API documentation with Doxygen" + VERBATIM ) + else(DOXYGEN_FOUND) + message("Doxygen need to be installed to generate the doxygen documentation") + endif(DOXYGEN_FOUND) endif() # ## coeurl # ## Need to repeat all libevent deps?!? -if (USE_BUNDLED_LIBEVENT) - hunter_add_package_safe(Libevent) - find_package(Libevent CONFIG REQUIRED) +if(USE_BUNDLED_LIBEVENT) + hunter_add_package_safe(Libevent) + find_package(Libevent CONFIG REQUIRED) else() - find_package(PkgConfig REQUIRED) - pkg_check_modules(libevent_core REQUIRED IMPORTED_TARGET libevent_core) - if (WIN32) - pkg_check_modules(libevent_windows REQUIRED IMPORTED_TARGET libevent_windows) - else() - pkg_check_modules(libevent_pthreads REQUIRED IMPORTED_TARGET - libevent_pthreads) - endif() + find_package(PkgConfig REQUIRED) + pkg_check_modules(libevent_core REQUIRED IMPORTED_TARGET libevent_core) + if(WIN32) + pkg_check_modules(libevent_windows REQUIRED IMPORTED_TARGET libevent_windows) + else() + pkg_check_modules(libevent_pthreads REQUIRED IMPORTED_TARGET libevent_pthreads) + endif() endif() # curl -if (USE_BUNDLED_LIBCURL) - hunter_add_package_safe(CURL) - find_package(CURL CONFIG REQUIRED) +if(USE_BUNDLED_LIBCURL) + hunter_add_package_safe(CURL) + find_package(CURL CONFIG REQUIRED) else() - find_package(PkgConfig REQUIRED) - pkg_check_modules(libcurl REQUIRED IMPORTED_TARGET libcurl) + find_package(PkgConfig REQUIRED) + pkg_check_modules(libcurl REQUIRED IMPORTED_TARGET libcurl) endif() # spdlog if(USE_BUNDLED_SPDLOG) - hunter_add_package_safe(spdlog) + hunter_add_package_safe(spdlog) endif() find_package(spdlog 1.0.0 CONFIG REQUIRED) if(USE_BUNDLED_COEURL) - include(FetchContent) - FetchContent_Declare( - coeurl - GIT_REPOSITORY https://nheko.im/Nheko-Reborn/coeurl.git - GIT_TAG 831e2ee8e9cf08ea1ee9736cde8370f9d0312abc - ) - FetchContent_MakeAvailable(coeurl) - set(COEURL_TARGET_NAME coeurl::coeurl) + include(FetchContent) + FetchContent_Declare( + coeurl + GIT_REPOSITORY https://nheko.im/Nheko-Reborn/coeurl.git + GIT_TAG 831e2ee8e9cf08ea1ee9736cde8370f9d0312abc + ) + FetchContent_MakeAvailable(coeurl) + set(COEURL_TARGET_NAME coeurl::coeurl) else() - find_package(PkgConfig) - pkg_check_modules(coeurl IMPORTED_TARGET coeurl>=0.3.0) - if (TARGET PkgConfig::coeurl) - set(COEURL_TARGET_NAME PkgConfig::coeurl) - endif() + find_package(PkgConfig) + pkg_check_modules(coeurl IMPORTED_TARGET coeurl>=0.3.0) + if(TARGET PkgConfig::coeurl) + set(COEURL_TARGET_NAME PkgConfig::coeurl) + endif() endif() if(NOT TARGET PkgConfig::coeurl) - find_package(coeurl 0.2.1 CONFIG) - if (TARGET coeurl::coeurl) - set(COEURL_TARGET_NAME coeurl::coeurl) - endif() + find_package(coeurl 0.2.1 CONFIG) + if(TARGET coeurl::coeurl) + set(COEURL_TARGET_NAME coeurl::coeurl) + endif() endif() -if (NOT COEURL_TARGET_NAME) - message(ERROR "Couldn't find coeurl") +if(NOT COEURL_TARGET_NAME) + message(ERROR "Couldn't find coeurl") endif() if(USE_BUNDLED_RE2) - hunter_add_package(re2) - find_package(re2 CONFIG REQUIRED) + hunter_add_package(re2) + find_package(re2 CONFIG REQUIRED) else() - find_package(PkgConfig REQUIRED) - pkg_check_modules(re2 REQUIRED IMPORTED_TARGET re2) + find_package(PkgConfig REQUIRED) + pkg_check_modules(re2 REQUIRED IMPORTED_TARGET re2) endif() - # # LMDB # #include(LMDB) if(USE_BUNDLED_LMDB) - hunter_add_package_safe(lmdb) - find_package(liblmdb CONFIG REQUIRED) + hunter_add_package_safe(lmdb) + find_package(liblmdb CONFIG REQUIRED) - target_include_directories(liblmdb::lmdb INTERFACE - "${HUNTER_INSTALL_PREFIX}/include/lmdb") + target_include_directories(liblmdb::lmdb INTERFACE + "${HUNTER_INSTALL_PREFIX}/include/lmdb") else() - find_package(LMDB REQUIRED) + find_package(LMDB REQUIRED) endif() # @@ -247,91 +243,91 @@ find_package(Qt6 6.5 COMPONENTS Core Widgets Gui LinguistTools Svg Multimedia Qm #find_package(Qt6QuickCompiler) find_package(Qt6DBus) -if (USE_BUNDLED_QTKEYCHAIN) - include(FetchContent) - set(BUILD_WITH_QT6 ON) - FetchContent_Declare( - qt6keychain - GIT_REPOSITORY https://github.com/frankosterfeld/qtkeychain.git - GIT_TAG v0.14.0 - ) - if (BUILD_SHARED_LIBS) - set(QTKEYCHAIN_STATIC OFF CACHE INTERNAL "") - else() - set(QTKEYCHAIN_STATIC ON CACHE INTERNAL "") - endif() - set(BUILD_TEST_APPLICATION OFF CACHE INTERNAL "") - FetchContent_MakeAvailable(qt6keychain) +if(USE_BUNDLED_QTKEYCHAIN) + include(FetchContent) + set(BUILD_WITH_QT6 ON) + FetchContent_Declare( + qt6keychain + GIT_REPOSITORY https://github.com/frankosterfeld/qtkeychain.git + GIT_TAG v0.14.0 + ) + if(BUILD_SHARED_LIBS) + set(QTKEYCHAIN_STATIC OFF CACHE INTERNAL "") + else() + set(QTKEYCHAIN_STATIC ON CACHE INTERNAL "") + endif() + set(BUILD_TEST_APPLICATION OFF CACHE INTERNAL "") + FetchContent_MakeAvailable(qt6keychain) else() - find_package(Qt6Keychain REQUIRED) + find_package(Qt6Keychain REQUIRED) endif() -if (Qt6Widgets_FOUND) - if (Qt6Widgets_VERSION VERSION_LESS 6.5.0) - message(STATUS "Qt version ${Qt6Widgets_VERSION}") - message(WARNING "Minimum supported Qt6 version is 6.5!") - endif() +if(Qt6Widgets_FOUND) + if(Qt6Widgets_VERSION VERSION_LESS 6.5.0) + message(STATUS "Qt version ${Qt6Widgets_VERSION}") + message(WARNING "Minimum supported Qt6 version is 6.5!") + endif() endif(Qt6Widgets_FOUND) set(CMAKE_INCLUDE_CURRENT_DIR ON) if(NOT MSVC) - set( - CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} \ - -Wall \ - -Wextra \ - -pedantic \ - -fsized-deallocation \ - -fdiagnostics-color=always \ - -Wunreachable-code \ - -Wno-attributes" - ) - if (NOT CMAKE_COMPILER_IS_GNUCXX) - # -Wshadow is buggy and broken in GCC, so do not enable it. - # see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79328 - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshadow") - endif() -endif() - -if (MSVC) - set( - CMAKE_CXX_FLAGS - "${CMAKE_CXX_FLAGS} /bigobj" - ) + set( + CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} \ + -Wall \ + -Wextra \ + -pedantic \ + -fsized-deallocation \ + -fdiagnostics-color=always \ + -Wunreachable-code \ + -Wno-attributes" + ) + if(NOT CMAKE_COMPILER_IS_GNUCXX) + # -Wshadow is buggy and broken in GCC, so do not enable it. + # see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79328 + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshadow") + endif() +endif() + +if(MSVC) + set( + CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} /bigobj" + ) endif() if(NOT (CMAKE_BUILD_TYPE OR CMAKE_CONFIGURATION_TYPES)) - set(CMAKE_BUILD_TYPE "Debug" CACHE STRING - "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." - FORCE) - message("Setting build type to '${CMAKE_BUILD_TYPE}'") + set(CMAKE_BUILD_TYPE "Debug" CACHE STRING + "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." + FORCE) + message("Setting build type to '${CMAKE_BUILD_TYPE}'") else(NOT (CMAKE_BUILD_TYPE OR CMAKE_CONFIGURATION_TYPES)) - message("Build type set to '${CMAKE_BUILD_TYPE}'") + message("Build type set to '${CMAKE_BUILD_TYPE}'") endif(NOT (CMAKE_BUILD_TYPE OR CMAKE_CONFIGURATION_TYPES)) set(SPDLOG_DEBUG_ON false) # Windows doesn't handle CMAKE_BUILD_TYPE. if(NOT WIN32) - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(SPDLOG_DEBUG_ON true) - else() - set(SPDLOG_DEBUG_ON false) - endif() + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(SPDLOG_DEBUG_ON true) + else() + set(SPDLOG_DEBUG_ON false) + endif() endif() find_program(GIT git) if(GIT) - execute_process( - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMAND ${GIT} rev-parse --short HEAD - OUTPUT_VARIABLE GIT_OUT OUTPUT_STRIP_TRAILING_WHITESPACE - ) - if(GIT_OUT) - set(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}-${GIT_OUT}") - else() - set(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}") - endif() + execute_process( + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMAND ${GIT} rev-parse --short HEAD + OUTPUT_VARIABLE GIT_OUT OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if(GIT_OUT) + set(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}-${GIT_OUT}") + else() + set(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}") + endif() endif(GIT) set(CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}) @@ -350,271 +346,271 @@ configure_file(cmake/nheko.h config/nheko.h) # Declare source and header files. # set(SRC_FILES - # Emoji - src/emoji/Provider.cpp - src/emoji/Provider.h - - # Timeline - src/timeline/CommunitiesModel.cpp - src/timeline/CommunitiesModel.h - src/timeline/DelegateChooser.cpp - src/timeline/DelegateChooser.h - src/timeline/EventStore.cpp - src/timeline/EventStore.h - src/timeline/InputBar.cpp - src/timeline/InputBar.h - src/timeline/Permissions.cpp - src/timeline/Permissions.h - src/timeline/PresenceEmitter.cpp - src/timeline/PresenceEmitter.h - src/timeline/Reaction.cpp - src/timeline/Reaction.h - src/timeline/RoomlistModel.cpp - src/timeline/RoomlistModel.h - src/timeline/TimelineFilter.cpp - src/timeline/TimelineFilter.h - src/timeline/TimelineModel.cpp - src/timeline/TimelineModel.h - src/timeline/TimelineViewManager.cpp - src/timeline/TimelineViewManager.h - - # UI components - src/ui/HiddenEvents.cpp - src/ui/HiddenEvents.h - src/ui/EventExpiry.cpp - src/ui/EventExpiry.h - src/ui/MxcAnimatedImage.cpp - src/ui/MxcAnimatedImage.h - src/ui/MxcMediaProxy.cpp - src/ui/MxcMediaProxy.h - src/ui/NhekoCursorShape.cpp - src/ui/NhekoCursorShape.h - src/ui/NhekoDropArea.cpp - src/ui/NhekoDropArea.h - src/ui/NhekoGlobalObject.cpp - src/ui/NhekoGlobalObject.h - src/ui/RoomSettings.cpp - src/ui/RoomSettings.h - src/ui/RoomSummary.cpp - src/ui/RoomSummary.h - src/ui/Theme.cpp - src/ui/Theme.h - src/ui/UIA.cpp - src/ui/UIA.h - src/ui/UserProfile.cpp - src/ui/UserProfile.h - - src/voip/CallDevices.cpp - src/voip/CallDevices.h - src/voip/CallManager.cpp - src/voip/CallManager.h - src/voip/ScreenCastPortal.cpp - src/voip/ScreenCastPortal.h - src/voip/WebRTCSession.h - src/voip/WebRTCSession.cpp - src/voip/WebRTCSession.h - - src/encryption/DeviceVerificationFlow.cpp - src/encryption/DeviceVerificationFlow.h - src/encryption/Olm.cpp - src/encryption/Olm.h - src/encryption/SelfVerificationStatus.cpp - src/encryption/SelfVerificationStatus.h - src/encryption/VerificationManager.cpp - src/encryption/VerificationManager.h - - # Generic notification stuff - src/notifications/Manager.cpp - src/notifications/Manager.h - - src/dock/Dock.cpp - src/dock/Dock.h - - src/AliasEditModel.cpp - src/AliasEditModel.h - src/AvatarProvider.cpp - src/AvatarProvider.h - src/BlurhashProvider.cpp - src/BlurhashProvider.h - src/Cache.cpp - src/Cache.h - src/CacheCryptoStructs.h - src/CacheStructs.h - src/Cache_p.h - src/ChatPage.cpp - src/ChatPage.h - src/Clipboard.cpp - src/Clipboard.h - src/ColorImageProvider.cpp - src/ColorImageProvider.h - src/CombinedImagePackModel.cpp - src/CombinedImagePackModel.h - src/GridImagePackModel.cpp - src/GridImagePackModel.h - src/CommandCompleter.cpp - src/CommandCompleter.h - src/CompletionModelRoles.h - src/CompletionProxyModel.cpp - src/CompletionProxyModel.h - src/Config.h - src/EventAccessors.cpp - src/EventAccessors.h - src/FallbackAuth.cpp - src/FallbackAuth.h - src/ImagePackListModel.cpp - src/ImagePackListModel.h - src/InviteesModel.cpp - src/InviteesModel.h - src/JdenticonProvider.cpp - src/JdenticonProvider.h - src/Logging.cpp - src/Logging.h - src/LoginPage.cpp - src/LoginPage.h - src/MainWindow.cpp - src/MainWindow.h - src/MatrixClient.cpp - src/MatrixClient.h - src/MemberList.cpp - src/MemberList.h - src/MxcImageProvider.cpp - src/MxcImageProvider.h - src/PowerlevelsEditModels.cpp - src/PowerlevelsEditModels.h - src/ReadReceiptsModel.cpp - src/ReadReceiptsModel.h - src/ReCaptcha.cpp - src/ReCaptcha.h - src/RegisterPage.cpp - src/RegisterPage.h - src/RoomDirectoryModel.cpp - src/RoomDirectoryModel.h - src/RoomsModel.cpp - src/RoomsModel.h - src/SSOHandler.cpp - src/SSOHandler.h - src/SingleImagePackModel.cpp - src/SingleImagePackModel.h - src/TrayIcon.cpp - src/TrayIcon.h - src/UserSettingsPage.cpp - src/UserSettingsPage.h - src/UsersModel.cpp - src/UsersModel.h - src/Utils.cpp - src/Utils.h - - includes/jdenticoninterface.h - - src/main.cpp - ) + # Emoji + src/emoji/Provider.cpp + src/emoji/Provider.h + + # Timeline + src/timeline/CommunitiesModel.cpp + src/timeline/CommunitiesModel.h + src/timeline/DelegateChooser.cpp + src/timeline/DelegateChooser.h + src/timeline/EventStore.cpp + src/timeline/EventStore.h + src/timeline/EventDelegateChooser.cpp + src/timeline/EventDelegateChooser.h + src/timeline/InputBar.cpp + src/timeline/InputBar.h + src/timeline/Permissions.cpp + src/timeline/Permissions.h + src/timeline/PresenceEmitter.cpp + src/timeline/PresenceEmitter.h + src/timeline/Reaction.cpp + src/timeline/Reaction.h + src/timeline/RoomlistModel.cpp + src/timeline/RoomlistModel.h + src/timeline/TimelineFilter.cpp + src/timeline/TimelineFilter.h + src/timeline/TimelineModel.cpp + src/timeline/TimelineModel.h + src/timeline/TimelineViewManager.cpp + src/timeline/TimelineViewManager.h + + # UI components + src/ui/HiddenEvents.cpp + src/ui/HiddenEvents.h + src/ui/EventExpiry.cpp + src/ui/EventExpiry.h + src/ui/MxcAnimatedImage.cpp + src/ui/MxcAnimatedImage.h + src/ui/MxcMediaProxy.cpp + src/ui/MxcMediaProxy.h + src/ui/NhekoCursorShape.cpp + src/ui/NhekoCursorShape.h + src/ui/NhekoDropArea.cpp + src/ui/NhekoDropArea.h + src/ui/NhekoGlobalObject.cpp + src/ui/NhekoGlobalObject.h + src/ui/RoomSettings.cpp + src/ui/RoomSettings.h + src/ui/RoomSummary.cpp + src/ui/RoomSummary.h + src/ui/Theme.cpp + src/ui/Theme.h + src/ui/UIA.cpp + src/ui/UIA.h + src/ui/UserProfile.cpp + src/ui/UserProfile.h + + src/voip/CallDevices.cpp + src/voip/CallDevices.h + src/voip/CallManager.cpp + src/voip/CallManager.h + src/voip/ScreenCastPortal.cpp + src/voip/ScreenCastPortal.h + src/voip/WebRTCSession.h + src/voip/WebRTCSession.cpp + src/voip/WebRTCSession.h + + src/encryption/DeviceVerificationFlow.cpp + src/encryption/DeviceVerificationFlow.h + src/encryption/Olm.cpp + src/encryption/Olm.h + src/encryption/SelfVerificationStatus.cpp + src/encryption/SelfVerificationStatus.h + src/encryption/VerificationManager.cpp + src/encryption/VerificationManager.h + + # Generic notification stuff + src/notifications/Manager.cpp + src/notifications/Manager.h + + src/dock/Dock.cpp + src/dock/Dock.h + + src/AliasEditModel.cpp + src/AliasEditModel.h + src/AvatarProvider.cpp + src/AvatarProvider.h + src/BlurhashProvider.cpp + src/BlurhashProvider.h + src/Cache.cpp + src/Cache.h + src/CacheCryptoStructs.h + src/CacheStructs.h + src/Cache_p.h + src/ChatPage.cpp + src/ChatPage.h + src/Clipboard.cpp + src/Clipboard.h + src/ColorImageProvider.cpp + src/ColorImageProvider.h + src/CombinedImagePackModel.cpp + src/CombinedImagePackModel.h + src/GridImagePackModel.cpp + src/GridImagePackModel.h + src/CommandCompleter.cpp + src/CommandCompleter.h + src/CompletionModelRoles.h + src/CompletionProxyModel.cpp + src/CompletionProxyModel.h + src/Config.h + src/EventAccessors.cpp + src/EventAccessors.h + src/FallbackAuth.cpp + src/FallbackAuth.h + src/ImagePackListModel.cpp + src/ImagePackListModel.h + src/InviteesModel.cpp + src/InviteesModel.h + src/JdenticonProvider.cpp + src/JdenticonProvider.h + src/Logging.cpp + src/Logging.h + src/LoginPage.cpp + src/LoginPage.h + src/MainWindow.cpp + src/MainWindow.h + src/MatrixClient.cpp + src/MatrixClient.h + src/MemberList.cpp + src/MemberList.h + src/MxcImageProvider.cpp + src/MxcImageProvider.h + src/PowerlevelsEditModels.cpp + src/PowerlevelsEditModels.h + src/ReadReceiptsModel.cpp + src/ReadReceiptsModel.h + src/ReCaptcha.cpp + src/ReCaptcha.h + src/RegisterPage.cpp + src/RegisterPage.h + src/RoomDirectoryModel.cpp + src/RoomDirectoryModel.h + src/RoomsModel.cpp + src/RoomsModel.h + src/SSOHandler.cpp + src/SSOHandler.h + src/SingleImagePackModel.cpp + src/SingleImagePackModel.h + src/TrayIcon.cpp + src/TrayIcon.h + src/UserSettingsPage.cpp + src/UserSettingsPage.h + src/UsersModel.cpp + src/UsersModel.h + src/Utils.cpp + src/Utils.h + + includes/jdenticoninterface.h + + src/main.cpp +) include(FeatureSummary) - if(USE_BUNDLED_OPENSSL) - hunter_add_package_safe(OpenSSL) + hunter_add_package_safe(OpenSSL) endif() find_package(OpenSSL 1.1.0 REQUIRED) if(USE_BUNDLED_OLM) - include(FetchContent) - FetchContent_Declare( - Olm - GIT_REPOSITORY https://gitlab.matrix.org/matrix-org/olm.git - GIT_TAG 3.2.12 - ) - set(OLM_TESTS OFF CACHE INTERNAL "") - FetchContent_MakeAvailable(Olm) + include(FetchContent) + FetchContent_Declare( + Olm + GIT_REPOSITORY https://gitlab.matrix.org/matrix-org/olm.git + GIT_TAG 3.2.12 + ) + set(OLM_TESTS OFF CACHE INTERNAL "") + FetchContent_MakeAvailable(Olm) else() - find_package(Olm 3.2.7 REQUIRED) - set_package_properties(Olm PROPERTIES - DESCRIPTION "An implementation of the Double Ratchet cryptographic ratchet" - URL "https://git.matrix.org/git/olm/about/" - TYPE REQUIRED - ) + find_package(Olm 3.2.7 REQUIRED) + set_package_properties(Olm PROPERTIES + DESCRIPTION "An implementation of the Double Ratchet cryptographic ratchet" + URL "https://git.matrix.org/git/olm/about/" + TYPE REQUIRED + ) endif() if(USE_BUNDLED_SPDLOG) - hunter_add_package_safe(spdlog) + hunter_add_package_safe(spdlog) endif() find_package(spdlog 1.0.0 CONFIG REQUIRED) if(USE_BUNDLED_CMARK) - include(FetchContent) - FetchContent_Declare( - cmark - GIT_REPOSITORY https://github.com/commonmark/cmark.git - GIT_TAG 0.30.2 - CMAKE_ARGS "CMARK_STATIC=ON CMARK_SHARED=OFF CMARK_TESTS=OFF CMARK_TESTS=OFF" - ) - FetchContent_MakeAvailable(cmark) - if (MSVC) - add_library(cmark::cmark ALIAS cmark) - else() - add_library(cmark::cmark ALIAS cmark_static) - endif() + include(FetchContent) + FetchContent_Declare( + cmark + GIT_REPOSITORY https://github.com/commonmark/cmark.git + GIT_TAG 0.30.2 + CMAKE_ARGS "CMARK_STATIC=ON CMARK_SHARED=OFF CMARK_TESTS=OFF CMARK_TESTS=OFF" + ) + FetchContent_MakeAvailable(cmark) + if(MSVC) + add_library(cmark::cmark ALIAS cmark) + else() + add_library(cmark::cmark ALIAS cmark_static) + endif() else() - find_package(cmark REQUIRED 0.29.0) + find_package(cmark REQUIRED 0.29.0) endif() if(USE_BUNDLED_JSON) - hunter_add_package_safe(nlohmann_json) + hunter_add_package_safe(nlohmann_json) endif() find_package(nlohmann_json 3.2.0) set_package_properties(nlohmann_json PROPERTIES - DESCRIPTION "JSON for Modern C++, a C++11 header-only JSON class" - URL "https://nlohmann.github.io/json/" - TYPE REQUIRED - ) + DESCRIPTION "JSON for Modern C++, a C++11 header-only JSON class" + URL "https://nlohmann.github.io/json/" + TYPE REQUIRED +) if(USE_BUNDLED_LMDBXX) - include(FetchContent) - FetchContent_Declare( - lmdbxx - URL "https://raw.githubusercontent.com/hoytech/lmdbxx/1.0.0/lmdb++.h" - DOWNLOAD_NO_EXTRACT TRUE - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - ) - FetchContent_Populate(lmdbxx) - add_library(lmdbxx INTERFACE) - target_include_directories(lmdbxx INTERFACE ${lmdbxx_SOURCE_DIR}) - add_library(lmdbxx::lmdbxx ALIAS lmdbxx) + include(FetchContent) + FetchContent_Declare( + lmdbxx + URL "https://raw.githubusercontent.com/hoytech/lmdbxx/1.0.0/lmdb++.h" + DOWNLOAD_NO_EXTRACT TRUE + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + ) + FetchContent_Populate(lmdbxx) + add_library(lmdbxx INTERFACE) + target_include_directories(lmdbxx INTERFACE ${lmdbxx_SOURCE_DIR}) + add_library(lmdbxx::lmdbxx ALIAS lmdbxx) else() - if(NOT LMDBXX_INCLUDE_DIR) - find_path(LMDBXX_INCLUDE_DIR - NAMES lmdb++.h - PATHS /usr/include - /usr/local/include - $ENV{LIB_DIR}/include - $ENV{LIB_DIR}/include/lmdbxx) - - endif() - add_library(lmdbxx INTERFACE) - target_include_directories(lmdbxx INTERFACE ${LMDBXX_INCLUDE_DIR}) - add_library(lmdbxx::lmdbxx ALIAS lmdbxx) + if(NOT LMDBXX_INCLUDE_DIR) + find_path(LMDBXX_INCLUDE_DIR + NAMES lmdb++.h + PATHS /usr/include + /usr/local/include + $ENV{LIB_DIR}/include + $ENV{LIB_DIR}/include/lmdbxx) + endif() + add_library(lmdbxx INTERFACE) + target_include_directories(lmdbxx INTERFACE ${LMDBXX_INCLUDE_DIR}) + add_library(lmdbxx::lmdbxx ALIAS lmdbxx) endif() if(USE_BUNDLED_MTXCLIENT) - include(FetchContent) - FetchContent_Declare( - MatrixClient - GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git - GIT_TAG 8936559c00542528a7776d774fccb7ff674c9c7f - ) - set(BUILD_LIB_EXAMPLES OFF CACHE INTERNAL "") - set(BUILD_LIB_TESTS OFF CACHE INTERNAL "") - FetchContent_MakeAvailable(MatrixClient) + include(FetchContent) + FetchContent_Declare( + MatrixClient + GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git + GIT_TAG f878e29420c037f45b575fbd29a11cabce3c010a + ) + set(BUILD_LIB_EXAMPLES OFF CACHE INTERNAL "") + set(BUILD_LIB_TESTS OFF CACHE INTERNAL "") + FetchContent_MakeAvailable(MatrixClient) else() - find_package(MatrixClient 0.9.0 REQUIRED) + find_package(MatrixClient 0.9.0 REQUIRED) endif() -if (VOIP) - include(FindPkgConfig) - pkg_check_modules(GSTREAMER REQUIRED IMPORTED_TARGET gstreamer-sdp-1.0>=1.18 gstreamer-webrtc-1.0>=1.18) +if(VOIP) + include(FindPkgConfig) + pkg_check_modules(GSTREAMER REQUIRED IMPORTED_TARGET gstreamer-sdp-1.0>=1.18 gstreamer-webrtc-1.0>=1.18) endif() -if (X11 AND NOT WIN32 AND NOT APPLE AND NOT HAIKU) - pkg_check_modules(XCB REQUIRED IMPORTED_TARGET xcb xcb-ewmh) +if(X11 AND NOT WIN32 AND NOT APPLE AND NOT HAIKU) + pkg_check_modules(XCB REQUIRED IMPORTED_TARGET xcb xcb-ewmh) endif() # single instance functionality @@ -624,309 +620,315 @@ add_subdirectory(third_party/SingleApplication-3.3.2/) feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) # this must be defined here to make the moc work properly -if (NOT APPLE AND NOT WIN32) - add_compile_definitions(NHEKO_DBUS_SYS) +if(NOT APPLE AND NOT WIN32) + add_compile_definitions(NHEKO_DBUS_SYS) endif() # # Bundle resources # if(Qt6QuickCompiler_FOUND AND COMPILE_QML) - qtquick_compiler_add_resources(QRC resources/res.qrc) + qtquick_compiler_add_resources(QRC resources/res.qrc) +else() + qt_add_resources(QRC resources/res.qrc) +endif() + +if(APPLE) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Foundation -framework Cocoa -framework UserNotifications") + set(SRC_FILES ${SRC_FILES} src/notifications/NotificationManagerProxy.h src/notifications/MacNotificationDelegate.h src/notifications/MacNotificationDelegate.mm src/notifications/ManagerMac.mm src/notifications/ManagerMac.cpp src/emoji/MacHelper.mm src/emoji/MacHelper.h) + if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16.0") + set_source_files_properties( src/notifications/NotificationManagerProxy.h src/notifications/MacNotificationDelegate.h src/notifications/MacNotificationDelegate.mm src/notifications/ManagerMac.mm src/emoji/MacHelper.mm src/emoji/MacHelper.h PROPERTIES SKIP_PRECOMPILE_HEADERS ON) + endif() +elseif(WIN32) + file(DOWNLOAD + "https://raw.githubusercontent.com/mohabouje/WinToast/41ed1c58d5dce0ee9c01dbdeac05be45358d4f57/src/wintoastlib.cpp" + ${PROJECT_SOURCE_DIR}/src/wintoastlib.cpp + EXPECTED_HASH SHA256=1A1A7CE41C1052B12946798F4A6C67CE1FAD209C967F5ED4D720B173527E2073) + + file(DOWNLOAD + "https://raw.githubusercontent.com/mohabouje/WinToast/41ed1c58d5dce0ee9c01dbdeac05be45358d4f57/src/wintoastlib.h" + ${PROJECT_SOURCE_DIR}/src/wintoastlib.h + EXPECTED_HASH SHA256=b4481023c5782733795838be22bf1a75f45d87458cd4d9a5a75f664a146eea11) + + set(SRC_FILES ${SRC_FILES} src/notifications/ManagerWin.cpp src/wintoastlib.cpp src/wintoastlib.h) else() - qt_add_resources(QRC resources/res.qrc) -endif() - -if (APPLE) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Foundation -framework Cocoa -framework UserNotifications") - set(SRC_FILES ${SRC_FILES} src/notifications/NotificationManagerProxy.h src/notifications/MacNotificationDelegate.h src/notifications/MacNotificationDelegate.mm src/notifications/ManagerMac.mm src/notifications/ManagerMac.cpp src/emoji/MacHelper.mm src/emoji/MacHelper.h) - if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16.0") - set_source_files_properties( src/notifications/NotificationManagerProxy.h src/notifications/MacNotificationDelegate.h src/notifications/MacNotificationDelegate.mm src/notifications/ManagerMac.mm src/emoji/MacHelper.mm src/emoji/MacHelper.h PROPERTIES SKIP_PRECOMPILE_HEADERS ON) - endif() -elseif (WIN32) - file(DOWNLOAD - "https://raw.githubusercontent.com/mohabouje/WinToast/41ed1c58d5dce0ee9c01dbdeac05be45358d4f57/src/wintoastlib.cpp" - ${PROJECT_SOURCE_DIR}/src/wintoastlib.cpp - EXPECTED_HASH SHA256=1A1A7CE41C1052B12946798F4A6C67CE1FAD209C967F5ED4D720B173527E2073) - - file(DOWNLOAD - "https://raw.githubusercontent.com/mohabouje/WinToast/41ed1c58d5dce0ee9c01dbdeac05be45358d4f57/src/wintoastlib.h" - ${PROJECT_SOURCE_DIR}/src/wintoastlib.h - EXPECTED_HASH SHA256=b4481023c5782733795838be22bf1a75f45d87458cd4d9a5a75f664a146eea11) - - set(SRC_FILES ${SRC_FILES} src/notifications/ManagerWin.cpp src/wintoastlib.cpp src/wintoastlib.h) -else () - set(SRC_FILES ${SRC_FILES} + set(SRC_FILES ${SRC_FILES} src/dbus/NhekoDBusApi.h src/dbus/NhekoDBusBackend.h src/dbus/NhekoDBusApi.cpp src/dbus/NhekoDBusBackend.cpp src/notifications/ManagerLinux.cpp - ) -endif () + ) +endif() set(NHEKO_DEPS - ${SRC_FILES} - ${QRC} - ${META_FILES_TO_INCLUDE}) + ${SRC_FILES} + ${QRC} + ${META_FILES_TO_INCLUDE}) if(ASAN) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address,undefined") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address,undefined") endif() if(WIN32) - qt_add_executable (nheko WIN32 ${OS_BUNDLE} ${NHEKO_DEPS}) - target_compile_definitions(nheko PRIVATE _WIN32_WINNT=0x0601 NOMINMAX WIN32_LEAN_AND_MEAN STRICT) + qt_add_executable(nheko WIN32 ${OS_BUNDLE} ${NHEKO_DEPS}) + target_compile_definitions(nheko PRIVATE _WIN32_WINNT=0x0601 NOMINMAX WIN32_LEAN_AND_MEAN STRICT) else() - qt_add_executable (nheko ${OS_BUNDLE} ${NHEKO_DEPS}) + qt_add_executable(nheko ${OS_BUNDLE} ${NHEKO_DEPS}) - if (HAVE_BACKTRACE_SYMBOLS_FD AND NOT CMAKE_BUILD_TYPE STREQUAL "Release") - set_target_properties(nheko PROPERTIES ENABLE_EXPORTS ON) - endif() + if(HAVE_BACKTRACE_SYMBOLS_FD AND NOT CMAKE_BUILD_TYPE STREQUAL "Release") + set_target_properties(nheko PROPERTIES ENABLE_EXPORTS ON) + endif() endif() set_target_properties(nheko - PROPERTIES - CMAKE_SKIP_INSTALL_RPATH TRUE - AUTOMOC ON) + PROPERTIES + CMAKE_SKIP_INSTALL_RPATH TRUE + AUTOMOC ON) # # Add qml files # set(QML_SOURCES - resources/qml/Root.qml - resources/qml/ChatPage.qml - resources/qml/CommunitiesList.qml - resources/qml/RoomList.qml - resources/qml/TimelineView.qml - resources/qml/Avatar.qml - resources/qml/Completer.qml - resources/qml/EncryptionIndicator.qml - resources/qml/ImageButton.qml - resources/qml/ElidedLabel.qml - resources/qml/MatrixText.qml - resources/qml/MatrixTextField.qml - resources/qml/ToggleButton.qml - resources/qml/UploadBox.qml - resources/qml/MessageInput.qml - resources/qml/MessageView.qml - resources/qml/PrivacyScreen.qml - resources/qml/Reactions.qml - resources/qml/ReplyPopup.qml - resources/qml/StatusIndicator.qml - resources/qml/TimelineRow.qml - resources/qml/TopBar.qml - resources/qml/QuickSwitcher.qml - resources/qml/ForwardCompleter.qml - resources/qml/SelfVerificationCheck.qml - resources/qml/TypingIndicator.qml - resources/qml/MessageInputWarning.qml - resources/qml/components/AdaptiveLayout.qml - resources/qml/components/AdaptiveLayoutElement.qml - resources/qml/components/AvatarListTile.qml - resources/qml/components/FlatButton.qml - resources/qml/components/MainWindowDialog.qml - resources/qml/components/NhekoTabButton.qml - resources/qml/components/NotificationBubble.qml - resources/qml/components/PowerlevelIndicator.qml - resources/qml/components/ReorderableListview.qml - resources/qml/components/SpaceMenuLevel.qml - resources/qml/components/TextButton.qml - resources/qml/components/UserListRow.qml - resources/qml/delegates/Encrypted.qml - resources/qml/delegates/FileMessage.qml - resources/qml/delegates/ImageMessage.qml - resources/qml/delegates/MessageDelegate.qml - resources/qml/delegates/NoticeMessage.qml - resources/qml/delegates/Pill.qml - resources/qml/delegates/Placeholder.qml - resources/qml/delegates/PlayableMediaMessage.qml - resources/qml/delegates/Redacted.qml - resources/qml/delegates/Reply.qml - resources/qml/delegates/TextMessage.qml - resources/qml/device-verification/DeviceVerification.qml - resources/qml/device-verification/DigitVerification.qml - resources/qml/device-verification/EmojiVerification.qml - resources/qml/device-verification/Failed.qml - resources/qml/device-verification/NewVerificationRequest.qml - resources/qml/device-verification/Success.qml - resources/qml/device-verification/Waiting.qml - resources/qml/dialogs/AliasEditor.qml - resources/qml/dialogs/ConfirmJoinRoomDialog.qml - resources/qml/dialogs/CreateDirect.qml - resources/qml/dialogs/CreateRoom.qml - resources/qml/dialogs/FallbackAuthDialog.qml - resources/qml/dialogs/HiddenEventsDialog.qml - resources/qml/dialogs/EventExpirationDialog.qml - resources/qml/dialogs/ImageOverlay.qml - resources/qml/dialogs/ImagePackEditorDialog.qml - resources/qml/dialogs/ImagePackSettingsDialog.qml - resources/qml/dialogs/InputDialog.qml - resources/qml/dialogs/InviteDialog.qml - resources/qml/dialogs/JoinRoomDialog.qml - resources/qml/dialogs/LeaveRoomDialog.qml - resources/qml/dialogs/LogoutDialog.qml - resources/qml/dialogs/PhoneNumberInputDialog.qml - resources/qml/dialogs/PowerLevelEditor.qml - resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml - resources/qml/dialogs/RawMessageDialog.qml - resources/qml/dialogs/ReadReceipts.qml - resources/qml/dialogs/ReCaptchaDialog.qml - resources/qml/dialogs/RoomDirectory.qml - resources/qml/dialogs/RoomMembers.qml - resources/qml/dialogs/AllowedRoomsSettingsDialog.qml - resources/qml/dialogs/RoomSettings.qml - resources/qml/dialogs/UserProfile.qml - resources/qml/emoji/StickerPicker.qml - resources/qml/pages/LoginPage.qml - resources/qml/pages/RegisterPage.qml - resources/qml/pages/UserSettingsPage.qml - resources/qml/pages/WelcomePage.qml - resources/qml/ui/NhekoSlider.qml - resources/qml/ui/Ripple.qml - resources/qml/ui/Snackbar.qml - resources/qml/ui/Spinner.qml - resources/qml/ui/animations/BlinkAnimation.qml - resources/qml/ui/media/MediaControls.qml - resources/qml/voip/ActiveCallBar.qml - resources/qml/voip/CallDevices.qml - resources/qml/voip/CallInvite.qml - resources/qml/voip/CallInviteBar.qml - resources/qml/voip/DeviceError.qml - resources/qml/voip/PlaceCall.qml - resources/qml/voip/ScreenShare.qml - resources/qml/voip/VideoCall.qml - resources/qml/delegates/EncryptionEnabled.qml - resources/qml/ui/TimelineEffects.qml + resources/qml/Root.qml + resources/qml/ChatPage.qml + resources/qml/CommunitiesList.qml + resources/qml/RoomList.qml + resources/qml/Avatar.qml + resources/qml/Completer.qml + resources/qml/EncryptionIndicator.qml + resources/qml/ImageButton.qml + resources/qml/ElidedLabel.qml + resources/qml/MatrixText.qml + resources/qml/MatrixTextField.qml + resources/qml/ToggleButton.qml + resources/qml/UploadBox.qml + resources/qml/MessageInput.qml + resources/qml/MessageView.qml + resources/qml/PrivacyScreen.qml + resources/qml/Reactions.qml + resources/qml/ReplyPopup.qml + resources/qml/StatusIndicator.qml + resources/qml/TimelineEvent.qml + resources/qml/TimelineSectionHeader.qml + resources/qml/TimelineDefaultMessageStyle.qml + resources/qml/TimelineBubbleMessageStyle.qml + resources/qml/TimelineMetadata.qml + resources/qml/TimelineView.qml + resources/qml/TopBar.qml + resources/qml/QuickSwitcher.qml + resources/qml/ForwardCompleter.qml + resources/qml/SelfVerificationCheck.qml + resources/qml/TypingIndicator.qml + resources/qml/MessageInputWarning.qml + resources/qml/components/AdaptiveLayout.qml + resources/qml/components/AdaptiveLayoutElement.qml + resources/qml/components/AvatarListTile.qml + resources/qml/components/FlatButton.qml + resources/qml/components/MainWindowDialog.qml + resources/qml/components/NhekoTabButton.qml + resources/qml/components/NotificationBubble.qml + resources/qml/components/PowerlevelIndicator.qml + resources/qml/components/ReorderableListview.qml + resources/qml/components/SpaceMenuLevel.qml + resources/qml/components/TextButton.qml + resources/qml/components/UserListRow.qml + resources/qml/delegates/Encrypted.qml + resources/qml/delegates/FileMessage.qml + resources/qml/delegates/ImageMessage.qml + resources/qml/delegates/NoticeMessage.qml + resources/qml/delegates/Pill.qml + resources/qml/delegates/Placeholder.qml + resources/qml/delegates/PlayableMediaMessage.qml + resources/qml/delegates/Redacted.qml + resources/qml/delegates/Reply.qml + resources/qml/delegates/TextMessage.qml + resources/qml/device-verification/DeviceVerification.qml + resources/qml/device-verification/DigitVerification.qml + resources/qml/device-verification/EmojiVerification.qml + resources/qml/device-verification/Failed.qml + resources/qml/device-verification/NewVerificationRequest.qml + resources/qml/device-verification/Success.qml + resources/qml/device-verification/Waiting.qml + resources/qml/dialogs/AliasEditor.qml + resources/qml/dialogs/ConfirmJoinRoomDialog.qml + resources/qml/dialogs/CreateDirect.qml + resources/qml/dialogs/CreateRoom.qml + resources/qml/dialogs/FallbackAuthDialog.qml + resources/qml/dialogs/HiddenEventsDialog.qml + resources/qml/dialogs/EventExpirationDialog.qml + resources/qml/dialogs/ImageOverlay.qml + resources/qml/dialogs/ImagePackEditorDialog.qml + resources/qml/dialogs/ImagePackSettingsDialog.qml + resources/qml/dialogs/InputDialog.qml + resources/qml/dialogs/InviteDialog.qml + resources/qml/dialogs/JoinRoomDialog.qml + resources/qml/dialogs/LeaveRoomDialog.qml + resources/qml/dialogs/LogoutDialog.qml + resources/qml/dialogs/PhoneNumberInputDialog.qml + resources/qml/dialogs/PowerLevelEditor.qml + resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml + resources/qml/dialogs/RawMessageDialog.qml + resources/qml/dialogs/ReadReceipts.qml + resources/qml/dialogs/ReCaptchaDialog.qml + resources/qml/dialogs/ReportMessage.qml + resources/qml/dialogs/RoomDirectory.qml + resources/qml/dialogs/RoomMembers.qml + resources/qml/dialogs/AllowedRoomsSettingsDialog.qml + resources/qml/dialogs/RoomSettingsDialog.qml + resources/qml/dialogs/UserProfile.qml + resources/qml/dialogs/IgnoredUsers.qml + resources/qml/emoji/StickerPicker.qml + resources/qml/pages/LoginPage.qml + resources/qml/pages/RegisterPage.qml + resources/qml/pages/UserSettingsPage.qml + resources/qml/pages/WelcomePage.qml + resources/qml/ui/NhekoSlider.qml + resources/qml/ui/Ripple.qml + resources/qml/ui/Snackbar.qml + resources/qml/ui/Spinner.qml + resources/qml/ui/animations/BlinkAnimation.qml + resources/qml/ui/media/MediaControls.qml + resources/qml/voip/ActiveCallBar.qml + resources/qml/voip/CallDevices.qml + resources/qml/voip/CallInvite.qml + resources/qml/voip/CallInviteBar.qml + resources/qml/voip/DeviceError.qml + resources/qml/voip/PlaceCall.qml + resources/qml/voip/ScreenShare.qml + resources/qml/voip/VideoCall.qml + resources/qml/delegates/EncryptionEnabled.qml + resources/qml/ui/TimelineEffects.qml ) qt_add_qml_module(nheko - URI im.nheko - NO_RESOURCE_TARGET_PATH - RESOURCE_PREFIX "/" - VERSION 1.1 - DEPENDENCIES QtQml QtQuick # https://bugreports.qt.io/browse/QTBUG-102554 - QML_FILES - ${QML_SOURCES} - SOURCES - src/UserDirectoryModel.cpp - src/UserDirectoryModel.h - ) - #qt_target_qml_sources(nheko - # #PREFIX "/" - #) + URI im.nheko + NO_RESOURCE_TARGET_PATH + RESOURCE_PREFIX "/" + VERSION 1.1 + DEPENDENCIES QtQuick QtQml.Models + QML_FILES + ${QML_SOURCES} + SOURCES + src/UserDirectoryModel.cpp + src/UserDirectoryModel.h +) + #qt_target_qml_sources(nheko + # #PREFIX "/" + #) +#set_target_properties(nheko PROPERTIES +# QT_QMLCACHEGEN_ARGUMENTS "--verbose" +#) # # Bundle translations # file(GLOB LANG_TS_SRC "${CMAKE_CURRENT_SOURCE_DIR}/resources/langs/*.ts") qt_add_translations(nheko RESOURCE_PREFIX "/translations" TS_FILES - ${LANG_TS_SRC} SOURCES ${QML_SOURCES} ${SRC_FILES}) - + ${LANG_TS_SRC} SOURCES ${QML_SOURCES} ${SRC_FILES}) if(WIN32) - target_compile_definitions(nheko PRIVATE WIN32_LEAN_AND_MEAN) - if(MSVC) - target_compile_options(nheko PUBLIC "/Zc:__cplusplus") - endif() + target_compile_definitions(nheko PRIVATE WIN32_LEAN_AND_MEAN) + if(MSVC) + target_compile_options(nheko PUBLIC "/Zc:__cplusplus") + endif() else() - target_link_libraries (nheko PRIVATE Qt6::DBus) - if (FLATPAK) - target_compile_definitions(nheko PRIVATE NHEKO_FLATPAK) - endif() + target_link_libraries(nheko PRIVATE Qt6::DBus) + if(FLATPAK) + target_compile_definitions(nheko PRIVATE NHEKO_FLATPAK) + endif() endif() target_include_directories(nheko PRIVATE src includes src/timeline/ src/ui/ src/encryption/ src/voip/) -if (USE_BUNDLED_CPPHTTPLIB) - target_include_directories(nheko PRIVATE third_party/cpp-httplib-0.5.12) - target_sources(nheko PRIVATE third_party/cpp-httplib-0.5.12/httplib.h) +if(USE_BUNDLED_CPPHTTPLIB) + target_include_directories(nheko PRIVATE third_party/cpp-httplib-0.5.12) + target_sources(nheko PRIVATE third_party/cpp-httplib-0.5.12/httplib.h) else() - find_package(httplib REQUIRED) - target_link_libraries(nheko PRIVATE httplib::httplib) + find_package(httplib REQUIRED) + target_link_libraries(nheko PRIVATE httplib::httplib) endif() -if (USE_BUNDLED_BLURHASH) - target_include_directories(nheko PRIVATE third_party/blurhash) - set(BLURHASH_SRC_FILES - third_party/blurhash/blurhash.cpp - third_party/blurhash/blurhash.hpp - ) - target_sources(nheko PRIVATE ${BLURHASH_SRC_FILES}) +if(USE_BUNDLED_BLURHASH) + target_include_directories(nheko PRIVATE third_party/blurhash) + set(BLURHASH_SRC_FILES + third_party/blurhash/blurhash.cpp + third_party/blurhash/blurhash.hpp + ) + target_sources(nheko PRIVATE ${BLURHASH_SRC_FILES}) else() - find_package(PkgConfig REQUIRED) - pkg_check_modules(blurhash REQUIRED IMPORTED_TARGET blurhash) - target_link_libraries(nheko PRIVATE PkgConfig::blurhash) + find_package(PkgConfig REQUIRED) + pkg_check_modules(blurhash REQUIRED IMPORTED_TARGET blurhash) + target_link_libraries(nheko PRIVATE PkgConfig::blurhash) endif() # Fixup bundled keychain include dirs -if (USE_BUNDLED_QTKEYCHAIN) - target_include_directories(nheko PRIVATE ${qt6keychain_SOURCE_DIR} ${qt6keychain_BINARY_DIR}) +if(USE_BUNDLED_QTKEYCHAIN) + target_include_directories(nheko PRIVATE ${qt6keychain_SOURCE_DIR} ${qt6keychain_BINARY_DIR}) endif() -if (NOT JSON_ImplicitConversions) - set_target_properties(nlohmann_json::nlohmann_json PROPERTIES - INTERFACE_COMPILE_DEFINITIONS "JSON_USE_IMPLICIT_CONVERSIONS=\$<BOOL:OFF>;JSON_DIAGNOSTICS=\$<BOOL:OFF>" - ) - target_compile_definitions(nheko PUBLIC JSON_USE_IMPLICIT_CONVERSIONS=0) +if(NOT JSON_ImplicitConversions) + set_target_properties(nlohmann_json::nlohmann_json PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "JSON_USE_IMPLICIT_CONVERSIONS=\$<BOOL:OFF>;JSON_DIAGNOSTICS=\$<BOOL:OFF>" + ) + target_compile_definitions(nheko PUBLIC JSON_USE_IMPLICIT_CONVERSIONS=0) endif() target_link_libraries(nheko PRIVATE - ${COEURL_TARGET_NAME} - MatrixClient::MatrixClient - cmark::cmark - spdlog::spdlog - Qt::Widgets - Qt::Svg - Qt::Gui - Qt::Multimedia - Qt::Qml - Qt::QuickControls2 - qt6keychain - nlohmann_json::nlohmann_json - lmdbxx::lmdbxx - liblmdb::lmdb - SingleApplication::SingleApplication) + ${COEURL_TARGET_NAME} + MatrixClient::MatrixClient + cmark::cmark + spdlog::spdlog + Qt::Widgets + Qt::Svg + Qt::Gui + Qt::Multimedia + Qt::Qml + Qt::QmlPrivate + Qt::QuickControls2 + qt6keychain + nlohmann_json::nlohmann_json + lmdbxx::lmdbxx + liblmdb::lmdb + SingleApplication::SingleApplication) if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16.0") - target_precompile_headers(nheko - PRIVATE - <string> - <algorithm> - ) + target_precompile_headers(nheko + PRIVATE + <string> + <algorithm> + ) endif() -if (TARGET PkgConfig::GSTREAMER) - target_link_libraries(nheko PRIVATE PkgConfig::GSTREAMER) - target_compile_definitions(nheko PRIVATE GSTREAMER_AVAILABLE) +if(TARGET PkgConfig::GSTREAMER) + target_link_libraries(nheko PRIVATE PkgConfig::GSTREAMER) + target_compile_definitions(nheko PRIVATE GSTREAMER_AVAILABLE) endif() -if (TARGET PkgConfig::XCB) - target_link_libraries(nheko PRIVATE PkgConfig::XCB) - target_compile_definitions(nheko PRIVATE XCB_AVAILABLE) +if(TARGET PkgConfig::XCB) + target_link_libraries(nheko PRIVATE PkgConfig::XCB) + target_compile_definitions(nheko PRIVATE XCB_AVAILABLE) endif() if(MSVC) - target_link_libraries(nheko PRIVATE ntdll) + target_link_libraries(nheko PRIVATE ntdll) endif() - if(QML_DEBUGGING) - target_compile_definitions(nheko PRIVATE QML_DEBUGGING) + target_compile_definitions(nheko PRIVATE QML_DEBUGGING) endif() - if(NOT MSVC AND NOT HAIKU) - if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug" OR CI_BUILD) - target_compile_options(nheko PRIVATE "-Werror") - endif() + if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug" OR CI_BUILD) + target_compile_options(nheko PRIVATE "-Werror") + endif() endif() #if(NOT MSVC) -# target_link_options(nheko PRIVATE "LINKER:,--gc-sections") +# target_link_options(nheko PRIVATE "LINKER:,--gc-sections") #endif() if(MAN) - add_subdirectory(man) + add_subdirectory(man) endif() # potential workaround for macdeployqt issues @@ -940,39 +942,40 @@ if(APPLE) OUTPUT_SCRIPT deploy_script NO_UNSUPPORTED_PLATFORM_ERROR ) - install(SCRIPT ${deploy_script}) + install(SCRIPT ${deploy_script}) endif() if(UNIX AND NOT APPLE) - if(FLATPAK) - set(APPID "im.nheko.Nheko") - set_target_properties(nheko PROPERTIES OUTPUT_NAME "${APPID}") - else() - set(APPID "nheko") - endif() - - install (TARGETS nheko RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") - install (FILES "resources/nheko-16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "${APPID}.png") - install (FILES "resources/nheko-32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "${APPID}.png") - install (FILES "resources/nheko-48.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/48x48/apps" RENAME "${APPID}.png") - install (FILES "resources/nheko-64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps" RENAME "${APPID}.png") - install (FILES "resources/nheko-128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "${APPID}.png") - install (FILES "resources/nheko-256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "${APPID}.png") - install (FILES "resources/nheko-512.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/512x512/apps" RENAME "${APPID}.png") - install (FILES "resources/nheko.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps" RENAME "${APPID}.svg") - install (FILES "resources/_nheko" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/zsh/site-functions") - - configure_file("resources/nheko.desktop.in" "resources/nheko.desktop" @ONLY) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/resources/nheko.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications" RENAME "${APPID}.desktop") - configure_file("resources/nheko.appdata.xml.in" "resources/nheko.appdata.xml" @ONLY) - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/resources/nheko.appdata.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo" RENAME "${APPID}.appdata.xml") - - if(NOT TARGET uninstall) - configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY) - add_custom_target(uninstall - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) - endif() -endif() + if(FLATPAK) + set(APPID "im.nheko.Nheko") + set_target_properties(nheko PROPERTIES OUTPUT_NAME "${APPID}") + else() + set(APPID "nheko") + endif() + + install(TARGETS nheko RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + install(FILES "resources/nheko-16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "${APPID}.png") + install(FILES "resources/nheko-32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "${APPID}.png") + install(FILES "resources/nheko-48.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/48x48/apps" RENAME "${APPID}.png") + install(FILES "resources/nheko-64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps" RENAME "${APPID}.png") + install(FILES "resources/nheko-128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "${APPID}.png") + install(FILES "resources/nheko-256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "${APPID}.png") + install(FILES "resources/nheko-512.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/512x512/apps" RENAME "${APPID}.png") + install(FILES "resources/nheko.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps" RENAME "${APPID}.svg") + install(FILES "resources/_nheko" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/zsh/site-functions") + + configure_file("resources/nheko.desktop.in" "resources/nheko.desktop" @ONLY) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/resources/nheko.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications" RENAME "${APPID}.desktop") + configure_file("resources/nheko.appdata.xml.in" "resources/nheko.appdata.xml" @ONLY) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/resources/nheko.appdata.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo" RENAME "${APPID}.appdata.xml") + + if(NOT TARGET uninstall) + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY) + add_custom_target(uninstall + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) + endif() +endif() +# vim: tabstop=4 shiftwidth=4 expandtab diff --git a/im.nheko.Nheko.yaml b/im.nheko.Nheko.yaml index 57772a0c..8014f055 100644 --- a/im.nheko.Nheko.yaml +++ b/im.nheko.Nheko.yaml @@ -1,7 +1,7 @@ id: im.nheko.Nheko command: im.nheko.Nheko runtime: org.kde.Platform -runtime-version: '6.5' +runtime-version: '6.6' sdk: org.kde.Sdk finish-args: - --device=dri @@ -202,8 +202,8 @@ modules: - -Ddefault_library=static name: coeurl sources: - - commit: 2a20a129240a1a017b37b6874faab499ca4e523b - tag: v0.3.0 + - commit: 3007387745cf84138d0855e0f04ff94261fc7175 + #tag: v0.3.0 type: git url: https://nheko.im/nheko-reborn/coeurl.git - config-opts: @@ -214,7 +214,7 @@ modules: buildsystem: cmake-ninja name: mtxclient sources: - - commit: 8936559c00542528a7776d774fccb7ff674c9c7f + - commit: 6e01c75fccc2724fcdfe7a7b1a13547522eb8753 #tag: v0.9.2 type: git url: https://github.com/Nheko-Reborn/mtxclient.git diff --git a/man/nheko.1.adoc b/man/nheko.1.adoc index 8327a061..cc4b8f74 100644 --- a/man/nheko.1.adoc +++ b/man/nheko.1.adoc @@ -58,6 +58,10 @@ Creates a unique profile, which allows you to log into several accounts at the same time and start multiple instances of nheko. Use _default_ to start with the default profile. +*-C*, *--compact*:: +Allows shrinking the database, since LMDB databases don't automatically shrink +when data is deleted. Possibly allows some recovery on database corruption. + == FAQ === How do I add stickers and custom emojis? diff --git a/resources/langs/nheko_ar.ts b/resources/langs/nheko_ar.ts index 8e2e40ba..206e20ea 100644 --- a/resources/langs/nheko_ar.ts +++ b/resources/langs/nheko_ar.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation type="unfinished"></translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -212,7 +218,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -236,12 +242,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -254,7 +260,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -269,7 +275,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation type="unfinished"></translation> </message> @@ -295,12 +301,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation type="unfinished"></translation> </message> @@ -345,12 +351,12 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation type="unfinished"></translation> </message> @@ -372,7 +378,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -390,7 +396,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation type="unfinished"></translation> </message> @@ -743,7 +749,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -753,7 +759,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -839,7 +845,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -884,7 +890,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -980,7 +986,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation type="unfinished"></translation> </message> @@ -1008,7 +1014,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation type="unfinished"></translation> </message> @@ -1059,7 +1065,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1094,7 +1100,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1102,12 +1108,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1251,6 +1257,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1324,6 +1358,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1503,8 +1555,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1544,7 +1596,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished"></translation> </message> @@ -1561,7 +1613,7 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1641,14 +1693,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> + <source>e.g @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1679,13 +1731,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1702,7 +1754,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1727,120 +1779,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1891,7 +1829,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1926,12 +1864,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1941,24 +1874,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2018,7 +1951,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2041,7 +1979,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2261,7 +2199,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2318,9 +2256,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2511,7 +2467,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2529,7 +2485,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2554,6 +2510,11 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation type="unfinished"></translation> @@ -2691,7 +2652,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2735,7 +2696,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished"></translation> </message> @@ -2751,6 +2712,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2758,7 +2767,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2767,6 +2786,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2819,7 +2843,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished"></translation> </message> @@ -2844,7 +2868,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2867,7 +2911,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2883,6 +2927,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2930,12 +2979,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2978,22 +3027,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation type="unfinished"></translation> </message> @@ -3046,8 +3080,11 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3084,7 +3121,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3263,13 +3300,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3355,7 +3386,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3447,7 +3478,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3535,7 +3566,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3643,7 +3674,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3659,15 +3690,95 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3721,7 +3832,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3731,7 +3842,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3751,7 +3862,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3910,7 +4021,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3981,7 +4092,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation type="unfinished"></translation> </message> @@ -4041,22 +4152,82 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+998"/> + <location line="+1019"/> <source>%1 made this room require an invitation to join.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+654"/> + <location line="+618"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4083,23 +4254,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation type="unfinished"></translation> </message> @@ -4209,7 +4374,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4264,7 +4429,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4290,24 +4455,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4315,7 +4480,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4330,7 +4495,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4340,7 +4505,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -4360,7 +4530,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4411,12 +4581,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4432,11 +4602,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished"></translation> </message> @@ -4469,8 +4649,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4569,6 +4749,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished"></translation> </message> @@ -4759,6 +4949,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4823,7 +5018,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4917,6 +5112,11 @@ If this is on, rooms that come first alphabetically will be sorted earlier than </message> <message> <location line="+8"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4952,28 +5152,28 @@ OFF - square, ON - circle.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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> </message> <message> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation type="unfinished"></translation> </message> <message> - <location line="-350"/> + <location line="-366"/> <source>Communities sidebar</source> <translation type="unfinished"></translation> </message> <message> - <location line="+42"/> + <location line="+46"/> <source>Show message counts for communities and tags</source> <translation type="unfinished"></translation> </message> <message> - <location line="+241"/> + <location line="+251"/> <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source> <translation type="unfinished"></translation> </message> @@ -4990,7 +5190,7 @@ Warning: If your homeserver does not support this, your rooms will never be mark <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+15"/> <source>Display an identicon instead of a letter when no avatar is set.</source> <translation type="unfinished"></translation> </message> @@ -5044,7 +5244,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5076,7 +5276,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished"></translation> </message> @@ -5131,7 +5346,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5161,7 +5376,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5244,29 +5469,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_ca.ts b/resources/langs/nheko_ca.ts index d7d161bf..7f3f2f95 100644 --- a/resources/langs/nheko_ca.ts +++ b/resources/langs/nheko_ca.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation type="unfinished"></translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -237,12 +243,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -251,7 +257,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -288,7 +294,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> + <location line="+22"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -306,7 +312,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation type="unfinished"></translation> </message> @@ -363,12 +369,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+30"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation type="unfinished"></translation> </message> @@ -438,7 +444,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> @@ -735,7 +741,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -745,7 +751,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -831,7 +837,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -872,7 +878,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -996,7 +1002,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation type="unfinished"></translation> </message> @@ -1047,7 +1053,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1082,7 +1088,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1090,12 +1096,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1239,6 +1245,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1312,6 +1346,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1491,8 +1543,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1532,7 +1584,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished"></translation> </message> @@ -1551,14 +1603,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> + <source>e.g @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1589,13 +1641,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1613,7 +1665,7 @@ Example: https://server.my:8787</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1690,7 +1742,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1715,120 +1767,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1879,7 +1817,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1914,12 +1852,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1929,24 +1862,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2006,7 +1939,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2029,7 +1967,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2249,7 +2187,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2306,9 +2244,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2499,7 +2455,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2517,7 +2473,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2542,6 +2498,11 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation type="unfinished"></translation> @@ -2624,7 +2585,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2723,7 +2684,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished"></translation> </message> @@ -2739,6 +2700,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2746,7 +2755,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2755,6 +2774,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2807,7 +2831,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished"></translation> </message> @@ -2832,7 +2856,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2855,7 +2899,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2871,6 +2915,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2918,12 +2967,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2962,45 +3011,64 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> + <location line="+92"/> + <source>This room is not encrypted!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>This user is verified.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Moderator: %1</source> + <source>This user isn't verified, but is still using the same master key from the first time you met.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>User: %1</source> + <source>This user has unverified devices!</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>RoomSettings</name> <message> - <location line="+20"/> - <source>This room is not encrypted!</source> + <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> + <source>Failed to enable encryption: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>This user is verified.</source> + <location line="+404"/> + <source>Select an avatar</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user isn't verified, but is still using the same master key from the first time you met.</source> + <location line="+0"/> + <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user has unverified devices!</source> + <location line="+12"/> + <source>The selected file is not an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Error while reading file: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <location line="+19"/> + <source>Failed to upload image: %s</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>RoomSettings</name> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3033,7 +3101,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3212,13 +3280,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3277,37 +3339,6 @@ Example: https://server.my:8787</source> <source>show more</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> - <source>Failed to enable encryption: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+404"/> - <source>Select an avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>All Files (*)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>The selected file is not an image</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Error while reading file: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+32"/> - <location line="+19"/> - <source>Failed to upload image: %s</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>RoomlistModel</name> @@ -3335,7 +3366,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3427,7 +3458,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3515,7 +3546,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3623,7 +3654,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3639,20 +3670,160 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1251"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+711"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+250"/> + <location line="+265"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3707,7 +3878,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3717,7 +3888,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3737,7 +3908,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3880,7 +4051,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3951,12 +4122,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4043,23 +4214,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation type="unfinished"></translation> </message> @@ -4165,7 +4330,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4220,7 +4385,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4246,24 +4411,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4271,7 +4436,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4282,7 +4447,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4333,12 +4498,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4354,11 +4519,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished"></translation> </message> @@ -4388,7 +4563,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4398,7 +4573,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -4421,8 +4601,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4526,6 +4706,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished"></translation> </message> @@ -4721,6 +4911,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4785,7 +4980,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4896,6 +5091,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4991,7 +5191,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5028,7 +5228,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished"></translation> </message> @@ -5083,7 +5298,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5113,7 +5328,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5196,29 +5421,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_cs.ts b/resources/langs/nheko_cs.ts index 36a551d1..d063405e 100644 --- a/resources/langs/nheko_cs.ts +++ b/resources/langs/nheko_cs.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation type="unfinished"></translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -209,7 +215,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -238,12 +244,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -253,7 +259,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -290,7 +296,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> + <location line="+22"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -308,7 +314,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation type="unfinished"></translation> </message> @@ -365,12 +371,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+30"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation type="unfinished"></translation> </message> @@ -440,7 +446,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> @@ -737,7 +743,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -747,7 +753,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -833,7 +839,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -875,7 +881,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -999,7 +1005,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation type="unfinished"></translation> </message> @@ -1050,7 +1056,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1085,7 +1091,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1093,12 +1099,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1242,6 +1248,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1315,6 +1349,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1494,8 +1546,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1535,7 +1587,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished"></translation> </message> @@ -1554,14 +1606,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> + <source>e.g @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1592,13 +1644,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1616,7 +1668,7 @@ Example: https://server.my:8787</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1693,7 +1745,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1718,120 +1770,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1882,7 +1820,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1917,12 +1855,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1932,24 +1865,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2009,7 +1942,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2032,7 +1970,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2252,7 +2190,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2309,9 +2247,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2502,7 +2458,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2520,7 +2476,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2545,6 +2501,11 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation type="unfinished"></translation> @@ -2627,7 +2588,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2726,7 +2687,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished"></translation> </message> @@ -2742,6 +2703,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2749,7 +2758,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2758,6 +2777,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2810,7 +2834,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished"></translation> </message> @@ -2835,7 +2859,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2858,7 +2902,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2874,6 +2918,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2921,12 +2970,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2966,45 +3015,64 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> + <location line="+92"/> + <source>This room is not encrypted!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>This user is verified.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Moderator: %1</source> + <source>This user isn't verified, but is still using the same master key from the first time you met.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>User: %1</source> + <source>This user has unverified devices!</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>RoomSettings</name> <message> - <location line="+20"/> - <source>This room is not encrypted!</source> + <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> + <source>Failed to enable encryption: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>This user is verified.</source> + <location line="+404"/> + <source>Select an avatar</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user isn't verified, but is still using the same master key from the first time you met.</source> + <location line="+0"/> + <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user has unverified devices!</source> + <location line="+12"/> + <source>The selected file is not an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Error while reading file: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <location line="+19"/> + <source>Failed to upload image: %s</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>RoomSettings</name> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3038,7 +3106,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3217,13 +3285,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3282,37 +3344,6 @@ Example: https://server.my:8787</source> <source>show more</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> - <source>Failed to enable encryption: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+404"/> - <source>Select an avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>All Files (*)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>The selected file is not an image</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Error while reading file: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+32"/> - <location line="+19"/> - <source>Failed to upload image: %s</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>RoomlistModel</name> @@ -3340,7 +3371,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3432,7 +3463,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3520,7 +3551,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3628,7 +3659,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3644,20 +3675,160 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1251"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+711"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+250"/> + <location line="+265"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3713,7 +3884,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3723,7 +3894,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3743,7 +3914,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3890,7 +4061,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3961,12 +4132,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4053,23 +4224,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation type="unfinished"></translation> </message> @@ -4176,7 +4341,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4231,7 +4396,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4257,24 +4422,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4282,7 +4447,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4294,7 +4459,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4345,12 +4510,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4366,11 +4531,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished"></translation> </message> @@ -4400,7 +4575,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4410,7 +4585,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -4433,8 +4613,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4538,6 +4718,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished"></translation> </message> @@ -4733,6 +4923,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4797,7 +4992,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4908,6 +5103,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -5003,7 +5203,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5040,7 +5240,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished"></translation> </message> @@ -5095,7 +5310,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5125,7 +5340,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5208,29 +5433,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_de.ts b/resources/langs/nheko_de.ts index f6dfa47e..126c8f05 100644 --- a/resources/langs/nheko_de.ts +++ b/resources/langs/nheko_de.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Wählen …</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Verbinden …</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>Aliase für %1</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation>Erlaubte Raumeinstellungen</translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 und %n anderer Teilnehmer</numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation>X11</translation> </message> @@ -232,12 +238,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Eingeladener Benutzer: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation> @@ -246,7 +252,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>Abmelden bestätigen</translation> </message> @@ -261,7 +267,7 @@ <translation>Öffnen der Datenbank fehlgeschlagen, du wirst ausgeloggt!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>Raumbeitritt anfragen (anklopfen)</translation> </message> @@ -287,12 +293,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Einladung bestätigen</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Nutzer %1 (%2) wirklich einladen?</translation> </message> @@ -337,12 +343,12 @@ <translation>Verbannung aufgehoben: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Möchtest du wirklich eine private Konversation mit %1 beginnen?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Migration des Caches fehlgeschlagen!</translation> </message> @@ -366,7 +372,7 @@ Wenn du glaubst, dass das ein Fehler ist, dann kannst du Nheko schließen und vi <translation>Inkompatible Version des Caches</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Wiederherstellung des OLM-Accounts fehlgeschlagen. Bitte logge dich erneut ein.</translation> </message> @@ -384,7 +390,7 @@ Wenn du glaubst, dass das ein Fehler ist, dann kannst du Nheko schließen und vi </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Bitte melde dich erneut an: %1</translation> </message> @@ -738,7 +744,7 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Ausklappen</translation> </message> @@ -748,7 +754,7 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne <translation>Einklappen</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation>Zeige keine Benachrichtigungen für diese Gruppe oder Tag an.</translation> </message> @@ -834,7 +840,7 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation>Bestätige den Gruppenbeitritt</translation> </message> @@ -875,7 +881,7 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation>Direktchat erstellen</translation> </message> @@ -971,7 +977,7 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation>Geheimnisse entschlüsseln</translation> </message> @@ -999,7 +1005,7 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Verifizierungscode</translation> </message> @@ -1050,7 +1056,7 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Kein Schlüssel für diese Nachricht vorhanden. Wir haben den Schlüssel automatisch angefragt, aber wenn du ungeduldig bist, kannst du den Schlüssel nocheinmal anfragen.</translation> </message> @@ -1085,7 +1091,7 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne <translation>Unbekannter Entschlüsselungsfehler</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Schlüssel anfragen</translation> </message> @@ -1093,12 +1099,12 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation>%1 hat die Ende-zu-Ende-Verschlüsselung aktiviert</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation>Durch die Verschlüsselung sind deine Nachrichten nur von den Personen lesbar, denen du sie auch senden wolltest. Um auf eine Nummer extra-sicher zu gehen, kannst du die Personen, mit denen du kommunizierst, in der echten Welt verifizieren.</translation> </message> @@ -1242,6 +1248,34 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished">Öffne die Webseite und folge den Schritten auf dieser. Klicke dann auf Bestätigen.</translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">Öffne Fallback im Browser</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Abbrechen</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Bestätigen</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1315,6 +1349,24 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1494,9 +1546,9 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@jonas:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation type="unfinished"></translation> </message> <message> <location line="+42"/> @@ -1535,7 +1587,7 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>Raum verlassen</translation> </message> @@ -1552,8 +1604,8 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Du hast eine ungültige Matrix-ID eingegeben. Beispiel für eine gültige ID: @jonas:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="-157"/> @@ -1632,19 +1684,16 @@ Du kannst zusätzlich einen Grund angeben, warum die anderen dein Anklopfen anne </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>z.B. @jonas:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> - <translation>Dein Anmeldename. Eine mxid sollte mit eine @ anfangen gefolgt von der Nutzerid. Nach dem Nutzernamen folgt der servername, getrennt durch ein :. -Wenn dein Server keinen .well-known unterstützt, kannst du auch eine Serveradresse angeben. -Beispiel: @nutzer:mein.server -Wenn Nheko den Server nicht finden kann, wird es dich nach der Serveradresse fragen.</translation> + <translation type="unfinished"></translation> </message> <message> <location line="+27"/> @@ -1673,15 +1722,14 @@ Wenn Nheko den Server nicht finden kann, wird es dich nach der Serveradresse fra </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>dein.server:8787</translation> + <source>yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> - <translation>Die Adresse unter der die Client-API deines Heimservers erreicht wird. -Beispiel: https://mein.server:8787</translation> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+32"/> @@ -1697,7 +1745,7 @@ Beispiel: https://mein.server:8787</translation> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>Abmelden</translation> </message> @@ -1722,120 +1770,6 @@ Beispiel: https://mein.server:8787</translation> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation>Dieser Raum wurde aus folgendem Grund ersetzt: %1</translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation>Gehe zum neuen Raum</translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation>%1 hat eine Nachricht gelöscht</translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation>%1 hat die erlaubten Server in diesem Raum geändert.</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation>%2 hat den Raumnamen geändert auf: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation>%1 hat den Raumnamen entfernt</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation>%2 hat das Thema geändert auf: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation>%1 hat das Raumthema entfernt</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 hat dem Raumavatar geändert</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation>%1 hat die angehefteten Nachrichten geändert.</translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation>%1 hat die Addressen dieses Raumes geändert.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation>%1 hat die übergeordneten Gruppen für diesen Raum bearbeitet.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 hat den Raum %2 erstellt und konfiguriert</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 hat einen Sprachanruf gestartet.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 hat einen Videoanruf gestartet.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 hat angerufen.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 hat den Anruf angenommen.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation>%1 hat den Anruf abgewiesen.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation>%1 hat einen Anruf ausgewählt</translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 hat den Anruf beendet.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation>%1 wartet auf Verbindung...</translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>Reinlassen</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1886,7 +1820,7 @@ Beispiel: https://mein.server:8787</translation> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Bearbeiten</translation> </message> @@ -1921,12 +1855,7 @@ Beispiel: https://mein.server:8787</translation> <translation>Optionen</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation>%1s Statusnachricht</translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation>Grund für das Nachrichtenlöschen oder Entertaste drücken für keinen Grund:</translation> </message> @@ -1936,24 +1865,24 @@ Beispiel: https://mein.server:8787</translation> <translation>Grund für die Löschung</translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation>Gehe zu &Nachricht</translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>&Kopieren</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>Kopiere &Link-Ziel</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>Re&agieren</translation> </message> @@ -2013,7 +1942,12 @@ Beispiel: https://mein.server:8787</translation> <translation>Na&chricht löschen</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>&Speichern als</translation> </message> @@ -2036,7 +1970,7 @@ Beispiel: https://mein.server:8787</translation> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Sende eine Verifizierungsanfrage</translation> </message> @@ -2256,7 +2190,7 @@ Beispiel: https://mein.server:8787</translation> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation>Berechtigungsänderungen anwenden</translation> </message> @@ -2313,9 +2247,27 @@ Beispiel: https://mein.server:8787</translation> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished">Administrator: %1</translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished">Moderator: %1</translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished">Benutzer: %1</translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation>Andere Events</translation> </message> @@ -2506,7 +2458,7 @@ Beispiel: https://mein.server:8787</translation> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation>Erstelle ein separates Profil, was mehrere Instanzen von Nheko mit verschiedenen Accounts zur gleichen Zeit ermöglicht.</translation> </message> @@ -2524,7 +2476,7 @@ Beispiel: https://mein.server:8787</translation> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation>Alias für „--log-level trace“.</translation> </message> @@ -2549,6 +2501,11 @@ Beispiel: https://mein.server:8787</translation> <translation>Typ</translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation>Antworten</translation> @@ -2686,7 +2643,7 @@ Beispiel: https://mein.server:8787</translation> <translation>Der Benutzername sollte nicht leer sein und nur aus a-z, 0-9, ., _, =, - und / bestehen.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation>Zurück</translation> @@ -2730,7 +2687,7 @@ Beispiel: https://mein.server:8787</translation> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Schließen</translation> </message> @@ -2746,6 +2703,54 @@ Beispiel: https://mein.server:8787</translation> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2753,7 +2758,17 @@ Beispiel: https://mein.server:8787</translation> <translation>Öffentliche Räume erkunden</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished">Beitreten</translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>Suche nach öffentlichen Räumen</translation> </message> @@ -2762,6 +2777,11 @@ Beispiel: https://mein.server:8787</translation> <source>Choose custom homeserver</source> <translation>Wähle einen anderen Heimserver aus</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Schließen</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2814,7 +2834,7 @@ Beispiel: https://mein.server:8787</translation> <translation>Benutzereinstellungen</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>Abmelden</translation> </message> @@ -2839,7 +2859,27 @@ Beispiel: https://mein.server:8787</translation> <translation>Setze eine Statusnachricht</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>Verschlüsselung ist nicht konfiguriert</translation> @@ -2862,7 +2902,7 @@ Beispiel: https://mein.server:8787</translation> <translation>Schließen</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>Gib den Tag, den du verwenden willst, ein:</translation> </message> @@ -2878,6 +2918,11 @@ Beispiel: https://mein.server:8787</translation> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation>Raumeinstellungen</translation> </message> @@ -2925,12 +2970,12 @@ Beispiel: https://mein.server:8787</translation> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>Teilnehmer in %1</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2969,22 +3014,7 @@ Beispiel: https://mein.server:8787</translation> <translation>Berechtigung</translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation>Administrator: %1</translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation>Moderator: %1</translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation>Benutzer: %1</translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>Dieser Raum ist nicht verschlüsselt!</translation> </message> @@ -3037,25 +3067,28 @@ Beispiel: https://mein.server:8787</translation> <source>Failed to upload image: %s</source> <translation>Hochladen des Bildes fehlgeschlagen: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> - <translation>Raumeinstellungen</translation> + <translation type="unfinished">Raumeinstellungen</translation> </message> <message> <location line="+35"/> <source>Change room avatar.</source> - <translation>Raumavatar ändern.</translation> + <translation type="unfinished">Raumavatar ändern.</translation> </message> <message> <location line="+93"/> <source>Change name of this room</source> - <translation>Name des Raumes ändern</translation> + <translation type="unfinished">Name des Raumes ändern</translation> </message> <message numerus="yes"> <location line="+22"/> <source>%n member(s)</source> - <translation> + <translation type="unfinished"> <numerusform>%n Mitglied</numerusform> <numerusform>%n Mitglieder</numerusform> </translation> @@ -3063,108 +3096,108 @@ Beispiel: https://mein.server:8787</translation> <message> <location line="+8"/> <source>View members of %1</source> - <translation>Mitglieder von %1 anzeigen</translation> + <translation type="unfinished"></translation> </message> <message> <location line="+24"/> <source>No topic set</source> - <translation>Kein Thema festgelegt</translation> + <translation type="unfinished">Kein Thema festgelegt</translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> - <translation>Thema des Raumes ändern</translation> + <translation type="unfinished">Thema des Raumes ändern</translation> </message> <message> <location line="+31"/> <source>NOTIFICATIONS</source> - <translation>BENACHRICHTIGUNGEN</translation> + <translation type="unfinished">BENACHRICHTIGUNGEN</translation> </message> <message> <location line="+9"/> <source>Notifications</source> - <translation>Benachrichtigungen</translation> + <translation type="unfinished">Benachrichtigungen</translation> </message> <message> <location line="+6"/> <source>Muted</source> - <translation>Stumm</translation> + <translation type="unfinished">Stumm</translation> </message> <message> <location line="+0"/> <source>Mentions only</source> - <translation>Nur Erwähnungen</translation> + <translation type="unfinished">Nur Erwähnungen</translation> </message> <message> <location line="+0"/> <source>All messages</source> - <translation>Alle Nachrichten</translation> + <translation type="unfinished">Alle Nachrichten</translation> </message> <message> <location line="+10"/> <source>ENTRY PERMISSIONS</source> - <translation>ZUTRITTSBERECHTIGUNGEN</translation> + <translation type="unfinished">ZUTRITTSBERECHTIGUNGEN</translation> </message> <message> <location line="+9"/> <source>Anyone can join</source> - <translation>Jeder kann beitreten</translation> + <translation type="unfinished">Jeder kann beitreten</translation> </message> <message> <location line="+14"/> <source>Allow knocking</source> - <translation>Anklopfen erlauben</translation> + <translation type="unfinished">Anklopfen erlauben</translation> </message> <message> <location line="+19"/> <source>Allow joining via other rooms</source> - <translation>Durch andere Räume betreten</translation> + <translation type="unfinished">Durch andere Räume betreten</translation> </message> <message> <location line="+19"/> <source>Rooms to join via</source> - <translation>Räume die Zutritt erlauben</translation> + <translation type="unfinished">Räume die Zutritt erlauben</translation> </message> <message> <location line="+12"/> <location line="+242"/> <source>Change</source> - <translation>Ändern</translation> + <translation type="unfinished">Ändern</translation> </message> <message> <location line="-241"/> <source>Change the list of rooms users can join this room via. Usually this is the official community of this room.</source> - <translation>Ändere die Liste an Räumen, die den Zutritt erlauben. Normalerweise ist das die offizielle Gruppe dieses Raumes.</translation> + <translation type="unfinished">Ändere die Liste an Räumen, die den Zutritt erlauben. Normalerweise ist das die offizielle Gruppe dieses Raumes.</translation> </message> <message> <location line="+6"/> <source>Allow guests to join</source> - <translation>Erlaube Gästen beizutreten</translation> + <translation type="unfinished">Erlaube Gästen beizutreten</translation> </message> <message> <location line="+17"/> <source>Apply access rules</source> - <translation>Zugriffsregeln anwenden</translation> + <translation type="unfinished">Zugriffsregeln anwenden</translation> </message> <message> <location line="+7"/> <source>MESSAGE VISIBILITY</source> - <translation>NACHRICHTEN SICHTBARKEIT</translation> + <translation type="unfinished">NACHRICHTEN SICHTBARKEIT</translation> </message> <message> <location line="+9"/> <source>Allow viewing history without joining</source> - <translation>Erlaube Nachrichten ohne Beitritt zu lesen</translation> + <translation type="unfinished">Erlaube Nachrichten ohne Beitritt zu lesen</translation> </message> <message> <location line="+3"/> <source>This is useful to see previews of the room or view it on public websites.</source> - <translation>Dies ist nützlich um eine Vorschau des Raums zu ermöglichen oder diesen auf öffentlichen Webseiten sehen zu können.</translation> + <translation type="unfinished">Dies ist nützlich um eine Vorschau des Raums zu ermöglichen oder diesen auf öffentlichen Webseiten sehen zu können.</translation> </message> <message> <location line="+20"/> <source>Members can see messages since</source> - <translation>Teilnehmer können Nachrichten sehen ab</translation> + <translation type="unfinished">Teilnehmer können Nachrichten sehen ab</translation> </message> <message> <location line="+4"/> @@ -3217,12 +3250,12 @@ Beispiel: https://mein.server:8787</translation> <location line="+60"/> <location line="+12"/> <source>Configure</source> - <translation>Konfigurieren</translation> + <translation type="unfinished">Konfigurieren</translation> </message> <message> <location line="-89"/> <source>Select events to hide in this room</source> - <translation>Wähle aus, weche Events in diesem Raum angezeigt werden</translation> + <translation type="unfinished">Wähle aus, weche Events in diesem Raum angezeigt werden</translation> </message> <message> <location line="+6"/> @@ -3242,79 +3275,72 @@ Beispiel: https://mein.server:8787</translation> <message> <location line="+9"/> <source>Encryption</source> - <translation>Verschlüsselung</translation> + <translation type="unfinished">Verschlüsselung</translation> </message> <message> <location line="+22"/> <source>End-to-End Encryption</source> - <translation>Ende-zu-Ende Verschlüsselung</translation> + <translation type="unfinished">Ende-zu-Ende Verschlüsselung</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation>Verschlüsselung ist aktuell experimentell und manche Sachen können unerwartet kaputt gehen.<br> -Bitte beachte, dass die Verschlüsselung hinterher nicht mehr deaktiviert werden kann.</translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> - <translation>Berechtigungen</translation> + <translation type="unfinished">Berechtigungen</translation> </message> <message> <location line="+6"/> <source>View and change the permissions in this room</source> - <translation>Berechtigungen anzeigen und ändern</translation> + <translation type="unfinished">Berechtigungen anzeigen und ändern</translation> </message> <message> <location line="+6"/> <source>Aliases</source> - <translation>Raumaddressen</translation> + <translation type="unfinished">Raumaddressen</translation> </message> <message> <location line="+6"/> <source>View and change the addresses/aliases of this room</source> - <translation>Raumadressen anzeigen und ändern</translation> + <translation type="unfinished">Raumadressen anzeigen und ändern</translation> </message> <message> <location line="+6"/> <source>Sticker & Emote Settings</source> - <translation>Sticker- & Emoteeinstellungen</translation> + <translation type="unfinished">Sticker- & Emoteeinstellungen</translation> </message> <message> <location line="+6"/> <source>Change what packs are enabled, remove packs, or create new ones</source> - <translation>Ändere welche Packungen aktiv sind, entferne oder erstelle neue Packungen.</translation> + <translation type="unfinished">Ändere welche Packungen aktiv sind, entferne oder erstelle neue Packungen.</translation> </message> <message> <location line="+6"/> <source>INFO</source> - <translation>INFO</translation> + <translation type="unfinished">INFO</translation> </message> <message> <location line="+9"/> <source>Internal ID</source> - <translation>Interne ID</translation> + <translation type="unfinished">Interne ID</translation> </message> <message> <location line="+16"/> <source>Copied to clipboard</source> - <translation>In die Zwischenablage kopiert</translation> + <translation type="unfinished">In die Zwischenablage kopiert</translation> </message> <message> <location line="+19"/> <source>Room Version</source> - <translation>Raumversion</translation> + <translation type="unfinished">Raumversion</translation> </message> <message> <location line="+19"/> <source>show less</source> - <translation>weniger anzeigen</translation> + <translation type="unfinished">weniger anzeigen</translation> </message> <message> <location line="+0"/> <source>show more</source> - <translation>mehr anzeigen</translation> + <translation type="unfinished">mehr anzeigen</translation> </message> </context> <context> @@ -3343,7 +3369,7 @@ Bitte beachte, dass die Verschlüsselung hinterher nicht mehr deaktiviert werden <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>Bitte gib dein Anmeldepassword an um fortzufahren:</translation> </message> @@ -3435,7 +3461,7 @@ Bitte beachte, dass die Verschlüsselung hinterher nicht mehr deaktiviert werden <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>Verbindung zum kryptografischen Speicher fehlgeschlagen</translation> </message> @@ -3525,7 +3551,7 @@ Wenn du verifizieren wählst, musst du dein anderes Gerät zur Hand haben. Wenn <translation>Konfiguration der Verschlüsselung fehlgeschlagen: %1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>Die Identitätschlüssel haben sich geändert. Das stört die Verschlüsselung, deswegen wirst du abgemeldet.</translation> </message> @@ -3633,7 +3659,7 @@ Wenn du verifizieren wählst, musst du dein anderes Gerät zur Hand haben. Wenn <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Erfolgreiche Verifizierung</translation> </message> @@ -3649,15 +3675,95 @@ Wenn du verifizieren wählst, musst du dein anderes Gerät zur Hand haben. Wenn </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished">Teil eines Gesprächfadens</translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 hat einen Sprachanruf gestartet.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished">%1 hat einen Videoanruf gestartet.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished">%1 hat angerufen.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 hat den Anruf angenommen.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished">%1 hat den Anruf abgewiesen.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 hat den Anruf beendet.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished">%1 wartet auf Verbindung...</translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished">Reinlassen</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished">Dieser Raum wurde aus folgendem Grund ersetzt: %1</translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished">Gehe zum neuen Raum</translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished">Bearbeitet</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished">Teil eines Gesprächfadens</translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Nachricht zurückziehen fehlgeschlagen: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Event konnte nicht verschlüsselt werden, senden wurde abgebrochen!</translation> @@ -3707,7 +3813,7 @@ Wenn du verifizieren wählst, musst du dein anderes Gerät zur Hand haben. Wenn <translation>%1 hat Mitgliedern aus folgenden Räumen erlaubt diesen Raum automatisch zu betreten: %2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 hat Gästen erlaubt den Raum zu betreten.</translation> </message> @@ -3717,7 +3823,7 @@ Wenn du verifizieren wählst, musst du dein anderes Gerät zur Hand haben. Wenn <translation>%1 hat Gästen verboten den Raum zu betreten.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 hat den Raum lesbar für alle gemacht. Nutzer, die nicht Teilnehmer dieses Raums sind, können nun Nachrichten in diesem Raum lesen.</translation> </message> @@ -3737,7 +3843,7 @@ Wenn du verifizieren wählst, musst du dein anderes Gerät zur Hand haben. Wenn <translation>%1 hat eingestellt, dass Teilnehmer die Historie dieses Raums lesen können ab dem Zeitpunkt, zu dem sie beigetreten sind.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 hat die Berechtigungen dieses Raums bearbeitet.</translation> @@ -3880,7 +3986,7 @@ Wenn du verifizieren wählst, musst du dein anderes Gerät zur Hand haben. Wenn <translation>%1 hat die nötigen Berechtigungen für Events vom Typ "%2" von %3 auf %4 geändert.</translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation>(leer)</translation> </message> @@ -3952,7 +4058,7 @@ Reason: %4</source> Grund: %4</translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation>%2 hat die Einladung an %1 zurückgezogen.</translation> </message> @@ -4012,22 +4118,82 @@ Grund: %4</translation> <translation>%1 hat das Anklopfen zurückgezogen.</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished">%1 hat die erlaubten Server in diesem Raum geändert.</translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished">%2 hat den Raumnamen geändert auf: %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished">%2 hat das Thema geändert auf: %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished">%1 hat die angehefteten Nachrichten geändert.</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished">%1 hat die Addressen dieses Raumes geändert.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished">%1 hat die übergeordneten Gruppen für diesen Raum bearbeitet.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 hat den Raum %2 erstellt und konfiguriert</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>Du bist dem Raum beigetreten.</translation> </message> <message> - <location line="+998"/> + <location line="+1019"/> <source>%1 made this room require an invitation to join.</source> <translation>%1 hat diesen Raum nur eingeladenen Nutzern zugänglich gemacht.</translation> </message> <message> - <location line="+654"/> + <location line="+618"/> <source>%1 invited %2.</source> <translation>%1 hat %2 eingeladen.</translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 hat den eigenen Avatar und Namen zu %2 geändert.</translation> </message> @@ -4054,23 +4220,17 @@ Grund: %4</translation> </message> </context> <context> - <name>TimelineRow</name> + <name>TimelineSectionHeader</name> <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation>Teil eines Gesprächfadens</translation> - </message> - <message> - <location line="-18"/> - <source>Edited</source> - <translation>Bearbeitet</translation> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> + <translation type="unfinished">%1s Statusnachricht</translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Kein Raum geöffnet</translation> </message> @@ -4176,7 +4336,7 @@ Grund: %4</translation> <translation>Zurück zur Raumliste</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation>Angehefte Nachrichten anzeigen oder verstecken</translation> </message> @@ -4231,7 +4391,7 @@ Grund: %4</translation> <translation>Einstellungen</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation>Anheften aufheben</translation> </message> @@ -4257,24 +4417,24 @@ Grund: %4</translation> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>Keine bekannten Wege zur Authentifizierung!</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>Authentifizierung abgebrochen</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>Bitte gib ein gültiges Registrierungstoken ein.</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>Ungültiges Token</translation> </message> @@ -4282,7 +4442,7 @@ Grund: %4</translation> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation> <numerusform>Datei hochladen</numerusform> @@ -4293,7 +4453,7 @@ Grund: %4</translation> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>Gerät %1 abmelden</translation> </message> @@ -4303,7 +4463,12 @@ Grund: %4</translation> <translation>Du hast dieses Gerät abgemeldet.</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Avatar wählen</translation> </message> @@ -4323,7 +4488,7 @@ Grund: %4</translation> <translation>Fehler beim Lesen der Datei: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Globales Nutzerprofil</translation> </message> @@ -4374,12 +4539,12 @@ Grund: %4</translation> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Verifizieren</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>Starte eine private Unterhaltung.</translation> </message> @@ -4395,11 +4560,21 @@ Grund: %4</translation> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>Geräteliste aktualisieren.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Geräte</translation> </message> @@ -4432,8 +4607,8 @@ Grund: %4</translation> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>Standard</translation> </message> @@ -4532,6 +4707,16 @@ Grund: %4</translation> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished">Versteckte Events</translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation>Desktopbenachrichtigungen</translation> </message> @@ -4722,6 +4907,11 @@ Grund: %4</translation> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation>BENACHRICHTIGUNGEN</translation> </message> @@ -4786,7 +4976,7 @@ Grund: %4</translation> <translation>Regelmäßig abgelaufene Nachrichten löschen</translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation>Standard</translation> </message> @@ -4888,6 +5078,11 @@ Wenn dies AN ist, dann werden Räume, die früher im Alphabet kommen, zuerst ang </message> <message> <location line="+8"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation>Benachrichtigungen pber neue Nachrichten, wenn der Client nicht im Vordergrund ist.</translation> </message> @@ -4924,29 +5119,29 @@ AUS - Quadratisch, AN - Kreisförmig.</translation> <translation>Teilt automatisch Schlüssel für Nachrichten mit verifizierten Nutzern (auf Anfrage), selbst wenn diese sonst keinen Zugriff darauf hätten.</translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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>Der Schlüssel um deine eigenen Geräte zu verifizieren. Wenn dieser im Cache ist, dann werden alle deine Geräte als verifiziert für andere Nutzer erscheinen, wenn du diese verifiziert hast.</translation> </message> <message> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation>Hebe das Fenster hervor, wenn eine Nachricht empfangen wurde. Normalerweise animiert das den Taskbaricon oder färbt das Fenster orange ein.</translation> </message> <message> - <location line="-350"/> + <location line="-366"/> <source>Communities sidebar</source> <translation>Gruppenseitenleiste</translation> </message> <message> - <location line="+42"/> + <location line="+46"/> <source>Show message counts for communities and tags</source> <translation>Zeige Nachrichtenzahl für Gruppen und Tags</translation> </message> <message> - <location line="+241"/> + <location line="+251"/> <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source> <translation>Setze eine maximale Breite für Nachrichten im Chat (in Pixeln). Das kann die Lesbarkeit auf breiten Bildschirmen erhöhen.</translation> </message> @@ -4965,7 +5160,7 @@ Der Lesesstatus ist neben dem Sendezeitpunkt zu finden. Achtung: Wenn dein Heimserver das Deaktivieren vom Verteilen des Sendestatus nicht unterstützt, werden deine Räume nie als gelesen markiert!</translation> </message> <message> - <location line="+13"/> + <location line="+15"/> <source>Display an identicon instead of a letter when no avatar is set.</source> <translation>Zeige einen Identicon anstelle eines Buchstabens, wenn kein Avatar gesetzt wurde.</translation> </message> @@ -5023,7 +5218,7 @@ den Fokus verliert.</translation> <translation>Speichere eine Kopie der Nachrichtenschlüssel verschlüsselt auf dem Server.</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation>Der Schlüssel um Schlüssel aus der Onlinesicherung zu laden. Wenn dieser vorhanden ist, können die Schlüssel für verschlüsselte Nachrichten sicher online gespeichert und wieder runtergeladen werden.</translation> </message> @@ -5057,7 +5252,22 @@ Diese Einstellung benötigt einen Neustart von Nheko.</translation> <translation>Entfernt regelmäßig eigene Nachrichten, die du als abgelaufen konfiguriert hast. Dies kann aktuell nicht automatisch von deinem Server erledigt werden, weswegen du immer einen Client (z.B. Nheko) offen haben musst, damit diese Nachrichten gelöscht werden.</translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation>Datei auswählen</translation> </message> @@ -5112,7 +5322,7 @@ Diese Einstellung benötigt einen Neustart von Nheko.</translation> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>IM CACHE</translation> </message> @@ -5142,7 +5352,17 @@ Diese Einstellung benötigt einen Neustart von Nheko.</translation> <translation>ANFRAGEN</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation>Zurück</translation> </message> @@ -5225,29 +5445,6 @@ Diese Einstellung benötigt einen Neustart von Nheko.</translation> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Öffne Fallback im Browser</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Abbrechen</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Bestätigen</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation>Öffne die Webseite und folge den Schritten auf dieser. Klicke dann auf Bestätigen.</translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_el.ts b/resources/langs/nheko_el.ts index 142b101b..537f40b4 100644 --- a/resources/langs/nheko_el.ts +++ b/resources/langs/nheko_el.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation type="unfinished"></translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -237,12 +243,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -251,7 +257,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -288,7 +294,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> + <location line="+22"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -306,7 +312,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation type="unfinished"></translation> </message> @@ -363,12 +369,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+30"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation type="unfinished"></translation> </message> @@ -438,7 +444,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> @@ -735,7 +741,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -745,7 +751,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -831,7 +837,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -872,7 +878,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -996,7 +1002,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation type="unfinished"></translation> </message> @@ -1047,7 +1053,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1082,7 +1088,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1090,12 +1096,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1239,6 +1245,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Άκυρο</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1312,6 +1346,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1491,8 +1543,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1532,7 +1584,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished">Βγές</translation> </message> @@ -1549,7 +1601,7 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1629,14 +1681,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>π.χ @john:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1667,13 +1719,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1690,7 +1742,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1715,120 +1767,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1879,7 +1817,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1914,12 +1852,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1929,24 +1862,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2006,7 +1939,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2029,7 +1967,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2249,7 +2187,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2306,9 +2244,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2499,7 +2455,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2532,7 +2488,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Γράψε ένα μήνυμα...</translation> </message> <message> - <location filename="../../src/main.cpp" line="-26"/> + <location filename="../../src/main.cpp" line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2556,6 +2512,11 @@ Example: https://server.my:8787</source> <source>type</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ReCaptchaDialog</name> @@ -2624,7 +2585,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2723,7 +2684,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished"></translation> </message> @@ -2739,6 +2700,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2746,7 +2755,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2755,6 +2774,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2807,7 +2831,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished"></translation> </message> @@ -2832,7 +2856,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2855,7 +2899,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2871,6 +2915,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2918,12 +2967,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2962,22 +3011,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation type="unfinished"></translation> </message> @@ -3030,8 +3064,11 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3064,7 +3101,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3243,13 +3280,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3335,7 +3366,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3427,7 +3458,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3515,7 +3546,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3623,7 +3654,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3639,20 +3670,160 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1251"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+711"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+250"/> + <location line="+265"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3707,7 +3878,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3717,7 +3888,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3737,7 +3908,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3880,7 +4051,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3951,12 +4122,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4043,23 +4214,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation type="unfinished"></translation> </message> @@ -4165,7 +4330,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4220,7 +4385,7 @@ Reason: %4</source> <translation type="unfinished">Ρυθμίσεις</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4246,24 +4411,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4271,7 +4436,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4282,7 +4447,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4292,7 +4457,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>All Files (*)</source> <translation type="unfinished">Όλα τα αρχεία (*)</translation> </message> @@ -4312,7 +4482,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4363,12 +4533,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4384,11 +4554,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished"></translation> </message> @@ -4421,8 +4601,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4526,6 +4706,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished"></translation> </message> @@ -4721,6 +4911,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4785,7 +4980,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4896,6 +5091,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4991,7 +5191,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5028,7 +5228,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished">Διάλεξε ένα αρχείο</translation> </message> @@ -5083,7 +5298,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5113,7 +5328,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5196,29 +5421,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished">Άκυρο</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts index a2d24caf..e63a917b 100644 --- a/resources/langs/nheko_en.ts +++ b/resources/langs/nheko_en.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Calling…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Connecting…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>Aliases to %1</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation>Allowed rooms settings</translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation>%1 and %2</translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 and %n other</numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation>X11</translation> </message> @@ -232,12 +238,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Invited user: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation> @@ -248,7 +254,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>Confirm logout</translation> </message> @@ -263,7 +269,7 @@ <translation>Failed to open database, logging out!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>Knock on room</translation> </message> @@ -289,12 +295,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Confirm invite</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Do you really want to invite %1 (%2)?</translation> </message> @@ -339,12 +345,12 @@ <translation>Unbanned user: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Do you really want to start a private chat with %1?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Cache migration failed!</translation> </message> @@ -368,7 +374,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation>Incompatible cache version</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Failed to restore OLM account. Please login again.</translation> </message> @@ -386,7 +392,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Please try to login again: %1</translation> </message> @@ -740,7 +746,7 @@ You may optionally provide a reason for others to accept your knock:</translatio <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Expand</translation> </message> @@ -750,7 +756,7 @@ You may optionally provide a reason for others to accept your knock:</translatio <translation>Collapse</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation>Do not show notification counts for this community or tag.</translation> </message> @@ -836,7 +842,7 @@ You may optionally provide a reason for others to accept your knock:</translatio <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation>Confirm community join</translation> </message> @@ -877,7 +883,7 @@ You may optionally provide a reason for others to accept your knock:</translatio <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation>Create Direct Chat</translation> </message> @@ -973,7 +979,7 @@ You may optionally provide a reason for others to accept your knock:</translatio <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation>Decrypt secrets</translation> </message> @@ -1001,7 +1007,7 @@ You may optionally provide a reason for others to accept your knock:</translatio <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Verification Code</translation> </message> @@ -1052,7 +1058,7 @@ You may optionally provide a reason for others to accept your knock:</translatio <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</translation> </message> @@ -1087,7 +1093,7 @@ You may optionally provide a reason for others to accept your knock:</translatio <translation>Unknown decryption error</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Request key</translation> </message> @@ -1095,12 +1101,12 @@ You may optionally provide a reason for others to accept your knock:</translatio <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation>%1 enabled end-to-end encryption</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</translation> </message> @@ -1244,6 +1250,34 @@ You may optionally provide a reason for others to accept your knock:</translatio </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation>Fallback authentication</translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation>Open the fallback, follow the steps, and confirm after completing them.</translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation>Open Fallback in Browser</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation>Cancel</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation>Confirm</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1317,6 +1351,24 @@ You may optionally provide a reason for others to accept your knock:</translatio </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation>Ignored users</translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation>Ignoring a user hides their messages (they can still see yours!).</translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation>Stop Ignoring.</translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1496,9 +1548,9 @@ You may optionally provide a reason for others to accept your knock:</translatio </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@joe:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation>@user:yourserver.example.com</translation> </message> <message> <location line="+42"/> @@ -1537,7 +1589,7 @@ You may optionally provide a reason for others to accept your knock:</translatio <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>Leave room</translation> </message> @@ -1554,8 +1606,8 @@ You may optionally provide a reason for others to accept your knock:</translatio <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>You have entered an invalid Matrix ID e.g @joe:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</translation> </message> <message> <location line="-157"/> @@ -1634,18 +1686,18 @@ You may optionally provide a reason for others to accept your knock:</translatio </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>e.g @joe:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation>e.g @user:yourserver.example.com</translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</translation> </message> <message> @@ -1675,15 +1727,15 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>server.my:8787</translation> + <source>yourserver.example.com:8787</source> + <translation>yourserver.example.com:8787</translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> - <translation>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</translation> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> + <translation>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</translation> </message> <message> <location line="+32"/> @@ -1699,7 +1751,7 @@ Example: https://server.my:8787</translation> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>Log out</translation> </message> @@ -1724,120 +1776,6 @@ Example: https://server.my:8787</translation> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation>This room was replaced for the following reason: %1</translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation>Go to replacement room</translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation>%1 removed a message</translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation>%1 changed which servers are allowed in this room.</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation>%2 changed the room name to: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation>%1 removed the room name</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation>%2 changed the topic to: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation>%1 removed the topic</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 changed the room avatar</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation>%1 changed the pinned messages.</translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation>%1 changed the addresses for this room.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation>%1 changed the parent communities for this room.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 created and configured room: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 placed a voice call.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 placed a video call.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 placed a call.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 answered the call.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation>%1 rejected the call.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation>%1 select answer</translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 ended the call.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation>%1 is negotiating the call...</translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>Allow them in</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1888,7 +1826,7 @@ Example: https://server.my:8787</translation> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Edit</translation> </message> @@ -1923,12 +1861,7 @@ Example: https://server.my:8787</translation> <translation>Options</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation>%1's status message</translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation>Enter reason for removal or hit enter for no reason:</translation> </message> @@ -1938,24 +1871,24 @@ Example: https://server.my:8787</translation> <translation>Reason for removal</translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation>Go to &message</translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>&Copy</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>Copy &link location</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>Re&act</translation> </message> @@ -2015,7 +1948,12 @@ Example: https://server.my:8787</translation> <translation>Remo&ve message</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation>Report message</translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>&Save as</translation> </message> @@ -2038,7 +1976,7 @@ Example: https://server.my:8787</translation> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Send Verification Request</translation> </message> @@ -2258,7 +2196,7 @@ Example: https://server.my:8787</translation> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation>Apply permission changes</translation> </message> @@ -2315,9 +2253,27 @@ Example: https://server.my:8787</translation> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation>Administrator: %1</translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation>Moderator: %1</translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation>User: %1</translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation>Other events</translation> </message> @@ -2508,7 +2464,7 @@ Example: https://server.my:8787</translation> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</translation> </message> @@ -2526,7 +2482,7 @@ Example: https://server.my:8787</translation> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation>Alias for '--log-level trace'.</translation> </message> @@ -2551,6 +2507,11 @@ Example: https://server.my:8787</translation> <translation>type</translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation>Recompacts the database which might improve performance.</translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation>Respond</translation> @@ -2688,7 +2649,7 @@ Example: https://server.my:8787</translation> <translation>The username must not be empty, and must contain only the characters a-z, 0-9, ., _, =, -, and /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation>Back</translation> @@ -2732,7 +2693,7 @@ Example: https://server.my:8787</translation> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Close</translation> </message> @@ -2748,6 +2709,54 @@ Example: https://server.my:8787</translation> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation>Report message</translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation>Enter your reason for reporting:</translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation>How bad is the message?</translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation>Not bad</translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation>Mild</translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation>Bad</translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation>Serious</translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation>Extremely serious</translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2755,7 +2764,17 @@ Example: https://server.my:8787</translation> <translation>Explore Public Rooms</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation>Join</translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation>Open</translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>Search for public rooms</translation> </message> @@ -2764,6 +2783,11 @@ Example: https://server.my:8787</translation> <source>Choose custom homeserver</source> <translation>Choose custom homeserver</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation>Close</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2816,7 +2840,7 @@ Example: https://server.my:8787</translation> <translation>User settings</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>Logout</translation> </message> @@ -2841,7 +2865,27 @@ Example: https://server.my:8787</translation> <translation>Set status message</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation>Automatic online status</translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation>Online</translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation>Unavailable</translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation>Offline</translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>Encryption not set up</translation> @@ -2864,7 +2908,7 @@ Example: https://server.my:8787</translation> <translation>Close</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>Enter the tag you want to use:</translation> </message> @@ -2880,6 +2924,11 @@ Example: https://server.my:8787</translation> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation>Mark as read</translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation>Room settings</translation> </message> @@ -2927,12 +2976,12 @@ Example: https://server.my:8787</translation> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>Members of %1</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2971,22 +3020,7 @@ Example: https://server.my:8787</translation> <translation>Power level</translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation>Administrator: %1</translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation>Moderator: %1</translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation>User: %1</translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>This room is not encrypted!</translation> </message> @@ -3039,8 +3073,11 @@ Example: https://server.my:8787</translation> <source>Failed to upload image: %s</source> <translation>Failed to upload image: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation>Room Settings</translation> </message> @@ -3073,7 +3110,7 @@ Example: https://server.my:8787</translation> <translation>No topic set</translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation>Change topic of this room</translation> </message> @@ -3252,14 +3289,7 @@ Example: https://server.my:8787</translation> <translation>End-to-End Encryption</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation>Encryption is currently experimental and things might break unexpectedly. <br> -Please take note that it can't be disabled afterwards.</translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation>Permissions</translation> </message> @@ -3345,7 +3375,7 @@ Please take note that it can't be disabled afterwards.</translation> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>Please enter your login password to continue:</translation> </message> @@ -3437,7 +3467,7 @@ Please take note that it can't be disabled afterwards.</translation> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>Failed to connect to secret storage</translation> </message> @@ -3527,7 +3557,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>Encryption setup failed: %1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>Identity key changed. This breaks E2EE, so logging out.</translation> </message> @@ -3635,7 +3665,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Successful Verification</translation> </message> @@ -3651,15 +3681,95 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation>Part of a thread</translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation>%1 placed a voice call.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation>%1 placed a video call.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation>%1 placed a call.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation>%1 answered the call.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation>%1 rejected the call.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation>%1 ended the call.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation>%1 is negotiating the call...</translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation>Allow them in</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation>This room was replaced for the following reason: %1</translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation>Go to replacement room</translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation>Edited</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation>Part of a thread</translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Message redaction failed: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Failed to encrypt event, sending aborted!</translation> @@ -3709,7 +3819,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 allowed members of the following rooms to automatically join this room: %2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 made the room open to guests.</translation> </message> @@ -3719,7 +3829,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 has closed the room to guest access.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 made the room history world readable. Events may be now read by non-joined people.</translation> </message> @@ -3739,7 +3849,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 set the room history visible to members since they joined the room.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 has changed the room's permissions.</translation> @@ -3882,7 +3992,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 has changed the powerlevel of event type "%2" from %3 to %4.</translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation>(empty)</translation> </message> @@ -3954,7 +4064,7 @@ Reason: %4</source> Reason: %4</translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation>%2 revoked the invite to %1.</translation> </message> @@ -4014,22 +4124,82 @@ Reason: %4</translation> <translation>%1 redacted their knock.</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation>%1 changed which servers are allowed in this room.</translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation>%1 removed the room name.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation>%1 changed the room name to: %2</translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation>%1 removed the topic.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation>%1 changed the topic to: %2</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation>%1 changed the room avatar to: %2</translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation>%1 removed the room avatar.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation>%1 changed the pinned messages.</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation>%1 changed the addresses for this room.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation>%1 changed the parent communities for this room.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation>%1 created and configured room: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation>%1 changed unknown state event %2.</translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>You joined this room.</translation> </message> <message> - <location line="+998"/> + <location line="+1019"/> <source>%1 made this room require an invitation to join.</source> <translation>%1 made this room require an invitation to join.</translation> </message> <message> - <location line="+654"/> + <location line="+618"/> <source>%1 invited %2.</source> <translation>%1 invited %2.</translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 has changed their avatar and changed their display name to %2.</translation> </message> @@ -4056,23 +4226,17 @@ Reason: %4</translation> </message> </context> <context> - <name>TimelineRow</name> + <name>TimelineSectionHeader</name> <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation>Part of a thread</translation> - </message> - <message> - <location line="-18"/> - <source>Edited</source> - <translation>Edited</translation> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> + <translation>%1's status message</translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>No room open</translation> </message> @@ -4178,7 +4342,7 @@ Reason: %4</translation> <translation>Back to room list</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation>Show or hide pinned messages</translation> </message> @@ -4233,7 +4397,7 @@ Reason: %4</translation> <translation>Settings</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation>Unpin</translation> </message> @@ -4259,24 +4423,24 @@ Reason: %4</translation> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>No available registration flows!</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>Registration aborted</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>Please enter a valid registration token.</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>Invalid token</translation> </message> @@ -4284,7 +4448,7 @@ Reason: %4</translation> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation> <numerusform>Upload file</numerusform> @@ -4295,7 +4459,7 @@ Reason: %4</translation> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>Sign out device %1</translation> </message> @@ -4305,7 +4469,12 @@ Reason: %4</translation> <translation>You signed out this device.</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation>Failed to ignore "%1": %2</translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Select an avatar</translation> </message> @@ -4325,7 +4494,7 @@ Reason: %4</translation> <translation>Error while reading file: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Global User Profile</translation> </message> @@ -4376,12 +4545,12 @@ Reason: %4</translation> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Verify</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>Start a private chat.</translation> </message> @@ -4397,11 +4566,21 @@ Reason: %4</translation> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation>Unignore the user.</translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation>Ignore the user.</translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>Refresh device list.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation>Devices</translation> </message> @@ -4434,8 +4613,8 @@ Reason: %4</translation> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>Default</translation> </message> @@ -4534,6 +4713,16 @@ Reason: %4</translation> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation>Hidden events</translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation>Ignored users</translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation>Desktop notifications</translation> </message> @@ -4724,6 +4913,11 @@ Reason: %4</translation> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation>GLOBAL MESSAGE VISIBILITY</translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation>NOTIFICATIONS</translation> </message> @@ -4788,7 +4982,7 @@ Reason: %4</translation> <translation>Periodically delete expired events</translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation>Default</translation> </message> @@ -4890,6 +5084,11 @@ If this is on, rooms that come first alphabetically will be sorted earlier than </message> <message> <location line="+8"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation>Configure whether to show or hide certain events like room joins.</translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation>Notify about received messages when the client is not currently focused.</translation> </message> @@ -4926,29 +5125,29 @@ OFF - square, ON - circle.</translation> <translation>Automatically replies to key requests from other users if they are verified, even if that device shouldn't have access to those keys otherwise.</translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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>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.</translation> </message> <message> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</translation> </message> <message> - <location line="-350"/> + <location line="-366"/> <source>Communities sidebar</source> <translation>Communities sidebar</translation> </message> <message> - <location line="+42"/> + <location line="+46"/> <source>Show message counts for communities and tags</source> <translation>Show message counts for communities and tags</translation> </message> <message> - <location line="+241"/> + <location line="+251"/> <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source> <translation>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</translation> </message> @@ -4967,7 +5166,7 @@ Status is displayed next to timestamps. Warning: If your homeserver does not support this, your rooms will never be marked as read!</translation> </message> <message> - <location line="+13"/> + <location line="+15"/> <source>Display an identicon instead of a letter when no avatar is set.</source> <translation>Display an identicon instead of a letter when no avatar is set.</translation> </message> @@ -5025,7 +5224,7 @@ be blurred.</translation> <translation>Download message encryption keys from and upload to the encrypted online key backup.</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</translation> </message> @@ -5059,7 +5258,22 @@ This setting will take effect upon restart.</translation> <translation>Regularly redact expired events as specified in the event expiration configuration. Since this is currently not executed server side, you need to have one client running this regularly.</translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation>Manage your ignored users.</translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation>System font</translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation>System emoji font</translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation>Select a file</translation> </message> @@ -5114,7 +5328,7 @@ This setting will take effect upon restart.</translation> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>CACHED</translation> </message> @@ -5144,7 +5358,17 @@ This setting will take effect upon restart.</translation> <translation>REQUEST</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation>CONFIGURE</translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation>MANAGE</translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation>Back</translation> </message> @@ -5227,29 +5451,6 @@ This setting will take effect upon restart.</translation> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Open Fallback in Browser</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Cancel</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Confirm</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation>Open the fallback, follow the steps, and confirm after completing them.</translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_eo.ts b/resources/langs/nheko_eo.ts index a6e62e2b..e8785128 100644 --- a/resources/langs/nheko_eo.ts +++ b/resources/langs/nheko_eo.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Vokante…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Konektante…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>Kromnomoj de %1</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation>Agordoj de enirrajtigaj ĉambroj</translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 kaj %n alia</numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -232,12 +238,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Invitita uzanto: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -246,7 +252,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>Konfirmi adiaŭon</translation> </message> @@ -261,7 +267,7 @@ <translation>Malsukcesis malfermi datumbazon; adiaŭas!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>Frapi al ĉambro</translation> </message> @@ -288,12 +294,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Konfirmu inviton</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Ĉu vi certe volas inviti uzanton %1 (%2)?</translation> </message> @@ -338,12 +344,12 @@ <translation>Malforbaris uzanton: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Ĉu vi certe volas komenci privatan babilon kun %1?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Malsukcesis migrado de kaŝmemoro!</translation> </message> @@ -367,7 +373,7 @@ Se vi opinias tion erara, vi povas anstataŭe fermi Nhekon, por eble reakiri via <translation>Neakorda versio de kaŝmemoro</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Malsukcesis rehavi konton je OLM. Bonvolu resaluti.</translation> </message> @@ -385,7 +391,7 @@ Se vi opinias tion erara, vi povas anstataŭe fermi Nhekon, por eble reakiri via </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Bonvolu provi resaluti: %1</translation> </message> @@ -739,7 +745,7 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Etendi</translation> </message> @@ -749,7 +755,7 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> <translation>Maletendi</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation>Ne montri nombron de sciigoj por ĉi tiu komunumo aŭ etikedo.</translation> </message> @@ -835,7 +841,7 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation>Konfirmi aliĝon al komunumo</translation> </message> @@ -876,7 +882,7 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation>Krei individuan ĉambron</translation> </message> @@ -972,7 +978,7 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation>Malĉifri sekretojn</translation> </message> @@ -1000,7 +1006,7 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Kontrolkodo</translation> </message> @@ -1051,7 +1057,7 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Estas neniu ŝloslio por malŝlosi ĉi tiun mesaĝon. Ni petis ĝin memage, sed vi povas provi repeti ĝin, se vi rapidas.</translation> </message> @@ -1086,7 +1092,7 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> <translation>Nekonata malĉifra eraro</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Peti ŝlosilon</translation> </message> @@ -1094,12 +1100,12 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation>%1 ŝaltis tutvojan ĉifradon</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1243,6 +1249,34 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished">Repaŝu, sekvu la paŝojn, kaj konfirmu ilin fininte.</translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">Iri al foliumilo por la alternativa metodo</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Nuligi</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Konfirmi</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1316,6 +1350,24 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1495,9 +1547,9 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@tacuo:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation type="unfinished"></translation> </message> <message> <location line="+42"/> @@ -1536,7 +1588,7 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>Eliri el ĉambro</translation> </message> @@ -1553,8 +1605,8 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Vi enigis nevalidan identigilon de Matrikso ekz. @tacuo:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="-157"/> @@ -1633,19 +1685,16 @@ Vi povas aldoni noton, pri kial oni akceptu vian frapadon:</translation> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>ekz. @tacuo:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> - <translation>Via saluta nomo. Identigilo de matrikso komenciĝu per «@», sekvata de via identigilo de uzanto. Post la identigilo, vi devas meti la nomon de via servilo post «:». -Vi ankaŭ povas tien meti adreson de via hejmservilo, se via servilo ne subtenas bone konatan trovmanieron. -Ekzemplo: @uzanto:servilo.mia -Se Nheko malsukcesos trovi vian hejmservilon, ĝi montros kampon, kien vi povos meti ĝian adreson permane.</translation> + <translation type="unfinished"></translation> </message> <message> <location line="+27"/> @@ -1674,15 +1723,14 @@ Se Nheko malsukcesos trovi vian hejmservilon, ĝi montros kampon, kien vi povos </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>servilo.mia:8787</translation> + <source>yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> - <translation>La adreso, per kiu oni povas kontakti la API-on de via hejmservilo. -Ekzemplo: https://servilo.mia:8787</translation> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+32"/> @@ -1699,7 +1747,7 @@ Ekzemplo: https://servilo.mia:8787</translation> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>Adiaŭi</translation> </message> @@ -1724,120 +1772,6 @@ Ekzemplo: https://servilo.mia:8787</translation> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation>Ĉi tiu ĉambro anstataŭiĝis pro la jena kialo: %1</translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation>Iri al la anstataŭa ĉambro</translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation>%1 forigis mesaĝon</translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation>%2 ŝanĝis nomon de la ĉambro al: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation>%1 forigis nomon de la ĉambro</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation>%2 ŝanĝis la temon al: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation>%1 forigis la temon</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 ŝanĝis bildon de la ĉambro</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation>%1 ŝanĝis la fiksitajn mesaĝojn.</translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation>%1 ŝanĝis la adresojn de ĉi tiu ĉambro.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation>%1 ŝanĝis la patrajn komunumojn por ĉi tiu ĉambro.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 kreis kaj agordis ĉambron: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 voĉvokis.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 vidvokis.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 vokis.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 respondis la vokon.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation>%1 malakceptis la vokon.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation>%1 elektis respondon</translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 finis la vokon.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation>%1 traktas la vokon…</translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>Enlasi ĝin</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1888,7 +1822,7 @@ Ekzemplo: https://servilo.mia:8787</translation> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Redakti</translation> </message> @@ -1923,12 +1857,7 @@ Ekzemplo: https://servilo.mia:8787</translation> <translation>Elektebloj</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation>Enigu kialon de forigo aŭ premu enigan klavon por vaka kialo:</translation> </message> @@ -1938,24 +1867,24 @@ Ekzemplo: https://servilo.mia:8787</translation> <translation>Kialo de forigo</translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>&Kopii</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>Kopii celon de &ligilo</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>Re&agi</translation> </message> @@ -2015,7 +1944,12 @@ Ekzemplo: https://servilo.mia:8787</translation> <translation>&Forigi mesaĝon</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>Kon&servi kiel</translation> </message> @@ -2038,7 +1972,7 @@ Ekzemplo: https://servilo.mia:8787</translation> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Sendi kontrolpeton</translation> </message> @@ -2258,7 +2192,7 @@ Ekzemplo: https://servilo.mia:8787</translation> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation>Efektivigi ŝanĝojn de permesoj</translation> </message> @@ -2315,9 +2249,27 @@ Ekzemplo: https://servilo.mia:8787</translation> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished">Administranto: %1</translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished">Reguligisto: %1</translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished">Uzanto: %1</translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation>Aliaj okazoj</translation> </message> @@ -2508,7 +2460,7 @@ Ekzemplo: https://servilo.mia:8787</translation> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation>Krei unikan profilon, kiu ebligos saluton al pluraj kontoj samtempe, kaj starton de pluraj nhekoj.</translation> </message> @@ -2526,7 +2478,7 @@ Ekzemplo: https://servilo.mia:8787</translation> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation>Kromnomo de «--log-level trace».</translation> </message> @@ -2551,6 +2503,11 @@ Ekzemplo: https://servilo.mia:8787</translation> <translation>speco</translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation>Respondi</translation> @@ -2688,7 +2645,7 @@ Ekzemplo: https://servilo.mia:8787</translation> <translation>La uzantonomo devas ne esti malplena, kaj devas enhavi nur la signojn a–z, 0–9, ., _, =, -, kaj /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation>Reen</translation> @@ -2732,7 +2689,7 @@ Ekzemplo: https://servilo.mia:8787</translation> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Fermi</translation> </message> @@ -2748,6 +2705,54 @@ Ekzemplo: https://servilo.mia:8787</translation> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2755,7 +2760,17 @@ Ekzemplo: https://servilo.mia:8787</translation> <translation>Esplori publikajn ĉambrojn</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished">Aliĝi</translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>Serĉi publikajn ĉambrojn</translation> </message> @@ -2764,6 +2779,11 @@ Ekzemplo: https://servilo.mia:8787</translation> <source>Choose custom homeserver</source> <translation>Elekti propran hejmservilon</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Fermi</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2816,7 +2836,7 @@ Ekzemplo: https://servilo.mia:8787</translation> <translation>Agordoj de uzanto</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>Adiaŭi</translation> </message> @@ -2841,7 +2861,27 @@ Ekzemplo: https://servilo.mia:8787</translation> <translation>Meti statmesaĝon</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>Ĉifrado ne jam agordiĝis</translation> @@ -2864,7 +2904,7 @@ Ekzemplo: https://servilo.mia:8787</translation> <translation>Fermi</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>Enigu la etikedon, kiun vi volas uzi:</translation> </message> @@ -2880,6 +2920,11 @@ Ekzemplo: https://servilo.mia:8787</translation> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation>Agordoj de ĉambro</translation> </message> @@ -2927,12 +2972,12 @@ Ekzemplo: https://servilo.mia:8787</translation> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>Anoj de %1</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2971,22 +3016,7 @@ Ekzemplo: https://servilo.mia:8787</translation> <translation>Povnivelo</translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation>Administranto: %1</translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation>Reguligisto: %1</translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation>Uzanto: %1</translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>Ĉi tiu ĉambro ne estas ĉifrata!</translation> </message> @@ -3039,25 +3069,28 @@ Ekzemplo: https://servilo.mia:8787</translation> <source>Failed to upload image: %s</source> <translation>Malsukcesis alŝuti bildon: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> - <translation>Agordoj de ĉambro</translation> + <translation type="unfinished">Agordoj de ĉambro</translation> </message> <message> <location line="+35"/> <source>Change room avatar.</source> - <translation>Ŝanĝi bildon de ĉambro.</translation> + <translation type="unfinished">Ŝanĝi bildon de ĉambro.</translation> </message> <message> <location line="+93"/> <source>Change name of this room</source> - <translation>Ŝanĝi nomon de ĉi tiu ĉambro</translation> + <translation type="unfinished">Ŝanĝi nomon de ĉi tiu ĉambro</translation> </message> <message numerus="yes"> <location line="+22"/> <source>%n member(s)</source> - <translation> + <translation type="unfinished"> <numerusform>%n ano</numerusform> <numerusform>%n anoj</numerusform> </translation> @@ -3065,17 +3098,17 @@ Ekzemplo: https://servilo.mia:8787</translation> <message> <location line="+8"/> <source>View members of %1</source> - <translation>Montri anojn de %1</translation> + <translation type="unfinished">Montri anojn de %1</translation> </message> <message> <location line="+24"/> <source>No topic set</source> - <translation>Neniu metita temo</translation> + <translation type="unfinished">Neniu metita temo</translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> - <translation>Ŝanĝi temon de ĉi tiu ĉambro</translation> + <translation type="unfinished">Ŝanĝi temon de ĉi tiu ĉambro</translation> </message> <message> <location line="+31"/> @@ -3085,22 +3118,22 @@ Ekzemplo: https://servilo.mia:8787</translation> <message> <location line="+9"/> <source>Notifications</source> - <translation>Sciigoj</translation> + <translation type="unfinished">Sciigoj</translation> </message> <message> <location line="+6"/> <source>Muted</source> - <translation>Neniuj</translation> + <translation type="unfinished">Neniuj</translation> </message> <message> <location line="+0"/> <source>Mentions only</source> - <translation>Nur mencioj</translation> + <translation type="unfinished">Nur mencioj</translation> </message> <message> <location line="+0"/> <source>All messages</source> - <translation>Ĉiuj mesaĝoj</translation> + <translation type="unfinished">Ĉiuj mesaĝoj</translation> </message> <message> <location line="+10"/> @@ -3110,43 +3143,43 @@ Ekzemplo: https://servilo.mia:8787</translation> <message> <location line="+9"/> <source>Anyone can join</source> - <translation>Ĉiu povas aliĝi</translation> + <translation type="unfinished">Ĉiu povas aliĝi</translation> </message> <message> <location line="+14"/> <source>Allow knocking</source> - <translation>Permesi frapadon</translation> + <translation type="unfinished">Permesi frapadon</translation> </message> <message> <location line="+19"/> <source>Allow joining via other rooms</source> - <translation>Permesi aliĝon tra aliaj ĉambroj</translation> + <translation type="unfinished">Permesi aliĝon tra aliaj ĉambroj</translation> </message> <message> <location line="+19"/> <source>Rooms to join via</source> - <translation>Traaliĝotaj ĉambroj</translation> + <translation type="unfinished">Traaliĝotaj ĉambroj</translation> </message> <message> <location line="+12"/> <location line="+242"/> <source>Change</source> - <translation>Ŝanĝi</translation> + <translation type="unfinished">Ŝanĝi</translation> </message> <message> <location line="-241"/> <source>Change the list of rooms users can join this room via. Usually this is the official community of this room.</source> - <translation>Ŝanĝi liston de ĉambroj, tra kiuj oni povos aliĝi al ĉi tiu. Ordinare tio estas la oficiala komunumo de ĉi tiu ĉambro.</translation> + <translation type="unfinished">Ŝanĝi liston de ĉambroj, tra kiuj oni povos aliĝi al ĉi tiu. Ordinare tio estas la oficiala komunumo de ĉi tiu ĉambro.</translation> </message> <message> <location line="+6"/> <source>Allow guests to join</source> - <translation>Permesi al gastoj aliĝi</translation> + <translation type="unfinished">Permesi al gastoj aliĝi</translation> </message> <message> <location line="+17"/> <source>Apply access rules</source> - <translation>Efektivigi regulojn pri aliro</translation> + <translation type="unfinished">Efektivigi regulojn pri aliro</translation> </message> <message> <location line="+7"/> @@ -3219,12 +3252,12 @@ Ekzemplo: https://servilo.mia:8787</translation> <location line="+60"/> <location line="+12"/> <source>Configure</source> - <translation>Agordi</translation> + <translation type="unfinished">Agordi</translation> </message> <message> <location line="-89"/> <source>Select events to hide in this room</source> - <translation>Elekti kaŝotajn okazojn en ĉi tiu ĉambro</translation> + <translation type="unfinished">Elekti kaŝotajn okazojn en ĉi tiu ĉambro</translation> </message> <message> <location line="+6"/> @@ -3244,79 +3277,72 @@ Ekzemplo: https://servilo.mia:8787</translation> <message> <location line="+9"/> <source>Encryption</source> - <translation>Ĉifrado</translation> + <translation type="unfinished">Ĉifrado</translation> </message> <message> <location line="+22"/> <source>End-to-End Encryption</source> - <translation>Tutvoja ĉifrado</translation> - </message> - <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation>Ĉifrado nun estas eksperimenta, kaj io povus rompiĝi neatendite.<br> -Bonvolu scii, ke ĉifrado ne povas esti malŝaltita poste.</translation> + <translation type="unfinished">Tutvoja ĉifrado</translation> </message> <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> - <translation>Permesoj</translation> + <translation type="unfinished">Permesoj</translation> </message> <message> <location line="+6"/> <source>View and change the permissions in this room</source> - <translation>Vidi kaj redakti permesojn en ĉi tiu ĉambro</translation> + <translation type="unfinished">Vidi kaj redakti permesojn en ĉi tiu ĉambro</translation> </message> <message> <location line="+6"/> <source>Aliases</source> - <translation>Kromnomoj</translation> + <translation type="unfinished">Kromnomoj</translation> </message> <message> <location line="+6"/> <source>View and change the addresses/aliases of this room</source> - <translation>Vidi kaj ŝanĝi la adresojn/kromnomojn de ĉi tiu ĉambro</translation> + <translation type="unfinished">Vidi kaj ŝanĝi la adresojn/kromnomojn de ĉi tiu ĉambro</translation> </message> <message> <location line="+6"/> <source>Sticker & Emote Settings</source> - <translation>Agordoj de glumarkoj kaj mienetoj</translation> + <translation type="unfinished">Agordoj de glumarkoj kaj mienetoj</translation> </message> <message> <location line="+6"/> <source>Change what packs are enabled, remove packs, or create new ones</source> - <translation>Ŝalti, forigi, aŭ krei novajn pakojn</translation> + <translation type="unfinished">Ŝalti, forigi, aŭ krei novajn pakojn</translation> </message> <message> <location line="+6"/> <source>INFO</source> - <translation>INFORMOJ</translation> + <translation type="unfinished">INFORMOJ</translation> </message> <message> <location line="+9"/> <source>Internal ID</source> - <translation>Interna identigilo</translation> + <translation type="unfinished">Interna identigilo</translation> </message> <message> <location line="+16"/> <source>Copied to clipboard</source> - <translation>Kopiiĝis al tondujo</translation> + <translation type="unfinished">Kopiiĝis al tondujo</translation> </message> <message> <location line="+19"/> <source>Room Version</source> - <translation>Versio de ĉambro</translation> + <translation type="unfinished">Versio de ĉambro</translation> </message> <message> <location line="+19"/> <source>show less</source> - <translation>montri malpli</translation> + <translation type="unfinished">montri malpli</translation> </message> <message> <location line="+0"/> <source>show more</source> - <translation>montri pli</translation> + <translation type="unfinished">montri pli</translation> </message> </context> <context> @@ -3345,7 +3371,7 @@ Bonvolu scii, ke ĉifrado ne povas esti malŝaltita poste.</translation> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>Bonvolu enigi vian pasvorton por daŭrigi:</translation> </message> @@ -3437,7 +3463,7 @@ Bonvolu scii, ke ĉifrado ne povas esti malŝaltita poste.</translation> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>Malsukcesis konektiĝi al sekreta deponejo</translation> </message> @@ -3527,7 +3553,7 @@ Se vi elektos kontrolon, vi devos havi alian aparaton disponeblan. Se vi elektos <translation>Starigo de ĉifrado malsukcesis: %1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>Identiga ŝlosilo ŝanĝiĝis. Tio rompas tutvojan ĉifradon, kaj tial la programo nun adiaŭas.</translation> </message> @@ -3636,7 +3662,7 @@ Se vi elektos kontrolon, vi devos havi alian aparaton disponeblan. Se vi elektos <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Sukcesis kontrolo</translation> </message> @@ -3652,15 +3678,95 @@ Se vi elektos kontrolon, vi devos havi alian aparaton disponeblan. Se vi elektos </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished">Parto de fadeno</translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 voĉvokis.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished">%1 vidvokis.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished">%1 vokis.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 respondis la vokon.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished">%1 malakceptis la vokon.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 finis la vokon.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished">%1 traktas la vokon…</translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished">Enlasi ĝin</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished">Ĉi tiu ĉambro anstataŭiĝis pro la jena kialo: %1</translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished">Iri al la anstataŭa ĉambro</translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished">Redaktita</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished">Parto de fadeno</translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Malsukcesis redaktado de mesaĝo: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Malsukcesis ĉifri okazon; sendado nuliĝis!</translation> @@ -3710,7 +3816,7 @@ Se vi elektos kontrolon, vi devos havi alian aparaton disponeblan. Se vi elektos <translation>%1 permesis al anoj de la jenaj ĉambroj memage aliĝi al ĉi tiu ĉambro: %2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 malfermis la ĉambron al gastoj.</translation> </message> @@ -3720,7 +3826,7 @@ Se vi elektos kontrolon, vi devos havi alian aparaton disponeblan. Se vi elektos <translation>%1 fermis la ĉambron al gastoj.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 legebligis historion de la ĉambro al ĉiu ajn. Okazoj nun legeblos al nealiĝintoj.</translation> </message> @@ -3740,7 +3846,7 @@ Se vi elektos kontrolon, vi devos havi alian aparaton disponeblan. Se vi elektos <translation>%1 videbligis historion de la ĉambro al ĉambranoj ekde ties aliĝo.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 ŝanĝis permesojn de la ĉambro.</translation> @@ -3883,7 +3989,7 @@ Se vi elektos kontrolon, vi devos havi alian aparaton disponeblan. Se vi elektos <translation>%1 ŝanĝis la povnivelon de okazo de speco «%2» de %3 al %4.</translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation>(malplena)</translation> </message> @@ -3955,7 +4061,7 @@ Reason: %4</source> Kialo: %4</translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation>%2 nuligis la inviton por %1.</translation> </message> @@ -4016,22 +4122,82 @@ Kialo: %4</translation> <translation>%1 forigis sian frapon.</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished">%2 ŝanĝis nomon de la ĉambro al: %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished">%2 ŝanĝis la temon al: %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished">%1 ŝanĝis la fiksitajn mesaĝojn.</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished">%1 ŝanĝis la adresojn de ĉi tiu ĉambro.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished">%1 ŝanĝis la patrajn komunumojn por ĉi tiu ĉambro.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 kreis kaj agordis ĉambron: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>Vi aliĝis ĉi tiun ĉambron.</translation> </message> <message> - <location line="+998"/> + <location line="+1019"/> <source>%1 made this room require an invitation to join.</source> <translation>%1 necesigis inviton por aliĝo al ĉi tiu ĉambro.</translation> </message> <message> - <location line="+654"/> + <location line="+618"/> <source>%1 invited %2.</source> <translation>%1 invitis uzanton %2.</translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 ŝanĝis sian profilbildon kaj sian prezentan nomon al %2.</translation> </message> @@ -4058,23 +4224,17 @@ Kialo: %4</translation> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation>Parto de fadeno</translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> - <translation>Redaktita</translation> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Neniu ĉambro estas malfermita</translation> </message> @@ -4180,7 +4340,7 @@ Kialo: %4</translation> <translation>Reen al listo de ĉambroj</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation>Montri aŭ kaŝi fiksitajn mesaĝojn</translation> </message> @@ -4235,7 +4395,7 @@ Kialo: %4</translation> <translation>Agordoj</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation>Malfiksi</translation> </message> @@ -4261,24 +4421,24 @@ Kialo: %4</translation> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>Neniuj disponeblaj manieroj de registriĝo!</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>Registriĝo nuliĝis</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>Bonvolu enigi validan registran pecon.</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>Nevalida peco</translation> </message> @@ -4286,7 +4446,7 @@ Kialo: %4</translation> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation> <numerusform>Alŝuti dosieron</numerusform> @@ -4297,7 +4457,7 @@ Kialo: %4</translation> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>Adiaŭigi aparaton %1</translation> </message> @@ -4307,7 +4467,12 @@ Kialo: %4</translation> <translation>Vi adiaŭigis ĉi tiun aparaton.</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Elektu profilbildon</translation> </message> @@ -4327,7 +4492,7 @@ Kialo: %4</translation> <translation>Eraris legado de dosiero: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Ĉiea profilo de uzanto</translation> </message> @@ -4378,12 +4543,12 @@ Kialo: %4</translation> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Kontroli</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>Komenci privatan babilon.</translation> </message> @@ -4399,11 +4564,21 @@ Kialo: %4</translation> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>Aktualigi liston de aparatoj.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Aparatoj</translation> </message> @@ -4436,8 +4611,8 @@ Kialo: %4</translation> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>Implicita</translation> </message> @@ -4536,6 +4711,16 @@ Kialo: %4</translation> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished">Kaŝitaj okazoj</translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation>Labortablaj sciigoj</translation> </message> @@ -4726,6 +4911,11 @@ Kialo: %4</translation> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation>SCIIGOJ</translation> </message> @@ -4790,7 +4980,7 @@ Kialo: %4</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation>Implicita</translation> </message> @@ -4876,6 +5066,11 @@ aŭ meti aliajn elekteblojn.</translation> </message> <message> <location line="+8"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation>Sciigi pri ricevitaj mesaĝoj kiam la kliento ne estas en fokuso.</translation> </message> @@ -4912,29 +5107,29 @@ NE – kvadrato, JES – cirklo.</translation> <translation>Memage respondas al petoj pri ŝlosiloj de aliaj uzantoj, se ili estas kontrolitaj, eĉ se alie tiu aparato maldevus aliri tiujn ŝlosilojn.</translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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>La ŝlosilo, per kiu vi kontrolos viajn proprajn aparatojn. Se ĝi estas kaŝmemorata, kontrolo de unu el viaj aparatoj devus marki ĝin kontrolita por ĉiuj aliaj viaj aparatoj, kaj ankaŭ por uzantoj, kiuj kontrolis vin.</translation> </message> <message> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation>Atentigas je ricevo de mesaĝo. Ĉi tio kutime movbildigas la simbolbildon sur la pleto iumaniere.</translation> </message> <message> - <location line="-350"/> + <location line="-366"/> <source>Communities sidebar</source> <translation>Komunuma breto</translation> </message> <message> - <location line="+42"/> + <location line="+46"/> <source>Show message counts for communities and tags</source> <translation>Montri nombron de mesaĝoj por komunumoj kaj etikedoj</translation> </message> <message> - <location line="+241"/> + <location line="+251"/> <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source> <translation>Agordi la maksimuman larĝecon de mesaĝoj en la historio (en bilderoj). Tio povas plibonigi legeblecon sur larĝa ekrano, kiam la fenestro de Nheko grandas.</translation> </message> @@ -4967,7 +5162,7 @@ Stato aperas flanke de tempomarkoj. Averto: Se via hejmservilo ne subtenas tion ĉi, viaj ĉambroj neniam markiĝos legitaj!</translation> </message> <message> - <location line="+13"/> + <location line="+15"/> <source>Display an identicon instead of a letter when no avatar is set.</source> <translation>Montras identigan bildon anstataŭ litero, kiam ne disponeblas profilbildo.</translation> </message> @@ -5025,7 +5220,7 @@ malklariĝos.</translation> <translation>Elŝutu ĉifrajn ŝlosilojn por mesaĝoj de la ĉifrita enreta deponejo de ŝlosiloj, aŭ alŝutu ilin tien.</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation>La ŝlosilo por malĉifrado de enretaj savkopioj de ŝlosiloj. Se ĝi estas kaŝmemorata, vi povas ŝalti enretan savkopiadon de ŝlosiloj por deponi ŝlosilojn sekure ĉifritajn al la servilo.</translation> </message> @@ -5059,7 +5254,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation>Elektu dosieron</translation> </message> @@ -5114,7 +5324,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>KAŜMEMORITA</translation> </message> @@ -5144,7 +5354,17 @@ This setting will take effect upon restart.</source> <translation>PETI</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation>Reen</translation> </message> @@ -5228,29 +5448,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Iri al foliumilo por la alternativa metodo</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Nuligi</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Konfirmi</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation>Repaŝu, sekvu la paŝojn, kaj konfirmu ilin fininte.</translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_es.ts b/resources/langs/nheko_es.ts index e776f63a..ecd67e5a 100644 --- a/resources/langs/nheko_es.ts +++ b/resources/langs/nheko_es.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Llamando...</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Conectando...</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 y %n otro</numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -232,12 +238,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Se invitó al usuario: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -246,7 +252,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -273,7 +279,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation>Error al abrir la base de datos, cerrando sesión!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation type="unfinished"></translation> </message> @@ -305,12 +311,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Confirmar invitación</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>¿Seguro que quieres invitar a %1 (%2)?</translation> </message> @@ -375,12 +381,12 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Usuario desbaneado: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>¿Seguro que quieres comenzar un chat privado con %1?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Migración de cache fallida!</translation> </message> @@ -390,7 +396,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Versión de cache incompatible</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>No se ha podido restaurar la cuenta OLM. Por favor inicia sesión de nuevo.</translation> </message> @@ -408,7 +414,7 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Por favor intenta iniciar sesión de nuevo: %1</translation> </message> @@ -735,7 +741,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Expandir</translation> </message> @@ -745,7 +751,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Colapsar</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -831,7 +837,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -872,7 +878,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -968,7 +974,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+305"/> + <location filename="../../src/ChatPage.cpp" line="+312"/> <source>Decrypt secrets</source> <translation>Desencriptar secretos</translation> </message> @@ -996,7 +1002,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Código de verificación</translation> </message> @@ -1047,7 +1053,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>No hay clave para desbloquear este mensaje. Solicitamos la clave automáticamente, pero puedes intentar solicitandola de nuevo si eres impaciente.</translation> </message> @@ -1082,7 +1088,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Error de desencriptación desconocido</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Solicitar clave</translation> </message> @@ -1090,12 +1096,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1239,6 +1245,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">Abrir respaldo en el navegador</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Cancelar</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Confirmar</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1312,6 +1346,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1493,9 +1545,9 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@joe:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation type="unfinished"></translation> </message> <message> <location line="+42"/> @@ -1534,7 +1586,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>Salir de la sala</translation> </message> @@ -1551,8 +1603,8 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Has insertado un ID de Matrix invalido ej @joe:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="-157"/> @@ -1631,14 +1683,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>ej @joe:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1669,13 +1721,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>mi.servidor:8787</translation> + <source>yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1692,7 +1744,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>Cerrar sesión</translation> </message> @@ -1717,120 +1769,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 cambió el avatar de la sala</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation>%1 cambió los mensajes fijados.</translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation>%1 cambió las direcciones para esta sala.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 creó y configuró la sala: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 hizo una llamada de voz.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 hizo una videollamada.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 hizo una llamada.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 atendió la llamada.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 terminó la llamada.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>Permitir que entren</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1881,7 +1819,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Editar</translation> </message> @@ -1916,12 +1854,7 @@ Example: https://server.my:8787</source> <translation>Opciones</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1931,24 +1864,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>&Copiar</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>Copiar dirección de &enlace</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>Re&accionar</translation> </message> @@ -2008,7 +1941,12 @@ Example: https://server.my:8787</source> <translation>Elimin&ar mensaje</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>&Guardar como</translation> </message> @@ -2031,7 +1969,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Enviar solicitud de verificación</translation> </message> @@ -2251,7 +2189,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2308,9 +2246,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2501,7 +2457,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2534,7 +2490,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Escribe un mensaje...</translation> </message> <message> - <location filename="../../src/main.cpp" line="-26"/> + <location filename="../../src/main.cpp" line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2558,6 +2514,11 @@ Example: https://server.my:8787</source> <source>type</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ReCaptchaDialog</name> @@ -2681,7 +2642,7 @@ Example: https://server.my:8787</source> <translation>El nombre de usuario no debe estar vacio, y sólo debe contener los carácteres a-z, 0-9, ., _, =, -, y /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2725,7 +2686,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Cerrar</translation> </message> @@ -2741,6 +2702,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2748,7 +2757,17 @@ Example: https://server.my:8787</source> <translation>Explorar salas públicas</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>Buscar salas públicas</translation> </message> @@ -2757,6 +2776,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation>Seleccionar servidor base personalizado</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Cerrar</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2809,7 +2833,7 @@ Example: https://server.my:8787</source> <translation>Ajustes de usuario</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>Cerrar sesión</translation> </message> @@ -2834,7 +2858,27 @@ Example: https://server.my:8787</source> <translation>Establecer estado</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>La encriptación no está configurada</translation> @@ -2857,7 +2901,7 @@ Example: https://server.my:8787</source> <translation>Cerrar</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>Inserta la etiqueta que deseas usar:</translation> </message> @@ -2873,6 +2917,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2920,12 +2969,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>Miembros de: %1</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2964,22 +3013,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>Esta sala no está encriptada!</translation> </message> @@ -3032,10 +3066,13 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation>Hubo un problema al subir la imagen: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> - <translation>Ajustes de la sala</translation> + <translation type="unfinished">Ajustes de la sala</translation> </message> <message> <location line="+35"/> @@ -3050,8 +3087,7 @@ Example: https://server.my:8787</source> <message numerus="yes"> <location line="+22"/> <source>%n member(s)</source> - <translatorcomment>"miembro" is for a single person, miembros is for many</translatorcomment> - <translation> + <translation type="unfinished"> <numerusform>%n miembro</numerusform> <numerusform>%n miembros</numerusform> </translation> @@ -3067,7 +3103,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3079,22 +3115,22 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Notifications</source> - <translation>Notificationes</translation> + <translation type="unfinished">Notificationes</translation> </message> <message> <location line="+6"/> <source>Muted</source> - <translation>Silenciado</translation> + <translation type="unfinished">Silenciado</translation> </message> <message> <location line="+0"/> <source>Mentions only</source> - <translation>Sólo menciones</translation> + <translation type="unfinished">Sólo menciones</translation> </message> <message> <location line="+0"/> <source>All messages</source> - <translation>Todos los mensajes</translation> + <translation type="unfinished">Todos los mensajes</translation> </message> <message> <location line="+10"/> @@ -3125,7 +3161,7 @@ Example: https://server.my:8787</source> <location line="+12"/> <location line="+242"/> <source>Change</source> - <translation>Cambiar</translation> + <translation type="unfinished">Cambiar</translation> </message> <message> <location line="-241"/> @@ -3238,21 +3274,15 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Encryption</source> - <translation>Encriptación</translation> + <translation type="unfinished">Encriptación</translation> </message> <message> <location line="+22"/> <source>End-to-End Encryption</source> - <translation>Encriptado de extremo a extremo</translation> - </message> - <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Encriptado de extremo a extremo</translation> </message> <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3274,7 +3304,7 @@ Example: https://server.my:8787</source> <message> <location line="+6"/> <source>Sticker & Emote Settings</source> - <translation>Ajustes de Stickers & Emotes</translation> + <translation type="unfinished">Ajustes de Stickers & Emotes</translation> </message> <message> <location line="+6"/> @@ -3284,12 +3314,12 @@ Example: https://server.my:8787</source> <message> <location line="+6"/> <source>INFO</source> - <translation>INFORMACION</translation> + <translation type="unfinished">INFORMACION</translation> </message> <message> <location line="+9"/> <source>Internal ID</source> - <translation>ID Interno</translation> + <translation type="unfinished">ID Interno</translation> </message> <message> <location line="+16"/> @@ -3299,7 +3329,7 @@ Example: https://server.my:8787</source> <message> <location line="+19"/> <source>Room Version</source> - <translation>Versión de la sala</translation> + <translation type="unfinished">Versión de la sala</translation> </message> <message> <location line="+19"/> @@ -3338,7 +3368,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>Por favor inserta tu contraseña para iniciar sesión:</translation> </message> @@ -3430,7 +3460,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>Hubo en error al conectarse al almacenamiento secreto</translation> </message> @@ -3520,7 +3550,7 @@ Si escoges verificar, necesitas tener otro dispositivo disponible. Si escoges &q <translation>Falló en la configuración de encriptación: %1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>La clave de identidad cambió. Esto rompe la E2EE, por lo que se cierra la sesión.</translation> </message> @@ -3628,7 +3658,7 @@ Si escoges verificar, necesitas tener otro dispositivo disponible. Si escoges &q <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Verificación Exitosa</translation> </message> @@ -3644,15 +3674,95 @@ Si escoges verificar, necesitas tener otro dispositivo disponible. Si escoges &q </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 hizo una llamada de voz.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished">%1 hizo una videollamada.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished">%1 hizo una llamada.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 atendió la llamada.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 terminó la llamada.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished">Permitir que entren</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished">Editado</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Falló en la eliminación del mensaje: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Falló al encriptar el evento, abortando el envío!</translation> @@ -3707,7 +3817,7 @@ Si escoges verificar, necesitas tener otro dispositivo disponible. Si escoges &q <translation>%1 permitió a los miembros de las siguientes salas unirse automáticamente a a esta sala: %2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 abrió la sala a invitados.</translation> </message> @@ -3717,7 +3827,7 @@ Si escoges verificar, necesitas tener otro dispositivo disponible. Si escoges &q <translation>%1 restringió la sala a invitados.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 hizo el historial de la sala legible para cualquiera. Ahora los eventos pueden ser leídos por personas que no se hayan unido.</translation> </message> @@ -3737,7 +3847,7 @@ Si escoges verificar, necesitas tener otro dispositivo disponible. Si escoges &q <translation>%1 hizo el historial visible a los miembros desde el momento en el que se unieron a la sala.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 cambió los permisos de la sala.</translation> @@ -3880,7 +3990,7 @@ Si escoges verificar, necesitas tener otro dispositivo disponible. Si escoges &q <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3952,12 +4062,12 @@ Reason: %4</source> Razón: %4</translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 cambió su avatar y su nombre a %2.</translation> </message> @@ -4012,12 +4122,72 @@ Razón: %4</translation> <translation>%1 canceló después de tocar la puerta.</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished">%1 cambió los mensajes fijados.</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished">%1 cambió las direcciones para esta sala.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 creó y configuró la sala: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>Te has unido a esta sala.</translation> </message> <message> - <location line="+1695"/> + <location line="+1679"/> <source>%2 revoked the invite to %1.</source> <translation type="unfinished"></translation> </message> @@ -4049,23 +4219,17 @@ Razón: %4</translation> </message> </context> <context> - <name>TimelineRow</name> + <name>TimelineSectionHeader</name> <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> - <message> - <location line="-18"/> - <source>Edited</source> - <translation>Editado</translation> - </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Ninguna sala abierta</translation> </message> @@ -4171,7 +4335,7 @@ Razón: %4</translation> <translation>Volver a la lista de salas</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation>Mostrar u ocultar mensajes fijados</translation> </message> @@ -4226,7 +4390,7 @@ Razón: %4</translation> <translation>Ajustes</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation>Desfijar</translation> </message> @@ -4252,24 +4416,24 @@ Razón: %4</translation> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>No hay flujos de registro disponibles!</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>Registro abortado</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>Por favor, introduzca un token de registro válido.</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>Token inválido</translation> </message> @@ -4277,7 +4441,7 @@ Razón: %4</translation> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4288,7 +4452,7 @@ Razón: %4</translation> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>Cerrar sesión en el dispositivo %1</translation> </message> @@ -4298,7 +4462,12 @@ Razón: %4</translation> <translation>Cerraste sesión en este dispositivo.</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Selecciona un avatar</translation> </message> @@ -4318,7 +4487,7 @@ Razón: %4</translation> <translation>Error al leer el archivo: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Perfil de Usuario Global</translation> </message> @@ -4369,12 +4538,12 @@ Razón: %4</translation> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Verificar</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>Empezar un chat privado.</translation> </message> @@ -4390,11 +4559,21 @@ Razón: %4</translation> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>Refrescar lista de dispositivos.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Dispositivos</translation> </message> @@ -4427,8 +4606,8 @@ Razón: %4</translation> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>Por defecto</translation> </message> @@ -4532,6 +4711,16 @@ Razón: %4</translation> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished">Notificaciones de escritorio</translation> </message> @@ -4727,6 +4916,11 @@ Razón: %4</translation> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4791,7 +4985,7 @@ Razón: %4</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished">Por defecto</translation> </message> @@ -4906,6 +5100,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -5003,7 +5202,7 @@ be blurred.</source> <translation type="unfinished">Descargar las claves de los mensajes y subirlas a tu copia de seguridad encriptada de la clave.</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished">La clave para desencriptar copias de seguridad en línea. Si está en la cache, puedes activar la copia de seguridad en línea para almacenar tus claves de encriptación de forma segura en el servidor.</translation> </message> @@ -5040,7 +5239,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished">Seleccionar un archivo</translation> </message> @@ -5095,7 +5309,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>EN CACHE</translation> </message> @@ -5125,7 +5339,17 @@ This setting will take effect upon restart.</source> <translation>SOLICITAR</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5208,29 +5432,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Abrir respaldo en el navegador</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Cancelar</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Confirmar</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_et.ts b/resources/langs/nheko_et.ts index 8cb2b582..0c1b14ae 100644 --- a/resources/langs/nheko_et.ts +++ b/resources/langs/nheko_et.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Helistan…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Ühendan…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>%1 aliased</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation>Lubatud jututubade seadistused</translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation>%1 ja %2</translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 ja veel %n teine kasutaja</numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation>X11</translation> </message> @@ -232,12 +238,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Kutsutud kasutaja: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation> @@ -248,7 +254,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>Kinnita väljalogimine</translation> </message> @@ -263,7 +269,7 @@ <translation>Andmebaasi avamine ei õnnestunud. Login välja!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>Koputa jututoa uksele</translation> </message> @@ -289,12 +295,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Kinnita kutse</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Kas sa tõesti soovid saata kutset kasutajale %1 (%2)?</translation> </message> @@ -339,12 +345,12 @@ <translation>Suhtluskeeld eemaldatud: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Kas sa kindlasti soovid alustada otsevestlust kasutajaga %1?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Puhvri versiooniuuendus ebaõnnestus!</translation> </message> @@ -368,7 +374,7 @@ Kui sa arvad, et tegemist on veaga, siis võid selle asemel Nheko sulgeda ja võ <translation>Mitteühilduv puhvri versioon</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>OLM konto taastamine ei õnnestunud. Palun logi uuesti sisse.</translation> </message> @@ -386,7 +392,7 @@ Kui sa arvad, et tegemist on veaga, siis võid selle asemel Nheko sulgeda ja võ </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Palun proovi uuesti sisse logida: %1</translation> </message> @@ -740,7 +746,7 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Laienda</translation> </message> @@ -750,7 +756,7 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim <translation>Ahenda</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation>Ära näita teavituste loendit selle kogukonna või sildi kohta.</translation> </message> @@ -836,7 +842,7 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation>Kinnita liitumine kogukonnaga</translation> </message> @@ -877,7 +883,7 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation>Alusta otsevestlust</translation> </message> @@ -973,7 +979,7 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation>Dekrüpti andmed</translation> </message> @@ -1001,7 +1007,7 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Verifitseerimise kood</translation> </message> @@ -1052,7 +1058,7 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Selle sõnumi dekrüptimiseks pole veel vajalikke võtmeid. Me oleme neid serverist automaatselt laadimas, kuid kui sul on väga kiire, siis võid seda uuesti teha.</translation> </message> @@ -1087,7 +1093,7 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim <translation>Teadmata viga dekrüptimisel</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Laadi krüptovõti</translation> </message> @@ -1095,12 +1101,12 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation>%1 võttis kasutusele läbiva krüptimise</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation>Krüptimine tagab, et sõnumeid saavad lugevad vaid need kasutajad, kellele sa sõnumeid saadad. Kui tahad kindel olla, et teised kasutajad on päriselt ka need, kellena nad end esitlevad, siis pead nad ka verifitseerima.</translation> </message> @@ -1244,6 +1250,34 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation>Registreerimise tagavaravariant</translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation>Ava kasutaja registreerimise tagavaravariant, läbi kõik sammud ja kinnita seda, kui kõik valmis on.</translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation>Ava kasutaja registreerimise tagavaravariant veebibrauseris</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation>Katkesta</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation>Kinnita</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1317,6 +1351,24 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation>Eiratud kasutajad</translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation>Kasutaja eiramisel on tema sõnumid sinu jaoks peidetud (aga tema saab sinu omi ikka näha).</translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation>Lõpeta eiramine.</translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1496,9 +1548,9 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@kadri:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation>@kasutaja:sinuserver.domeen.com</translation> </message> <message> <location line="+42"/> @@ -1537,7 +1589,7 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>Lahku jututoast</translation> </message> @@ -1554,8 +1606,8 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Sisestatud Matrix'i kasutajatunnus on vigane - peaks olema @kasutaja:server.tld</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation>Sa oled sisestanud vale või vigase Matrixi kasutajatunnuse, näiteks @kasutaja:sinuserver.domeen.com</translation> </message> <message> <location line="-157"/> @@ -1634,19 +1686,19 @@ Kui soovid, siis võid lisada ka selgituse, miks peaks sinu koputusele reageerim </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>näiteks @kadri:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation>näiteks @kasutaja:sinuserver.domeen.com</translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> - <translation>Sinu kasutajanimi sisselogimiseks. Matrix'i kasutajatunnus algab @ märgiga ning sellele järgneb kasutajanimi. Seejärel peale koolonit -on sinu koduserveri nimi. Kui sinu koduserver ei toeta .well-known nimelahendust, siis sa võid lisada ka koduserveri aadressi. -Näiteks @kadri:server.minu -Kui Nheko ei suuda tuvastada sinu koduserverit, siis ta kuvab sulle andmevälja selle sisestamiseks.</translation> + <translation>Sinu kasutajanimi Õige mxid alguses peaks olema @, millele järgneb kasutajanimi ning peale sellele järgnevat : on kirjas serveri nimi. +Kui sinu koduserver ei toeta .well-known tuvastust, siis võid siia kirjutada ka serveri aadressi. +Mxid näide - @kasutaja:sinuserver.domeen.com +Kui Nheko ei suuda tuvastada sinu koduserverit, siis kuvab ta välja, kuhu saad selle sisestada.</translation> </message> <message> <location line="+27"/> @@ -1675,15 +1727,15 @@ Kui Nheko ei suuda tuvastada sinu koduserverit, siis ta kuvab sulle andmevälja </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>server.minu:8787</translation> + <source>yourserver.example.com:8787</source> + <translation>sinuserver.domeen.com:8787</translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> - <translation>Aadress, mis võimaldab ligipääsu sinu koduserveri API'le. -Näiteks: https://minuserver.ee:8787</translation> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> + <translation>Aadress, kuhu saab sinu koduserveri API pihta päringuid teha. +Näide: https://sinuserver.domeen.com:8787</translation> </message> <message> <location line="+32"/> @@ -1699,7 +1751,7 @@ Näiteks: https://minuserver.ee:8787</translation> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>Logi välja</translation> </message> @@ -1724,120 +1776,6 @@ Näiteks: https://minuserver.ee:8787</translation> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation>Jututuba asendati järgneval põhjusel: %1</translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation>Mine uude jututuppa</translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation>%1 eemaldas sõnumi</translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation>%1 muutis serverid, mis on selles jututoas lubatud.</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation>%2 muutis jututoa uueks nimeks: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation>%1 eemaldas jututoa nime</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation>%2 muutis jututoa uueks teemaks: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation>%1 eemaldas jututoa teema</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 muutis jututoa tunnuspilti</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation>%1 muutis klammerdatud sõnumeid.</translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation>%1 muutis selle jututoa aadresse.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation>%1 muutis selle jututoa ülemkogukonda.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 lõi ja seadistas jututoa: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 helistas.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 alustas videokõnet.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 helistas.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 vastas kõnele.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation>%1 ei võtnud kõnet vastu.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation>%1 - vali vastus</translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 lõpetas kõne.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation>%1 alustab kõnet...</translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>Luba neid</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1888,7 +1826,7 @@ Näiteks: https://minuserver.ee:8787</translation> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Muuda</translation> </message> @@ -1923,12 +1861,7 @@ Näiteks: https://minuserver.ee:8787</translation> <translation>Valikud</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation>Kasutaja %1 olekusõnum</translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation>Lisa eemaldamise põhjus või põhjust lisada ei taha, siis vajuta Enter-klahvi:</translation> </message> @@ -1938,24 +1871,24 @@ Näiteks: https://minuserver.ee:8787</translation> <translation>Eemaldamise põhjus</translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation>Ava &sõnum</translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>&Kopeeri</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>Kopeeri &lingi asukoht</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>Re&ageeri</translation> </message> @@ -2015,7 +1948,12 @@ Näiteks: https://minuserver.ee:8787</translation> <translation>Eemal&da sõnum</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation>Teata sõnumist</translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>&Salvesta kui</translation> </message> @@ -2038,7 +1976,7 @@ Näiteks: https://minuserver.ee:8787</translation> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Saada verifitseerimispäring</translation> </message> @@ -2258,7 +2196,7 @@ Näiteks: https://minuserver.ee:8787</translation> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation>Jõusta õiguste muudatused</translation> </message> @@ -2315,9 +2253,27 @@ Näiteks: https://minuserver.ee:8787</translation> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation>Peakasutaja: %1</translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation>Moderaator: %1</translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation>Tavakasutaja: %1</translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation>Muud sündmused</translation> </message> @@ -2508,7 +2464,7 @@ Näiteks: https://minuserver.ee:8787</translation> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation>Loo unikaalne kasutajaprofiil, mis võimaldab samaaegselt sisse logide mitmele Matrixi kontole ja avada vastavalt mitu nheko rakenduse akent.</translation> </message> @@ -2526,7 +2482,7 @@ Näiteks: https://minuserver.ee:8787</translation> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation>Alias võtmele „--log-level trace“.</translation> </message> @@ -2551,6 +2507,11 @@ Näiteks: https://minuserver.ee:8787</translation> <translation>tüüp</translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation>Andmebaasi tihendamine võib parandada jõudlust.</translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation>Vasta</translation> @@ -2688,7 +2649,7 @@ Näiteks: https://minuserver.ee:8787</translation> <translation>Kasutajanimi ei tohi olla tühi ning võib sisaldada vaid a-z, 0-9, ., _, =, -, / tähemärke.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation>Tagasi</translation> @@ -2732,7 +2693,7 @@ Näiteks: https://minuserver.ee:8787</translation> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Sulge</translation> </message> @@ -2748,6 +2709,54 @@ Näiteks: https://minuserver.ee:8787</translation> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation>Teata sõnumist</translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation>See sõnum saadetakse serveri haldurile ülevaatamiseks. Palun arvesta, et serverite haldajad alati ei pruugi ülevaatamiseks saadetud sisuga tutvuda. Sul võib-olla on vaja ka paluda jututoa moderaatorilt sisu eemaldamist.</translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation>Palun lisa teatamise põhjus:</translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation>Kui halb on see sõnum?</translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation>Üldsegi mitte halb</translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation>Mingil määral halb</translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation>Halb</translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation>Tõsiselt halb</translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation>Väga tõsiselt halb</translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2755,7 +2764,17 @@ Näiteks: https://minuserver.ee:8787</translation> <translation>Tutvu avalike jututubadega</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation>Liitu</translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation>Ava</translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>Otsi avalikke jututube</translation> </message> @@ -2764,6 +2783,11 @@ Näiteks: https://minuserver.ee:8787</translation> <source>Choose custom homeserver</source> <translation>Vali oma koduserver</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation>Sulge</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2816,7 +2840,7 @@ Näiteks: https://minuserver.ee:8787</translation> <translation>Kasutaja seadistused</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>Logi välja</translation> </message> @@ -2841,7 +2865,27 @@ Näiteks: https://minuserver.ee:8787</translation> <translation>Sisesta olekuteade</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation>Sinu automaatne võrguolek</translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation>Võrgus</translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation>Pole saadaval</translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation>Võrgust väljas</translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>Krüptimine pole veel kasutusel</translation> @@ -2864,7 +2908,7 @@ Näiteks: https://minuserver.ee:8787</translation> <translation>Sulge</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>Kirjuta silt, mida soovid kasutada:</translation> </message> @@ -2880,6 +2924,11 @@ Näiteks: https://minuserver.ee:8787</translation> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation>Märgi loetuks</translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation>Jututoa seadistused</translation> </message> @@ -2927,12 +2976,12 @@ Näiteks: https://minuserver.ee:8787</translation> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>%1 jututoa liikmed</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2971,22 +3020,7 @@ Näiteks: https://minuserver.ee:8787</translation> <translation>Kasutaja õigused</translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation>Peakasutaja: %1</translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation>Moderaator: %1</translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation>Tavakasutaja: %1</translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>See jututuba on krüptimata!</translation> </message> @@ -3039,8 +3073,11 @@ Näiteks: https://minuserver.ee:8787</translation> <source>Failed to upload image: %s</source> <translation>Viga faili üleslaadimisel: %1</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation>Jututoa seadistused</translation> </message> @@ -3073,7 +3110,7 @@ Näiteks: https://minuserver.ee:8787</translation> <translation>Teema on kirjeldamata</translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation>Muuda selle jututoa teemat</translation> </message> @@ -3252,21 +3289,14 @@ Näiteks: https://minuserver.ee:8787</translation> <translation>Läbiv krüptimine</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation>Krüptimine on Nhekos hetkel veel katseline ning nii mõndagi võib ootamatult katki minna. <br> -Palun arvesta, et krüptimist ei saa hiljem enam välja lülitada.</translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation>Õigused</translation> </message> <message> <location line="+6"/> <source>View and change the permissions in this room</source> - <translation>Selle jututoa õiguste vaatamine ja muutmine</translation> + <translation>Vaata ja muuda selle jututoa õigusi</translation> </message> <message> <location line="+6"/> @@ -3276,7 +3306,7 @@ Palun arvesta, et krüptimist ei saa hiljem enam välja lülitada.</translation> <message> <location line="+6"/> <source>View and change the addresses/aliases of this room</source> - <translation>Selle jututoa aadresside ja/või aliaste vaatamine ja muutmine</translation> + <translation>Vaata ja muuda selle jututoa aadresse ja/või aliasi</translation> </message> <message> <location line="+6"/> @@ -3345,7 +3375,7 @@ Palun arvesta, et krüptimist ei saa hiljem enam välja lülitada.</translation> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>Jätkamaks palun sisesta oma salasõna:</translation> </message> @@ -3437,7 +3467,7 @@ Palun arvesta, et krüptimist ei saa hiljem enam välja lülitada.</translation> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>Ühenduse loomine võtmehoidlaga ei õnnestunud</translation> </message> @@ -3527,7 +3557,7 @@ Kui eelistad verifitseerimist, siis peab sul teine seade olema käepärast. Kui <translation>Krüptimise seadistamine ei õnnestunud: %1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>Sinu isikutuvastuse võti on muutunud. Kuna seetõttu läheb läbiv krüptimine katki, siis login välja.</translation> </message> @@ -3635,7 +3665,7 @@ Kui eelistad verifitseerimist, siis peab sul teine seade olema käepärast. Kui <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Verifitseerimine õnnestus</translation> </message> @@ -3651,15 +3681,95 @@ Kui eelistad verifitseerimist, siis peab sul teine seade olema käepärast. Kui </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation>Osa jutulõngast</translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation>%1 helistas.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation>%1 alustas videokõnet.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation>%1 helistas.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation>%1 vastas kõnele.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation>%1 ei võtnud kõnet vastu.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation>%1 valitud vastus.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation>%1 lõpetas kõne.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation>%1 alustab kõnet...</translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation>Luba neid</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation>Jututuba asendati järgneval põhjusel: %1</translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation>Mine uude jututuppa</translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation>Muudetud</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation>Osa jutulõngast</translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Sõnumi ümbersõnastamine ebaõnnestus: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Sündmuse krüptimine ei õnnestunud, katkestame saatmise!</translation> @@ -3709,7 +3819,7 @@ Kui eelistad verifitseerimist, siis peab sul teine seade olema käepärast. Kui <translation>%1 lubas järgmiste jututubade liikmetel selle jututoaga liituda: %2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 muutis selle jututoa külalistele ligipääsetavaks.</translation> </message> @@ -3719,7 +3829,7 @@ Kui eelistad verifitseerimist, siis peab sul teine seade olema käepärast. Kui <translation>%1 eemaldas sellest jututoast külaliste ligipääsu.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 muutis, et kogu maailm saab selle jututoa ajalugu lugeda. Kõiki sündmusi saavad lugeda ka need, kes ei ole liitunud jututoaga.</translation> </message> @@ -3739,7 +3849,7 @@ Kui eelistad verifitseerimist, siis peab sul teine seade olema käepärast. Kui <translation>%1 muutis, et selle jututoa ajalugu saavad lugeda kõik liikmed alates jututoaga liitumise hetkest.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 muutis selle jututoa õigusi.</translation> @@ -3882,7 +3992,7 @@ Kui eelistad verifitseerimist, siis peab sul teine seade olema käepärast. Kui <translation>%1 muutis toimingu „%2“ jaoks vajalikke õigusi: %3 -> %4.</translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation>(tühi)</translation> </message> @@ -3954,7 +4064,7 @@ Reason: %4</source> Põhjus: %4</translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation>%2 tühistas kutse kasutajale %1.</translation> </message> @@ -4014,22 +4124,82 @@ Põhjus: %4</translation> <translation>%1 muutis oma koputust jututoa uksele.</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation>%1 muutis serverid, mis on selles jututoas lubatud.</translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation>%1 eemaldas jututoa nime.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation>%1 muutis jututoa uueks nimeks: %2</translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation>%1 eemaldas jututoa teema.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation>%1 muutis jututoa uueks teemaks: %2</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation>%1 muutis uueks jututoa tunnuspildiks: %2</translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation>%1 eemaldas jututoa tunnuspildi.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation>%1 muutis klammerdatud sõnumeid.</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation>%1 muutis selle jututoa aadresse.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation>%1 muutis selle jututoa ülemkogukonda.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation>%1 lõi ja seadistas jututoa: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation>%1 muutus teadmata olekusündmust: %2.</translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>Sa liitusid jututoaga.</translation> </message> <message> - <location line="+998"/> + <location line="+1019"/> <source>%1 made this room require an invitation to join.</source> <translation>%1 seadistas, et see jututuba vajab liitumiseks kutset.</translation> </message> <message> - <location line="+654"/> + <location line="+618"/> <source>%1 invited %2.</source> <translation>%1 saatis kutse kasutajale %2.</translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 muutis oma tunnuspilti ja seadistas uueks kuvatavaks nimeks %2.</translation> </message> @@ -4056,23 +4226,17 @@ Põhjus: %4</translation> </message> </context> <context> - <name>TimelineRow</name> + <name>TimelineSectionHeader</name> <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation>Osa jutulõngast</translation> - </message> - <message> - <location line="-18"/> - <source>Edited</source> - <translation>Muudetud</translation> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> + <translation>Kasutaja %1 olekusõnum</translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Ühtegi jututuba pole avatud</translation> </message> @@ -4178,7 +4342,7 @@ Põhjus: %4</translation> <translation>Tagasi jututubade loendisse</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation>Näita klammerdatud sõnumeid või peida nad</translation> </message> @@ -4233,7 +4397,7 @@ Põhjus: %4</translation> <translation>Seadistused</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation>Võta lahti</translation> </message> @@ -4259,24 +4423,24 @@ Põhjus: %4</translation> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>Registreerimiseks vajalikku töövoogu ei leidu!</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>Registreerimine on katkestatud</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>Registreerimiseks palun sisesta kehtiv tunnusluba.</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>Vigane tunnusluba</translation> </message> @@ -4284,7 +4448,7 @@ Põhjus: %4</translation> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation> <numerusform>Laadi fail üles</numerusform> @@ -4295,7 +4459,7 @@ Põhjus: %4</translation> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>Logi %1 seade võrgust välja</translation> </message> @@ -4305,7 +4469,12 @@ Põhjus: %4</translation> <translation>Sa oled selle seadme võrgust välja loginud.</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation>„%1“ eiramine ei õnnestunud: %2</translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Vali tunnuspilt</translation> </message> @@ -4325,7 +4494,7 @@ Põhjus: %4</translation> <translation>Viga faili lugemisel: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Üldine kasutajaprofiil</translation> </message> @@ -4376,12 +4545,12 @@ Põhjus: %4</translation> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Verifitseeri</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>Alusta privaatset vestlust.</translation> </message> @@ -4397,11 +4566,21 @@ Põhjus: %4</translation> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation>Lõpeta kasutaja eiramine.</translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation>Eira kasutajat.</translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>Uuenda seadmete loendit.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation>Seadmed</translation> </message> @@ -4434,8 +4613,8 @@ Põhjus: %4</translation> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>Vaikimisi</translation> </message> @@ -4534,6 +4713,16 @@ Põhjus: %4</translation> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation>Peidetud sündmused</translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation>Eiratud kasutajad</translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation>Töölauakeskkonna teavitused</translation> </message> @@ -4724,6 +4913,11 @@ Põhjus: %4</translation> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation>SÕNUMITE ÜLDINE NÄHTAVUS</translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation>TEAVITUSED</translation> </message> @@ -4788,7 +4982,7 @@ Põhjus: %4</translation> <translation>Aeg-ajalt kustuta vanad sündmused</translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation>Vaikimisi</translation> </message> @@ -4872,6 +5066,11 @@ Samaga lülitatakse sisse või välja ka sinu kirjutamisteatiste saatmine teiste </message> <message> <location line="+8"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation>Seadista mõnede sündmuste (nt. nagu jututoaga liitumine) nähtavust.</translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation>Näita saabunud sõnumi teavitust, kui Nheko ei ole parasjagu fookuses.</translation> </message> @@ -4908,29 +5107,29 @@ Väljalülitatuna - ruut, sisselülitatuna - ümmargune.</translation> <translation>Kui teised kasutajad on verifitseeritud, siis luba automaatselt vastata nende krüptovõtmete päringutele isegi siis, kui too seade ei peaks tohtima neid võtmeid kasutada.</translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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>Selle võtmega verifitseerid oma seadmeid. Kui ta on puhverdatud, siis sinu seadme verifitseerimine märgib selle seadme usaldusväärseks nii sinu muude seadmete kui selliste kasutajate jaoks, kes on sinu verifitseerinud.</translation> </message> <message> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation>Sõnumi saabumisel näita teavitust. See tavaliselt tähendab, et rakenduse ikoon tegumiribal annab mingit sorti animatsiooniga sulle märku.</translation> </message> <message> - <location line="-350"/> + <location line="-366"/> <source>Communities sidebar</source> <translation>Kogukondade külgpaan</translation> </message> <message> - <location line="+42"/> + <location line="+46"/> <source>Show message counts for communities and tags</source> <translation>Näita kogukonna või sildi sõnumite arvu</translation> </message> <message> - <location line="+241"/> + <location line="+251"/> <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source> <translation>Seadista sõnumite suurim laius pikslites ajajoonel. See parandab loetavust suurel ekraanil, kui Nheko on avatud täisvaates</translation> </message> @@ -4967,7 +5166,7 @@ Olek on kirjas ajatempli kõrval. Hoiatus: Kui sinu koduserver sellist võimalust ei toeta, siis jututubasid ei ole võimalik loetuks märkida!</translation> </message> <message> - <location line="+13"/> + <location line="+15"/> <source>Display an identicon instead of a letter when no avatar is set.</source> <translation>Kui tunnuspilt on seadistamata, siis kuva tähe asemel identikoni (matemaatilist tunnuspilti).</translation> </message> @@ -5025,7 +5224,7 @@ siis ajajoone vaade hägustub.</translation> <translation>Luba krüptitud võtmete varunduseks laadida sõnumite krüptovõtmeid sinu serverisse või sinu serverist.</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation>Selle võtmega dekrüptitakse võrku varundatud muud võtmed. Kui see võti on puhverdatud, siis saad kasutusele võtta oma krüptovõtmete turvalise varundamise sinu koduserveris.</translation> </message> @@ -5059,7 +5258,22 @@ Selle funktsionaalsuse jõustumine eeldab rakenduse uuesti käivitamist.</transl <translation>Luba aeg-ajalt kustutada sündmusi vastavalt seadistustele. Kuna selline funktsionaalsus käivitatakse serveri asemel kliendi poolel, siis mõistlikuks toimimiseks peab valitud ajavahemiku jooksul klientrakendus olema kasutusel.</translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation>Halda eiratud kasutajaid.</translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation>Süsteemi kirjatüüp</translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation>Süsteemi emotikonide kirjatüüp</translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation>Vali fail</translation> </message> @@ -5114,7 +5328,7 @@ Selle funktsionaalsuse jõustumine eeldab rakenduse uuesti käivitamist.</transl <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>PUHVERDATUD</translation> </message> @@ -5144,7 +5358,17 @@ Selle funktsionaalsuse jõustumine eeldab rakenduse uuesti käivitamist.</transl <translation>PÄRING</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation>SEADISTA</translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation>HALDA</translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation>Tagasi</translation> </message> @@ -5227,29 +5451,6 @@ Selle funktsionaalsuse jõustumine eeldab rakenduse uuesti käivitamist.</transl </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Ava kasutaja registreerimise tagavaravariant veebibrauseris</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Katkesta</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Kinnita</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation>Ava kasutaja registreerimise tagavaravariant, läbi kõik sammud ja kinnita seda, kui kõik valmis on.</translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_fa.ts b/resources/langs/nheko_fa.ts index 23862151..c97fc489 100644 --- a/resources/langs/nheko_fa.ts +++ b/resources/langs/nheko_fa.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>در حال تماس…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>در حال اتصال…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,12 +129,17 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message> @@ -208,7 +213,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -232,21 +237,20 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -261,7 +265,7 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation type="unfinished"></translation> </message> @@ -287,12 +291,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation type="unfinished"></translation> </message> @@ -337,12 +341,12 @@ <translation type="unfinished"></translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation type="unfinished"></translation> </message> @@ -364,7 +368,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -382,7 +386,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation type="unfinished"></translation> </message> @@ -735,7 +739,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -745,7 +749,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -831,7 +835,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -845,7 +849,6 @@ You may optionally provide a reason for others to accept your knock:</source> <source>%n member(s)</source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message> @@ -872,7 +875,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -968,7 +971,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation type="unfinished"></translation> </message> @@ -996,7 +999,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation type="unfinished"></translation> </message> @@ -1047,7 +1050,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1082,7 +1085,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1090,12 +1093,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1239,6 +1242,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1312,6 +1343,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1491,8 +1540,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1532,7 +1581,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished"></translation> </message> @@ -1549,7 +1598,7 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1629,14 +1678,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> + <source>e.g @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1667,13 +1716,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1690,7 +1739,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1715,120 +1764,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1879,7 +1814,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1914,12 +1849,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1929,24 +1859,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2006,7 +1936,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2029,7 +1964,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2249,7 +2184,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2306,9 +2241,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2499,7 +2452,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2517,7 +2470,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2542,6 +2495,11 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation type="unfinished"></translation> @@ -2679,7 +2637,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2723,7 +2681,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished"></translation> </message> @@ -2739,6 +2697,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2746,7 +2752,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2755,6 +2771,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2807,7 +2828,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished"></translation> </message> @@ -2832,7 +2853,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2855,7 +2896,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2871,6 +2912,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2918,17 +2964,16 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message> @@ -2962,22 +3007,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation type="unfinished"></translation> </message> @@ -3030,8 +3060,11 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3050,7 +3083,6 @@ Example: https://server.my:8787</source> <source>%n member(s)</source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message> @@ -3064,7 +3096,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3243,13 +3275,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3335,7 +3361,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3427,7 +3453,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3515,7 +3541,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3623,7 +3649,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3639,15 +3665,95 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3678,7 +3784,6 @@ If you choose verify, you need to have the other device available. If you choose <comment>Multiple users are typing. First argument is a comma separated list of potentially multiple users. Second argument is the last user of that list. (If only one user is typing, %1 is empty. You should still use it in your string though to silence Qt warnings.)</comment> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message> @@ -3697,7 +3802,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3707,7 +3812,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3727,7 +3832,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3742,7 +3847,6 @@ If you choose verify, you need to have the other device available. If you choose <source>%n member(s) can now kick room members.</source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message> @@ -3760,7 +3864,6 @@ If you choose verify, you need to have the other device available. If you choose <source>%n member(s) can now redact room messages.</source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message> @@ -3778,7 +3881,6 @@ If you choose verify, you need to have the other device available. If you choose <source>%n member(s) can now ban room members.</source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message> @@ -3796,7 +3898,6 @@ If you choose verify, you need to have the other device available. If you choose <source>%n member(s) can now send state events.</source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message> @@ -3870,7 +3971,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3941,7 +4042,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation type="unfinished"></translation> </message> @@ -4001,22 +4102,82 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+998"/> + <location line="+1019"/> <source>%1 made this room require an invitation to join.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+654"/> + <location line="+618"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4043,23 +4204,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation type="unfinished"></translation> </message> @@ -4093,7 +4248,6 @@ Reason: %4</source> <source>%n member(s)</source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> <message> @@ -4165,7 +4319,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4220,7 +4374,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4246,24 +4400,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4271,18 +4425,17 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> - <numerusform></numerusform> </translation> </message> </context> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4292,7 +4445,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -4312,7 +4470,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4363,12 +4521,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4384,11 +4542,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished"></translation> </message> @@ -4421,8 +4589,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4521,6 +4689,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished"></translation> </message> @@ -4711,6 +4889,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4775,7 +4958,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4869,6 +5052,11 @@ If this is on, rooms that come first alphabetically will be sorted earlier than </message> <message> <location line="+8"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4904,28 +5092,28 @@ OFF - square, ON - circle.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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> </message> <message> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation type="unfinished"></translation> </message> <message> - <location line="-350"/> + <location line="-366"/> <source>Communities sidebar</source> <translation type="unfinished"></translation> </message> <message> - <location line="+42"/> + <location line="+46"/> <source>Show message counts for communities and tags</source> <translation type="unfinished"></translation> </message> <message> - <location line="+241"/> + <location line="+251"/> <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source> <translation type="unfinished"></translation> </message> @@ -4942,7 +5130,7 @@ Warning: If your homeserver does not support this, your rooms will never be mark <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+15"/> <source>Display an identicon instead of a letter when no avatar is set.</source> <translation type="unfinished"></translation> </message> @@ -4996,7 +5184,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5028,7 +5216,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished"></translation> </message> @@ -5083,7 +5286,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5113,7 +5316,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5196,29 +5409,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_fi.ts b/resources/langs/nheko_fi.ts index df7a6504..71dde41e 100644 --- a/resources/langs/nheko_fi.ts +++ b/resources/langs/nheko_fi.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Soitetaan…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Yhdistetään…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>Aliakset huoneelle %1</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation>Sallittujen huoneiden asetukset</translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 ja %n muu</numerusform> @@ -208,14 +214,14 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> - <translation type="unfinished"></translation> + <translation>X11</translation> </message> <message> <location line="+3"/> <source>PipeWire</source> - <translation type="unfinished"></translation> + <translation>PipeWire</translation> </message> <message> <location line="+17"/> @@ -232,21 +238,23 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Kutsuttiin käyttäjä: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%n lukematon viesti huoneessa %1 +</numerusform> + <numerusform>%n lukematonta viestiä huoneessa %1 +</numerusform> </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>Vahvista uloskirjautuminen</translation> </message> @@ -261,7 +269,7 @@ <translation>Tietokannan avaaminen epäonnistui, kirjaudutaan ulos!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>Koputa huoneeseen</translation> </message> @@ -287,12 +295,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Vahvista kutsu</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Haluatko varmasti kutsua %1 (%2)?</translation> </message> @@ -337,12 +345,12 @@ <translation>Purettiin porttikielto käyttäjältä %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Haluatko luoda yksityisen keskustelun käyttäjän %1 kanssa?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Välimuistin siirto epäonnistui!</translation> </message> @@ -366,7 +374,7 @@ Jos luulet tätä virheeksi, voit sulkea Nhekon yrittääksesi saada salausavaim <translation>Yhteensopimaton välimuistin versio</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>OLM-tilin palauttaminen epäonnistui. Ole hyvä ja kirjaudu sisään uudelleen.</translation> </message> @@ -384,7 +392,7 @@ Jos luulet tätä virheeksi, voit sulkea Nhekon yrittääksesi saada salausavaim </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Ole hyvä ja yritä kirjautua sisään uudelleen: %1</translation> </message> @@ -516,17 +524,17 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <message> <location line="+14"/> <source>/md <message></source> - <translation type="unfinished"></translation> + <translation>/md <viesti></translation> </message> <message> <location line="+2"/> <source>/cmark <message></source> - <translation type="unfinished"></translation> + <translation>/cmark <viesti></translation> </message> <message> <location line="+2"/> <source>/plain <message></source> - <translation type="unfinished"></translation> + <translation>/plain <viesti></translation> </message> <message> <location line="+2"/> @@ -727,18 +735,18 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <message> <location line="+2"/> <source>Convert this room to a direct chat.</source> - <translation type="unfinished"></translation> + <translation>Muunna tämä huone yksityiskeskusteluksi.</translation> </message> <message> <location line="+2"/> <source>Convert this direct chat into a room.</source> - <translation type="unfinished"></translation> + <translation>Muunna tämä yksityiskeskustelu huoneeksi.</translation> </message> </context> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Laajenna</translation> </message> @@ -748,7 +756,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <translation>Sorruta</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation>Älä näytä ilmoitusmääriä tästä yhteisöstä tai tagista.</translation> </message> @@ -834,7 +842,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation>Vahvista liittyminen yhteisöön</translation> </message> @@ -875,7 +883,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation>Luo suora keskustelu</translation> </message> @@ -971,7 +979,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation>Salaisuuksien salauksen purku</translation> </message> @@ -999,7 +1007,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Vahvistuskoodi</translation> </message> @@ -1050,7 +1058,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Tämän viestin avaamista varten ei ole avainta. Pyysimme avainta automaattisesti, mutta voit yrittää pyytää sitä uudestaan jos olet kärsimätön.</translation> </message> @@ -1085,7 +1093,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <translation>Tuntematon virhe salauksen purkamisessa</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Pyydä avainta</translation> </message> @@ -1093,12 +1101,12 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> - <translation type="unfinished"></translation> + <translation>%1 otti päästä-päähän -salauksen käyttöön</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1181,7 +1189,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <message> <location line="+21"/> <source>Include state events</source> - <translation type="unfinished"></translation> + <translation>Sisällytä tilatapahtumat</translation> </message> <message> <location line="+1"/> @@ -1195,7 +1203,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <location filename="../../src/ui/EventExpiry.cpp" line="+49"/> <location line="+10"/> <source>Failed to set hidden events: %1</source> - <translation type="unfinished">Piilotettujen tapahtumien asettaminen epäonnistui: %1</translation> + <translation>Piilotettujen tapahtumien asettaminen epäonnistui: %1</translation> </message> </context> <context> @@ -1242,6 +1250,34 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished">Avaa varajärjestely, seuraa ohjeita, ja vahvista ne suoritettuasi.</translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">Avaa varajärjestely selaimessa</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Peruuta</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Vahvista</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1315,6 +1351,24 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1494,14 +1548,14 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@matti:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation type="unfinished"></translation> </message> <message> <location line="+42"/> <source>Search on Server</source> - <translation type="unfinished"></translation> + <translation>Etsi palvelimelta</translation> </message> <message> <location line="+86"/> @@ -1535,7 +1589,7 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>Poistu huoneesta</translation> </message> @@ -1552,8 +1606,8 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Väärä Matrix-tunnus. Esim. @joe:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="-157"/> @@ -1632,18 +1686,16 @@ Voit antaa valinnaisen syyn muiden hyväksyäkseen koputuksesi:</translation> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>esim. @joe:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> - <translation>Kirjautumistunnuksesi. Mxid:n on alettava @:lla, jonka perään käyttäjätunnus. Käyttäjätunnuksen perään tarvitset palvelimesi nimen :-merkin jälkeen, -esimerkiksi @nimi:palvelime.ni. -Jos Nheko ei löydä kotipalvelintasi .well-known -haun kautta, voit syöttää käsin palvelimesi osoitteen.</translation> + <translation type="unfinished"></translation> </message> <message> <location line="+27"/> @@ -1672,15 +1724,14 @@ Jos Nheko ei löydä kotipalvelintasi .well-known -haun kautta, voit syöttää </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>server.my:8787</translation> + <source>yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> - <translation>Osoite, jonka kautta otetaan yhteys kotipalvelimesi asiakasohjelmarajapintaan. -Esimerkki: https://palvelime.ni:8787</translation> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+32"/> @@ -1696,7 +1747,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>Kirjaudu ulos</translation> </message> @@ -1721,120 +1772,6 @@ Esimerkki: https://palvelime.ni:8787</translation> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation>Tämä huone korvattiin seuraavasta syystä: %1</translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation>Siirry korvaavaan huoneeseen</translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation>%1 poisti viestin</translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation>%2 vaihtoi huoneen nimeksi: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation>%1 poisti huoneen nimen</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation>%2 vaihtoi aiheeksi: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation>%1 poisti aiheen</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 muutti huoneen avataria</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation>%1 muutti kiinnitettyjä viestejä.</translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation>%1 muutti tämän huoneen osoitteita.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation>%1 muutti tämän huoneen yhteisövanhempia.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 loi ja sääti huoneen: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 asetti äänipuhelun.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 laittoi videopuhelun.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 soitti puhelun.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 vastasi puheluun.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation>%1 hylkäsi puhelun.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 päätti puhelun.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation>%1 neuvottelee puhelua...</translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>Päästä hänet sisään</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1885,7 +1822,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Muokkaa</translation> </message> @@ -1912,7 +1849,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <message> <location line="+11"/> <source>Go to message</source> - <translation type="unfinished"></translation> + <translation>Hyppää viestiin</translation> </message> <message> <location line="+17"/> @@ -1920,12 +1857,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <translation>Asetukset</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation>Anna syy poistamiselle tai paina enter mikäli syytä ei ole:</translation> </message> @@ -1935,24 +1867,24 @@ Esimerkki: https://palvelime.ni:8787</translation> <translation>Syy poistamiselle</translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> - <translation type="unfinished"></translation> + <translation>Hyppää &viestiin</translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>&Kopioi</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>Kopioi &linkin kohde</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>Rea&goi</translation> </message> @@ -2012,7 +1944,12 @@ Esimerkki: https://palvelime.ni:8787</translation> <translation>Poist&a viesti</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>&Tallenna nimellä</translation> </message> @@ -2035,7 +1972,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Lähetä vahvistuspyyntö</translation> </message> @@ -2255,7 +2192,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation>Saata oikeusmuutokset voimaan</translation> </message> @@ -2312,9 +2249,27 @@ Esimerkki: https://palvelime.ni:8787</translation> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished">Ylläpitäjä: %1</translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished">Moderaattori: %1</translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished">Käyttäjä: %1</translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation>Muut tapahtumat</translation> </message> @@ -2505,7 +2460,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation>Luo ainutkertainen profiili, jonka kautta voit kirjautua sisään samanaikaisesti usealla käyttäjällä, sekä käynnistää Nhekosta monta ilmentymää.</translation> </message> @@ -2523,7 +2478,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation>Lisänimi optiolle '--log-level trace'.</translation> </message> @@ -2548,6 +2503,11 @@ Esimerkki: https://palvelime.ni:8787</translation> <translation>tyyppi</translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation>Vastaa</translation> @@ -2568,22 +2528,22 @@ Esimerkki: https://palvelime.ni:8787</translation> <message> <location filename="../qml/dialogs/ReCaptchaDialog.qml" line="+40"/> <source>Solve the reCAPTCHA and press the confirm button</source> - <translation type="unfinished">Ratkaise reCAPTCHA ja paina varmista-nappia</translation> + <translation>Ratkaise reCAPTCHA ja paina vahvista-nappia</translation> </message> <message> <location line="+8"/> <source>Open reCAPTCHA</source> - <translation type="unfinished">Avaa reCAPTCHA</translation> + <translation>Avaa reCAPTCHA</translation> </message> <message> <location line="+5"/> <source>Cancel</source> - <translation type="unfinished">Peruuta</translation> + <translation>Peruuta</translation> </message> <message> <location line="+5"/> <source>Confirm</source> - <translation type="unfinished">Vahvista</translation> + <translation>Vahvista</translation> </message> </context> <context> @@ -2685,7 +2645,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <translation>Käyttäjätunnus ei saa olla tyhjä, ja se saa sisältää vain merkkejä a-z, 0-9, ., _, =, - ja /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation>Takaisin</translation> @@ -2729,7 +2689,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Sulje</translation> </message> @@ -2745,6 +2705,54 @@ Esimerkki: https://palvelime.ni:8787</translation> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2752,7 +2760,17 @@ Esimerkki: https://palvelime.ni:8787</translation> <translation>Tutki julkisia huoneita</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished">Liity</translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>Etsi julkisia huoneita</translation> </message> @@ -2761,6 +2779,11 @@ Esimerkki: https://palvelime.ni:8787</translation> <source>Choose custom homeserver</source> <translation>Valitse mukautettu kotipalvelin</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Sulje</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2813,7 +2836,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <translation>Käyttäjäasetukset</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>Kirjaudu ulos</translation> </message> @@ -2838,7 +2861,27 @@ Esimerkki: https://palvelime.ni:8787</translation> <translation>Aseta tilapäivitys</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>Salausta ei ole määritetty</translation> @@ -2861,7 +2904,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <translation>Sulje</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>Kirjoita tagi jota haluat käyttää:</translation> </message> @@ -2877,6 +2920,11 @@ Esimerkki: https://palvelime.ni:8787</translation> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation>Huoneen asetukset</translation> </message> @@ -2924,12 +2972,12 @@ Esimerkki: https://palvelime.ni:8787</translation> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>Huoneen %1 jäsenet</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2968,22 +3016,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <translation>Oikeustaso</translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation>Ylläpitäjä: %1</translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation>Moderaattori: %1</translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation>Käyttäjä: %1</translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>Tämä huone ei ole salattu!</translation> </message> @@ -3036,25 +3069,28 @@ Esimerkki: https://palvelime.ni:8787</translation> <source>Failed to upload image: %s</source> <translation>Kuvan lähetys epäonnistui: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> - <translation>Huoneen asetukset</translation> + <translation type="unfinished">Huoneen asetukset</translation> </message> <message> <location line="+35"/> <source>Change room avatar.</source> - <translation>Muuta huoneen avataria.</translation> + <translation type="unfinished">Muuta huoneen avataria.</translation> </message> <message> <location line="+93"/> <source>Change name of this room</source> - <translation>Muuta tämän huoneen nimeä</translation> + <translation type="unfinished">Muuta tämän huoneen nimeä</translation> </message> <message numerus="yes"> <location line="+22"/> <source>%n member(s)</source> - <translation> + <translation type="unfinished"> <numerusform>%n jäsen</numerusform> <numerusform>%n jäsentä</numerusform> </translation> @@ -3062,17 +3098,17 @@ Esimerkki: https://palvelime.ni:8787</translation> <message> <location line="+8"/> <source>View members of %1</source> - <translation>Näytä huoneen %1 jäsenet</translation> + <translation type="unfinished">Näytä huoneen %1 jäsenet</translation> </message> <message> <location line="+24"/> <source>No topic set</source> - <translation>Aihetta ei ole asetettu</translation> + <translation type="unfinished">Aihetta ei ole asetettu</translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> - <translation>Muuta tämän huoneen aihetta</translation> + <translation type="unfinished">Muuta tämän huoneen aihetta</translation> </message> <message> <location line="+31"/> @@ -3082,22 +3118,22 @@ Esimerkki: https://palvelime.ni:8787</translation> <message> <location line="+9"/> <source>Notifications</source> - <translation>Ilmoitukset</translation> + <translation type="unfinished">Ilmoitukset</translation> </message> <message> <location line="+6"/> <source>Muted</source> - <translation>Mykistetty</translation> + <translation type="unfinished">Mykistetty</translation> </message> <message> <location line="+0"/> <source>Mentions only</source> - <translation>Vain maininnat</translation> + <translation type="unfinished">Vain maininnat</translation> </message> <message> <location line="+0"/> <source>All messages</source> - <translation>Kaikki viestit</translation> + <translation type="unfinished">Kaikki viestit</translation> </message> <message> <location line="+10"/> @@ -3107,43 +3143,43 @@ Esimerkki: https://palvelime.ni:8787</translation> <message> <location line="+9"/> <source>Anyone can join</source> - <translation>Kuka tahansa voi liittyä</translation> + <translation type="unfinished">Kuka tahansa voi liittyä</translation> </message> <message> <location line="+14"/> <source>Allow knocking</source> - <translation>Salli koputtaminen</translation> + <translation type="unfinished">Salli koputtaminen</translation> </message> <message> <location line="+19"/> <source>Allow joining via other rooms</source> - <translation>Salli liittyminen muiden huoneiden kautta</translation> + <translation type="unfinished">Salli liittyminen muiden huoneiden kautta</translation> </message> <message> <location line="+19"/> <source>Rooms to join via</source> - <translation>Huoneet, joiden kautta voi liittyä</translation> + <translation type="unfinished">Huoneet, joiden kautta voi liittyä</translation> </message> <message> <location line="+12"/> <location line="+242"/> <source>Change</source> - <translation>Muuta</translation> + <translation type="unfinished">Muuta</translation> </message> <message> <location line="-241"/> <source>Change the list of rooms users can join this room via. Usually this is the official community of this room.</source> - <translation>Muuta listaa huoneista, joiden kautta tähän huoneeseen voi liittyä. Se on yleensä tämän huoneen virallinen yhteisö.</translation> + <translation type="unfinished">Muuta listaa huoneista, joiden kautta tähän huoneeseen voi liittyä. Se on yleensä tämän huoneen virallinen yhteisö.</translation> </message> <message> <location line="+6"/> <source>Allow guests to join</source> - <translation>Salli vieraiden liittyminen</translation> + <translation type="unfinished">Salli vieraiden liittyminen</translation> </message> <message> <location line="+17"/> <source>Apply access rules</source> - <translation>Saata pääsysäännöt voimaan</translation> + <translation type="unfinished">Saata pääsysäännöt voimaan</translation> </message> <message> <location line="+7"/> @@ -3153,7 +3189,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <message> <location line="+9"/> <source>Allow viewing history without joining</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Salli historian selaaminen liittymättä</translation> </message> <message> <location line="+3"/> @@ -3173,7 +3209,7 @@ Esimerkki: https://palvelime.ni:8787</translation> <message> <location line="+19"/> <source>Everything</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Kaikki</translation> </message> <message> <location line="+1"/> @@ -3203,12 +3239,12 @@ Esimerkki: https://palvelime.ni:8787</translation> <message> <location line="+10"/> <source>Apply visibility changes</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Toteuta näkyvyysmuutokset</translation> </message> <message> <location line="+16"/> <source>Locally hidden events</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Paikallisesti piilotetut tapahtumat</translation> </message> <message> <location line="+11"/> @@ -3216,12 +3252,12 @@ Esimerkki: https://palvelime.ni:8787</translation> <location line="+60"/> <location line="+12"/> <source>Configure</source> - <translation>Määritä</translation> + <translation type="unfinished">Määritä</translation> </message> <message> <location line="-89"/> <source>Select events to hide in this room</source> - <translation>Valitse huoneesta piilotettavat tapahtumat</translation> + <translation type="unfinished">Valitse huoneesta piilotettavat tapahtumat</translation> </message> <message> <location line="+6"/> @@ -3236,84 +3272,77 @@ Esimerkki: https://palvelime.ni:8787</translation> <message> <location line="+6"/> <source>GENERAL SETTINGS</source> - <translation type="unfinished"></translation> + <translation type="unfinished">YLEISASETUKSET</translation> </message> <message> <location line="+9"/> <source>Encryption</source> - <translation>Salaus</translation> + <translation type="unfinished">Salaus</translation> </message> <message> <location line="+22"/> <source>End-to-End Encryption</source> - <translation>Päästä-päähän-salaus</translation> + <translation type="unfinished">Päästä-päähän-salaus</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation>Salaus on kokeellinen ja asiat voivat rikkoutua odottamattomasti.<br> -Huomaathan ettei sitä voida poistaa käytöstä myöhemmin.</translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> - <translation>Oikeudet</translation> + <translation type="unfinished">Oikeudet</translation> </message> <message> <location line="+6"/> <source>View and change the permissions in this room</source> - <translation>Näytä ja muuta oikeuksia tässä huoneessa</translation> + <translation type="unfinished">Näytä ja muuta oikeuksia tässä huoneessa</translation> </message> <message> <location line="+6"/> <source>Aliases</source> - <translation>Aliakset</translation> + <translation type="unfinished">Aliakset</translation> </message> <message> <location line="+6"/> <source>View and change the addresses/aliases of this room</source> - <translation>Näytä ja muuta tämän huoneen osoitteita ja aliaksia</translation> + <translation type="unfinished">Näytä ja muuta tämän huoneen osoitteita ja aliaksia</translation> </message> <message> <location line="+6"/> <source>Sticker & Emote Settings</source> - <translation>Tarra- ja emojiasetukset</translation> + <translation type="unfinished">Tarra- ja emojiasetukset</translation> </message> <message> <location line="+6"/> <source>Change what packs are enabled, remove packs, or create new ones</source> - <translation>Muuta käytössä olevia paketteja, poista tai luo uusia paketteja</translation> + <translation type="unfinished">Muuta käytössä olevia paketteja, poista tai luo uusia paketteja</translation> </message> <message> <location line="+6"/> <source>INFO</source> - <translation>TIETOA</translation> + <translation type="unfinished">TIETOA</translation> </message> <message> <location line="+9"/> <source>Internal ID</source> - <translation>Sisäinen ID</translation> + <translation type="unfinished">Sisäinen ID</translation> </message> <message> <location line="+16"/> <source>Copied to clipboard</source> - <translation>Kopioitu leikepöydälle</translation> + <translation type="unfinished">Kopioitu leikepöydälle</translation> </message> <message> <location line="+19"/> <source>Room Version</source> - <translation>Huoneen versio</translation> + <translation type="unfinished">Huoneen versio</translation> </message> <message> <location line="+19"/> <source>show less</source> - <translation>näytä vähemmän</translation> + <translation type="unfinished">näytä vähemmän</translation> </message> <message> <location line="+0"/> <source>show more</source> - <translation>näytä enemmän</translation> + <translation type="unfinished">näytä enemmän</translation> </message> </context> <context> @@ -3342,7 +3371,7 @@ Huomaathan ettei sitä voida poistaa käytöstä myöhemmin.</translation> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>Syötä sisäänkirjautumisen salasanasi jatkaaksesi:</translation> </message> @@ -3377,7 +3406,7 @@ Huomaathan ettei sitä voida poistaa käytöstä myöhemmin.</translation> <message> <location line="+11"/> <source>Method:</source> - <translation type="unfinished"></translation> + <translation>Tapa:</translation> </message> <message> <location line="+20"/> @@ -3387,7 +3416,7 @@ Huomaathan ettei sitä voida poistaa käytöstä myöhemmin.</translation> <message> <location line="+15"/> <source>Request screencast</source> - <translation type="unfinished"></translation> + <translation>Pyydä näytönjakoa</translation> </message> <message> <location line="+16"/> @@ -3434,7 +3463,7 @@ Huomaathan ettei sitä voida poistaa käytöstä myöhemmin.</translation> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>Salattuun tallennustilaan ei saatu yhteyttä</translation> </message> @@ -3524,7 +3553,7 @@ Jos valitset vahvistamisen, toisen laitteen on oltava saatavilla. Jos valitset s <translation>Salauksen määritys epäonnistui: %1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>Identiteettiavain on muuttunut. Tämä estää päästä-päähän salauksen toiminnan, joten sinut kirjataan ulos.</translation> </message> @@ -3626,13 +3655,13 @@ Jos valitset vahvistamisen, toisen laitteen on oltava saatavilla. Jos valitset s <message> <location line="+188"/> <source>Change what packs are enabled, remove packs, or create new ones</source> - <translation type="unfinished">Muuta käytössä olevia paketteja, poista tai luo uusia paketteja</translation> + <translation>Muuta käytössä olevia paketteja, poista tai luo uusia paketteja</translation> </message> </context> <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Onnistunut varmistus</translation> </message> @@ -3648,15 +3677,95 @@ Jos valitset vahvistamisen, toisen laitteen on oltava saatavilla. Jos valitset s </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished">Osa viestiketjua</translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 asetti äänipuhelun.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished">%1 laittoi videopuhelun.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished">%1 soitti puhelun.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 vastasi puheluun.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished">%1 hylkäsi puhelun.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 päätti puhelun.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished">%1 neuvottelee puhelua...</translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished">Päästä hänet sisään</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished">Tämä huone korvattiin seuraavasta syystä: %1</translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished">Siirry korvaavaan huoneeseen</translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished">Muokattu</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished">Osa viestiketjua</translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Viestin muokkaus epäonnistui: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Tapahtuman salaus epäonnistui, lähetys keskeytetään!</translation> @@ -3706,7 +3815,7 @@ Jos valitset vahvistamisen, toisen laitteen on oltava saatavilla. Jos valitset s <translation>%1 salli seuraavien huoneiden jäsenten liittyä automaattisesti tähän huoneeseen: %2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 teki huoneesta avoimen vieraille.</translation> </message> @@ -3716,7 +3825,7 @@ Jos valitset vahvistamisen, toisen laitteen on oltava saatavilla. Jos valitset s <translation>%1 on sulkenut huoneen vierailta.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 teki huoneen historian luettavaksi kaikille. Tapahtumia voivat nyt lukea myös huoneeseen liittymättömät ihmiset.</translation> </message> @@ -3736,7 +3845,7 @@ Jos valitset vahvistamisen, toisen laitteen on oltava saatavilla. Jos valitset s <translation>%1 asetti huoneen historian näkyväksi jäsenille huoneeseen liittymisen jälkeen.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 on muuttanut huoneen oikeuksia.</translation> @@ -3879,7 +3988,7 @@ Jos valitset vahvistamisen, toisen laitteen on oltava saatavilla. Jos valitset s <translation>%1 on muuttanut tyypin "%2" tapahtuman oikeustason huoneessa tasosta %2 tasoon %3.</translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation>(tyhjä)</translation> </message> @@ -3951,7 +4060,7 @@ Reason: %4</source> Syy: %4</translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation>%2 perui käyttäjän %1 kutsun.</translation> </message> @@ -4011,22 +4120,82 @@ Syy: %4</translation> <translation>%1 perui koputuksensa.</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished">%1 muutti tähän huoneeseen sallittuja palvelimia.</translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished">%2 vaihtoi huoneen nimeksi: %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished">%2 vaihtoi aiheeksi: %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished">%1 muutti kiinnitettyjä viestejä.</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished">%1 muutti tämän huoneen osoitteita.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished">%1 muutti tämän huoneen yhteisövanhempia.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 loi ja sääti huoneen: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>Liityit tähän huoneeseen.</translation> </message> <message> - <location line="+998"/> + <location line="+1019"/> <source>%1 made this room require an invitation to join.</source> <translation>%1 teki tämän huoneen vaatimaan kutsun liittymiseen.</translation> </message> <message> - <location line="+654"/> + <location line="+618"/> <source>%1 invited %2.</source> <translation>%1 kutsui käyttäjän %2.</translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 vaihtoi avatariaan ja vaihtoi näyttönimekseen %2.</translation> </message> @@ -4053,40 +4222,34 @@ Syy: %4</translation> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation>Osa viestiketjua</translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> - <translation>Muokattu</translation> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> + <translation type="unfinished">Käyttäjän %1 tilaviesti</translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Yhtäkään huonetta ei ole avattu</translation> </message> <message> <location line="+102"/> <source>You are about to notify the whole room</source> - <translation type="unfinished">Aiot ilmoittaa kaikkia huoneessa olevia</translation> + <translation>Aiot ilmoittaa kaikkia huoneessa olevia</translation> </message> <message> <location line="+4"/> <source>The command /%1 is not recognized and will be sent as part of your message</source> - <translation type="unfinished"></translation> + <translation>Komentoa /%1 ei tunneta, ja se lähetetään osana viestiäsi</translation> </message> <message> <location line="+5"/> <source>/%1 looks like an incomplete command. To send it anyway, add a space to the end of your message.</source> - <translation type="unfinished"></translation> + <translation>/%1 vaikuttaa puutteeliselta komennolta. Lähettääksesi sen silti, lisää välilyönti viestin perään.</translation> </message> <message> <location line="+41"/> @@ -4134,7 +4297,7 @@ Syy: %4</translation> <message> <location line="+7"/> <source>leave</source> - <translation type="unfinished"></translation> + <translation>lähde</translation> </message> <message> <location line="+11"/> @@ -4175,7 +4338,7 @@ Syy: %4</translation> <translation>Takaisin huonelistaan</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation>Näytä tai piilota kiinnitetyt viestit</translation> </message> @@ -4230,7 +4393,7 @@ Syy: %4</translation> <translation>Asetukset</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation>Poista kiinnitys</translation> </message> @@ -4256,24 +4419,24 @@ Syy: %4</translation> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>Rekisteröitymistapoja ei ole saatavilla!</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>Rekisteröinti keskeytetty</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>Anna kelvollinen rekisteröitymistunnisteväline.</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>Virheellinen tunnisteväline</translation> </message> @@ -4281,7 +4444,7 @@ Syy: %4</translation> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation> <numerusform>Lähetä tiedosto</numerusform> @@ -4292,7 +4455,7 @@ Syy: %4</translation> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>Kirjaudu ulos laitteelta %1</translation> </message> @@ -4302,7 +4465,12 @@ Syy: %4</translation> <translation>Kirjauduit ulos tältä laitteelta.</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Valitse profiilikuva</translation> </message> @@ -4322,7 +4490,7 @@ Syy: %4</translation> <translation>Virhe lukiessa tiedostoa: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Yleinen käyttäjäprofiili</translation> </message> @@ -4373,12 +4541,12 @@ Syy: %4</translation> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Vahvista</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>Aloita yksityinen keskustelu.</translation> </message> @@ -4394,18 +4562,28 @@ Syy: %4</translation> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>Päivitä laitelista.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> - <translation type="unfinished">Laitteet</translation> + <translation>Laitteet</translation> </message> <message> <location line="+3"/> <source>Shared Rooms</source> - <translation type="unfinished"></translation> + <translation>Yhteiset huoneet</translation> </message> <message> <location line="+62"/> @@ -4431,8 +4609,8 @@ Syy: %4</translation> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>Oletus</translation> </message> @@ -4472,7 +4650,7 @@ Syy: %4</translation> <message> <location line="+4"/> <source>Scrollbars in room list</source> - <translation type="unfinished"></translation> + <translation>Vierityspalkit huoneluettelossa</translation> </message> <message> <location line="+2"/> @@ -4512,7 +4690,7 @@ Syy: %4</translation> <message> <location line="+2"/> <source>Sort rooms alphabetically</source> - <translation type="unfinished"></translation> + <translation>Järjestele huoneet aakkosellisesti</translation> </message> <message> <location line="+2"/> @@ -4531,6 +4709,16 @@ Syy: %4</translation> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished">Piilotetut tapahtumat</translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation>Työpöytäilmoitukset</translation> </message> @@ -4572,7 +4760,7 @@ Syy: %4</translation> <message> <location line="+4"/> <source>Display fancy effects such as confetti</source> - <translation type="unfinished"></translation> + <translation>Näytä hienoja tehosteita, kuten konfetti</translation> </message> <message> <location line="+2"/> @@ -4702,7 +4890,7 @@ Syy: %4</translation> <message> <location line="+2"/> <source>ACCESSIBILITY</source> - <translation type="unfinished"></translation> + <translation>SAAVUTETTAVUUS</translation> </message> <message> <location line="+2"/> @@ -4721,6 +4909,11 @@ Syy: %4</translation> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation>ILMOITUKSET</translation> </message> @@ -4785,7 +4978,7 @@ Syy: %4</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation>Oletus</translation> </message> @@ -4826,7 +5019,7 @@ Aseta nollaan, jotta sumennetaan heti kohdistus kadotetaan. Suurin arvo 1 tunti <message> <location line="+4"/> <source>Shows scrollbars in the room list and communities list.</source> - <translation type="unfinished"></translation> + <translation>Näytä vierityspalkit huone- ja yhteisöluetteloissa.</translation> </message> <message> <location line="+2"/> @@ -4869,6 +5062,11 @@ Tämä myös sallii tai evää kirjoitusilmoitusten lähettämisen muille.</tran </message> <message> <location line="+8"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation>Ilmoita vastaanotetuista viesteistä, kun ohjelma ei ole korostettu.</translation> </message> @@ -4895,29 +5093,29 @@ POIS - neliö, PÄÄLLÄ - ympyrä.</translation> <translation>Vastaa automaattisesti muiden vahvistettujen käyttäjien avainpyyntöihin, vaikka kyseisellä laitteella ei muuten pitäisi olla pääsyä avaimiin.</translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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>Omien laitteidesi vahvistamiseen käytettävä avain. Jos avain on välimuistissa, jonkun laitteesi vahvistus tekee siitä vahvistetun kaikille muille laitteillesi, ja käyttäjille, jotka ovat vahvistaneet sinut.</translation> </message> <message> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation>Näytä hälytys kun viesti on vastaanotettu. Tämä yleensä saa sovelluksen kuvakkeen liikkumaan jollain tapaa tehtäväpalkissa.</translation> </message> <message> - <location line="-350"/> + <location line="-366"/> <source>Communities sidebar</source> <translation>Yhteisösivupalkki</translation> </message> <message> - <location line="+42"/> + <location line="+46"/> <source>Show message counts for communities and tags</source> <translation>Näytä yhteisöjen ja tagien viestimäärät</translation> </message> <message> - <location line="+241"/> + <location line="+251"/> <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source> <translation>Aseta viestien maksimileveys aikajanalla (pikseleinä). Voi auttaa luettavuudessa, kun Nheko on suurennettuna</translation> </message> @@ -4950,7 +5148,7 @@ Viestin tila näytetään aikaleimojen vieressä. Varoitus: Jos kotipalvelimesi ei tue tätä, huoneitasi ei ikinä merkitä luetuksi!</translation> </message> <message> - <location line="+13"/> + <location line="+15"/> <source>Display an identicon instead of a letter when no avatar is set.</source> <translation>Näytä identikoni kirjaimen sijaan, kun avataria ei ole valittu.</translation> </message> @@ -5018,7 +5216,7 @@ sumennetaan.</translation> <translation>Lataa viestien salausavaimet salatusta verkkoavainvarmuuskopiosta ja lähetä avaimet sinne.</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation>Avain purkamaan avainten varmuuskopioita verkossa. Jos se laitetaan välimuistiin, voit sallia avainten varmuuskopioinnin verkossa säilöäksesi salausavaimet, jotka ovat turvallisesti salattuja palvelimella.</translation> </message> @@ -5052,7 +5250,22 @@ Tämä asetus tulee voimaan uudelleenkäynnistyksen jälkeen.</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation>Valitse tiedosto</translation> </message> @@ -5107,7 +5320,7 @@ Tämä asetus tulee voimaan uudelleenkäynnistyksen jälkeen.</translation> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>VÄLIMUISTISSA</translation> </message> @@ -5137,7 +5350,17 @@ Tämä asetus tulee voimaan uudelleenkäynnistyksen jälkeen.</translation> <translation>PYYDÄ</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation>Takaisin</translation> </message> @@ -5203,7 +5426,7 @@ Tämä asetus tulee voimaan uudelleenkäynnistyksen jälkeen.</translation> <message> <location line="+26"/> <source>Reduce animations</source> - <translation type="unfinished"></translation> + <translation>Vähennä animaatioita</translation> </message> <message> <location line="+7"/> @@ -5220,69 +5443,46 @@ Tämä asetus tulee voimaan uudelleenkäynnistyksen jälkeen.</translation> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Avaa varajärjestely selaimessa</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Peruuta</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Vahvista</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation>Avaa varajärjestely, seuraa ohjeita, ja vahvista ne suoritettuasi.</translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> <source>People</source> - <translation type="unfinished">Ihmiset</translation> + <translation>Ihmiset</translation> </message> <message> <location line="+2"/> <source>Nature</source> - <translation type="unfinished">Luonto</translation> + <translation>Luonto</translation> </message> <message> <location line="+2"/> <source>Food</source> - <translation type="unfinished">Ruoka</translation> + <translation>Ruoka</translation> </message> <message> <location line="+2"/> <source>Activity</source> - <translation type="unfinished">Aktiviteetti</translation> + <translation>Aktiviteetti</translation> </message> <message> <location line="+2"/> <source>Travel</source> - <translation type="unfinished">Matkustaminen</translation> + <translation>Matkustaminen</translation> </message> <message> <location line="+2"/> <source>Objects</source> - <translation type="unfinished">Esineet</translation> + <translation>Esineet</translation> </message> <message> <location line="+2"/> <source>Symbols</source> - <translation type="unfinished">Symbolit</translation> + <translation>Symbolit</translation> </message> <message> <location line="+2"/> <source>Flags</source> - <translation type="unfinished">Liput</translation> + <translation>Liput</translation> </message> </context> <context> diff --git a/resources/langs/nheko_fr.ts b/resources/langs/nheko_fr.ts index 94fe4ff3..51bad95f 100644 --- a/resources/langs/nheko_fr.ts +++ b/resources/langs/nheko_fr.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Appel en cours…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Connexion en cours…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>Alias de %1</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation>Configuration des salons autorisés</translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 et %n autre</numerusform> @@ -208,14 +214,14 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> - <translation type="unfinished"></translation> + <translation>X11</translation> </message> <message> <location line="+3"/> <source>PipeWire</source> - <translation type="unfinished"></translation> + <translation>PipeWire</translation> </message> <message> <location line="+17"/> @@ -232,21 +238,23 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Utilisateur %1 invité(e)</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%n message non lu dans le salon %1 +</numerusform> + <numerusform>%n messages non lus dans le salon %1 +</numerusform> </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>Confirmer la déconnexion</translation> </message> @@ -261,7 +269,7 @@ <translation>Impossible d'ouvrir la base de données, déconnexion !</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>Frapper à la porte</translation> </message> @@ -287,12 +295,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Confirmer l'invitation</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Voulez-vous vraiment inviter %1 (%2) ?</translation> </message> @@ -337,12 +345,12 @@ <translation>%1 n'est plus banni(e)</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Voulez-vous vraiment commencer une discussion privée avec %1 ?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Échec de la migration du cache !</translation> </message> @@ -366,7 +374,7 @@ Si vous pensez qu'il s'agit d'une erreur, vous pouvez plutôt fer <translation>Version du cache incompatible</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Échec de la restauration du compte OLM. Veuillez vous reconnecter.</translation> </message> @@ -384,7 +392,7 @@ Si vous pensez qu'il s'agit d'une erreur, vous pouvez plutôt fer </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Veuillez re-tenter vous reconnecter : %1</translation> </message> @@ -461,12 +469,12 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo <message> <location line="+2"/> <source>/join <!roomid|#alias> [reason]</source> - <translation type="unfinished"></translation> + <translation>/join <!idsalon|#alias> [raison]</translation> </message> <message> <location line="+2"/> <source>/knock <!roomid|#alias> [reason]</source> - <translation type="unfinished"></translation> + <translation>/knock <!idsalon|#alias> [raison]</translation> </message> <message> <location line="+2"/> @@ -551,12 +559,12 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo <message> <location line="+2"/> <source>/confetti [message]</source> - <translation type="unfinished"></translation> + <translation>/confetti [message]</translation> </message> <message> <location line="+2"/> <source>/rainbowconfetti [message]</source> - <translation type="unfinished"></translation> + <translation>/rainbowconfetti [message]</translation> </message> <message> <location line="+2"/> @@ -738,7 +746,7 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Développer</translation> </message> @@ -748,7 +756,7 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo <translation>Réduire</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation>Ne pas afficher le compteur de notifications pour cette communauté ou cette étiquette.</translation> </message> @@ -834,7 +842,7 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -875,7 +883,7 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation>Créer une conversation privée</translation> </message> @@ -971,7 +979,7 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation>Déchiffrer les secrets</translation> </message> @@ -999,7 +1007,7 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Code de vérification</translation> </message> @@ -1050,7 +1058,7 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Il n'y a pas de clé pour déverrouiller ce message. Nous avons demandé la clé automatiquement, mais vous pouvez tenter de la demander à nouveau si vous êtes impatient.</translation> </message> @@ -1085,20 +1093,20 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo <translation>Erreur de déchiffrement inconnue</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> - <translation>Demander la clef</translation> + <translation>Demander la clé</translation> </message> </context> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1242,6 +1250,34 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">Ouvrir la solution de remplacement dans le navigateur</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Annuler</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Confirmer</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1315,6 +1351,24 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1494,9 +1548,9 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@jean:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation type="unfinished"></translation> </message> <message> <location line="+42"/> @@ -1535,7 +1589,7 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>Quitter le salon</translation> </message> @@ -1552,8 +1606,8 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo <location line="+6"/> <location line="+64"/> <location line="+127"/> - <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> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="-157"/> @@ -1632,14 +1686,14 @@ Vous pouvez éventuellement fournir une raison afin que les membres acceptent vo </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>p. ex : @jean:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1670,13 +1724,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>monserveur.example.com:8787</translation> + <source>yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1693,7 +1747,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>Se déconnecter</translation> </message> @@ -1718,120 +1772,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation>%1 a effacé un message</translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation>%2 a changé le nom du salon en : %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation>%1 a supprimé le nom du salon</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation>%2 a changé le sujet du salon en : %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation>%1 a supprimé le sujet du salon</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 a changé l'avatar du salon</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation>%1 a changé les messages épinglés.</translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation>%1 a changé les adresses pour ce salon.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 a créé et configuré le salon : %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 a effectué un appel vocal.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 a effectué un appel vidéo.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 a appelé.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 a répondu à l'appel.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 a terminé l'appel.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation>%1 est en train de négocier l'appel...</translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>Les laisser entrer</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1882,7 +1822,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Modifier</translation> </message> @@ -1917,12 +1857,7 @@ Example: https://server.my:8787</source> <translation>Options</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation>Entrez la raison de la suppression, ou appuyez sur entrée pour l'omettre :</translation> </message> @@ -1932,24 +1867,24 @@ Example: https://server.my:8787</source> <translation>Raison de la suppression</translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>&Copier</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>Copier l'adresse du &lien</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>Ré&agir</translation> </message> @@ -2009,7 +1944,12 @@ Example: https://server.my:8787</source> <translation>Enle&ver le message</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>Enregistrer &sous</translation> </message> @@ -2032,7 +1972,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Envoyer la demande de vérification</translation> </message> @@ -2252,7 +2192,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2309,9 +2249,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2502,7 +2460,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2535,7 +2493,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Écrivez un message…</translation> </message> <message> - <location filename="../../src/main.cpp" line="-26"/> + <location filename="../../src/main.cpp" line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2559,6 +2517,11 @@ Example: https://server.my:8787</source> <source>type</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ReCaptchaDialog</name> @@ -2682,7 +2645,7 @@ Example: https://server.my:8787</source> <translation>Le nom d'utilisateur ne doit pas être vide, et ne peut contenir que les caractères a-z, 0-9, ., _, =, -, et /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation>Retour</translation> @@ -2726,7 +2689,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Fermer</translation> </message> @@ -2742,6 +2705,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2749,7 +2760,17 @@ Example: https://server.my:8787</source> <translation>Explorer les salons publics</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>Rechercher des salons publics</translation> </message> @@ -2758,6 +2779,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation>Choisir un serveur personnalisé</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Fermer</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2810,7 +2836,7 @@ Example: https://server.my:8787</source> <translation>Paramètres utilisateur</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>Déconnexion</translation> </message> @@ -2835,7 +2861,27 @@ Example: https://server.my:8787</source> <translation>Changer le message de statut</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>Chiffrement non configuré</translation> @@ -2858,7 +2904,7 @@ Example: https://server.my:8787</source> <translation>Fermer</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>Entrez l'étiquette que vous voulez utiliser :</translation> </message> @@ -2874,6 +2920,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2921,12 +2972,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>Membres de %1</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2965,22 +3016,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>Ce salon n'est pas chiffré !</translation> </message> @@ -3033,10 +3069,13 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation>Échec de l'envoi de l'image : %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> - <translation>Configuration du salon</translation> + <translation type="unfinished">Configuration du salon</translation> </message> <message> <location line="+35"/> @@ -3051,7 +3090,7 @@ Example: https://server.my:8787</source> <message numerus="yes"> <location line="+22"/> <source>%n member(s)</source> - <translation> + <translation type="unfinished"> <numerusform>%n membre</numerusform> <numerusform>%n membres</numerusform> </translation> @@ -3067,7 +3106,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3079,22 +3118,22 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Notifications</source> - <translation>Notifications</translation> + <translation type="unfinished">Notifications</translation> </message> <message> <location line="+6"/> <source>Muted</source> - <translation>En sourdine</translation> + <translation type="unfinished">En sourdine</translation> </message> <message> <location line="+0"/> <source>Mentions only</source> - <translation>Seulement les mentions</translation> + <translation type="unfinished">Seulement les mentions</translation> </message> <message> <location line="+0"/> <source>All messages</source> - <translation>Tous les messages</translation> + <translation type="unfinished">Tous les messages</translation> </message> <message> <location line="+10"/> @@ -3125,7 +3164,7 @@ Example: https://server.my:8787</source> <location line="+12"/> <location line="+242"/> <source>Change</source> - <translation>Modifier</translation> + <translation type="unfinished">Modifier</translation> </message> <message> <location line="-241"/> @@ -3213,12 +3252,12 @@ Example: https://server.my:8787</source> <location line="+60"/> <location line="+12"/> <source>Configure</source> - <translation>Configurer</translation> + <translation type="unfinished">Configurer</translation> </message> <message> <location line="-89"/> <source>Select events to hide in this room</source> - <translation>Sélectionner les évènements à cacher dans ce salon</translation> + <translation type="unfinished">Sélectionner les évènements à cacher dans ce salon</translation> </message> <message> <location line="+6"/> @@ -3238,22 +3277,15 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Encryption</source> - <translation>Chiffrement</translation> + <translation type="unfinished">Chiffrement</translation> </message> <message> <location line="+22"/> <source>End-to-End Encryption</source> - <translation>Chiffrement bout-à-bout</translation> - </message> - <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <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> + <translation type="unfinished">Chiffrement bout-à-bout</translation> </message> <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3275,7 +3307,7 @@ Veuillez noter qu'il ne pourra plus être désactivé par la suite.</transl <message> <location line="+6"/> <source>Sticker & Emote Settings</source> - <translation>Paramètres des autocollants & emotes</translation> + <translation type="unfinished">Paramètres des autocollants & emotes</translation> </message> <message> <location line="+6"/> @@ -3285,32 +3317,32 @@ Veuillez noter qu'il ne pourra plus être désactivé par la suite.</transl <message> <location line="+6"/> <source>INFO</source> - <translation>INFO</translation> + <translation type="unfinished">INFO</translation> </message> <message> <location line="+9"/> <source>Internal ID</source> - <translation>Identifiant interne</translation> + <translation type="unfinished">Identifiant interne</translation> </message> <message> <location line="+16"/> <source>Copied to clipboard</source> - <translation>Copié dans le presse-papiers</translation> + <translation type="unfinished">Copié dans le presse-papiers</translation> </message> <message> <location line="+19"/> <source>Room Version</source> - <translation>Version du salon</translation> + <translation type="unfinished">Version du salon</translation> </message> <message> <location line="+19"/> <source>show less</source> - <translation>montrer moins</translation> + <translation type="unfinished">montrer moins</translation> </message> <message> <location line="+0"/> <source>show more</source> - <translation>montrer plus</translation> + <translation type="unfinished">montrer plus</translation> </message> </context> <context> @@ -3339,7 +3371,7 @@ Veuillez noter qu'il ne pourra plus être désactivé par la suite.</transl <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>Veuillez saisir votre mot de passe pour continuer :</translation> </message> @@ -3431,7 +3463,7 @@ Veuillez noter qu'il ne pourra plus être désactivé par la suite.</transl <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>Échec de la connexion au stockage des secrets</translation> </message> @@ -3521,7 +3553,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si <translation>Échec de la configuration du chiffrement : %1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>La clé d'identité a changé. Cela casse le chiffrement bout-à-bout, donc Nheko va se déconnecter de votre compte.</translation> </message> @@ -3629,7 +3661,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Vérification réussie</translation> </message> @@ -3645,15 +3677,95 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 a effectué un appel vocal.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished">%1 a effectué un appel vidéo.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished">%1 a appelé.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 a répondu à l'appel.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 a terminé l'appel.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished">%1 est en train de négocier l'appel...</translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished">Les laisser entrer</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished">Modifié</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Échec de la suppression du message : %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Échec du chiffrement de l'évènement, envoi abandonné !</translation> @@ -3708,7 +3820,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si <translation>%1 a permis aux membres des salons suivants de rejoindre automatiquement ce salon : %2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 a rendu le salon ouvert aux invités.</translation> </message> @@ -3718,7 +3830,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si <translation>%1 a fermé le salon aux invités.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 a rendu l'historique du salon lisible par tout le monde. Les évènements peuvent maintenant être lus par des personnes externes au salon.</translation> </message> @@ -3738,7 +3850,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si <translation>%1 a rendu l'historique du salon visible aux membres à partir de l'instant où ils le rejoignent.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 a changé les permissions du salon.</translation> @@ -3881,7 +3993,7 @@ Si vous choisissez de vérifier, vous aurez besoin de l'autre appareil. Si <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3953,7 +4065,7 @@ Reason: %4</source> Raison : %4</translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation>%2 a révoqué l'invitation à %1.</translation> </message> @@ -4013,17 +4125,77 @@ Raison : %4</translation> <translation>%1 a arrêté de toquer.</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished">%2 a changé le nom du salon en : %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished">%2 a changé le sujet du salon en : %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished">%1 a changé les messages épinglés.</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished">%1 a changé les adresses pour ce salon.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 a créé et configuré le salon : %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>Vous avez rejoint ce salon.</translation> </message> <message> - <location line="+1652"/> + <location line="+1637"/> <source>%1 invited %2.</source> <translation>%1 a invité %2.</translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 a changé son avatar et changé son surnom en %2.</translation> </message> @@ -4050,23 +4222,17 @@ Raison : %4</translation> </message> </context> <context> - <name>TimelineRow</name> + <name>TimelineSectionHeader</name> <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> - <message> - <location line="-18"/> - <source>Edited</source> - <translation>Modifié</translation> - </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Aucun salon ouvert</translation> </message> @@ -4172,7 +4338,7 @@ Raison : %4</translation> <translation>Revenir à la liste des salons</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation>Montrer ou cacher les messages épinglés</translation> </message> @@ -4227,7 +4393,7 @@ Raison : %4</translation> <translation>Paramètres</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation>Désépingler</translation> </message> @@ -4253,24 +4419,24 @@ Raison : %4</translation> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>Aucun mécanisme de création de compte disponible !</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>Création de compte annulée</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>Veuillez entrer un jeton d'enregistrement valide.</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>Jeton invalide</translation> </message> @@ -4278,7 +4444,7 @@ Raison : %4</translation> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation> <numerusform>Mettre en ligne un fichier</numerusform> @@ -4289,7 +4455,7 @@ Raison : %4</translation> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>Déconnecter l'appareil %1</translation> </message> @@ -4299,7 +4465,12 @@ Raison : %4</translation> <translation>Vous avez déconnecté cet appareil.</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Sélectionnez un avatar</translation> </message> @@ -4319,7 +4490,7 @@ Raison : %4</translation> <translation>Erreur lors de la lecture du fichier  : %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Profil général de l'utilisateur</translation> </message> @@ -4370,12 +4541,12 @@ Raison : %4</translation> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Vérifier</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>Démarrer une discussion privée.</translation> </message> @@ -4391,11 +4562,21 @@ Raison : %4</translation> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>Rafraichir la liste des appareils.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Appareils</translation> </message> @@ -4428,8 +4609,8 @@ Raison : %4</translation> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>Défaut</translation> </message> @@ -4533,6 +4714,16 @@ Raison : %4</translation> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished">Évènements cachés</translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation>Notifications sur le bureau</translation> </message> @@ -4728,6 +4919,11 @@ Raison : %4</translation> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation>NOTIFICATIONS</translation> </message> @@ -4792,7 +4988,7 @@ Raison : %4</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation>Défaut</translation> </message> @@ -4906,6 +5102,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation>Notifier des messages reçus quand le client n'est pas la fenêtre active.</translation> </message> @@ -4942,12 +5143,12 @@ OFF - carré, ON - circulaire.</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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>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> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation>Alerte lorsqu'un message est reçu. @@ -5011,7 +5212,7 @@ be blurred.</source> <translation>Télécharger les clefs de chiffrement de message depuis et envoie vers la sauvegarde chiffrée en ligne de clefs.</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation>La clé utilisée pour déchiffrer les sauvegardes de clé stockées en ligne. Si celle-ci est dans le cache, vous pouvez activer la sauvegarde de vos clés en ligne afin d'en conserver une copie chiffrée sur le serveur en toute sécurité.</translation> </message> @@ -5043,7 +5244,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation>Sélectionnez un fichier</translation> </message> @@ -5098,7 +5314,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>EN CACHE</translation> </message> @@ -5128,7 +5344,17 @@ This setting will take effect upon restart.</source> <translation>DEMANDER</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation>Retour</translation> </message> @@ -5211,29 +5437,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Ouvrir la solution de remplacement dans le navigateur</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Annuler</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Confirmer</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_hu.ts b/resources/langs/nheko_hu.ts index 1277adbc..79bd91e5 100644 --- a/resources/langs/nheko_hu.ts +++ b/resources/langs/nheko_hu.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Hívás...</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Csatlakozás...</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -207,7 +213,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -231,12 +237,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>A felhasználó meg lett hívva: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -244,7 +250,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -271,7 +277,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation type="unfinished"></translation> </message> @@ -303,12 +309,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Meghívás megerősítése</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Biztos, hogy meg akarod hívni a következő felhasználót: %1 (%2)?</translation> </message> @@ -373,12 +379,12 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Kitiltás feloldva a felhasználónak: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Biztosan privát csevegést akarsz indítani %1 felhasználóval?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Gyorsítótár migráció nem sikerült!</translation> </message> @@ -388,7 +394,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Inkompatibilis gyorsítótár-verzió</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Nem sikerült visszaállítani az OLM fiókot. Kérlek, jelentkezz be ismét!</translation> </message> @@ -406,7 +412,7 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Kérlek, próbálj meg bejelentkezni újra: %1</translation> </message> @@ -733,7 +739,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -743,7 +749,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -829,7 +835,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -869,7 +875,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -965,7 +971,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+305"/> + <location filename="../../src/ChatPage.cpp" line="+312"/> <source>Decrypt secrets</source> <translation>Titkos tároló feloldása</translation> </message> @@ -993,7 +999,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>HItelesítési kód</translation> </message> @@ -1044,7 +1050,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1079,7 +1085,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1087,12 +1093,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1236,6 +1242,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">Fallback megnyitása böngészőben</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Mégse</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Megerősítés</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1309,6 +1343,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1488,8 +1540,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1529,7 +1581,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished">Szoba elhagyása</translation> </message> @@ -1546,8 +1598,8 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Érvénytelen Matrixazonosítót adtál meg. Példa: @janos:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="-157"/> @@ -1626,14 +1678,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>pl. @janos:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1664,13 +1716,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>szerver.em:8787</translation> + <source>yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1687,7 +1739,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1712,120 +1764,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 létrehozta és beállította a következő szobát: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 hanghívást kezdeményezett.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 videóhívást kezdeményezett.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 hívást kezdeményezett.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 fogadta a hívást.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 befejezte a hívást.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1876,7 +1814,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Szerkesztés</translation> </message> @@ -1911,12 +1849,7 @@ Example: https://server.my:8787</source> <translation>Műveletek</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1926,24 +1859,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2003,7 +1936,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2026,7 +1964,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Hitelesítési kérés küldése</translation> </message> @@ -2246,7 +2184,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2303,9 +2241,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2496,7 +2452,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2529,7 +2485,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Írj egy üzenetet…</translation> </message> <message> - <location filename="../../src/main.cpp" line="-26"/> + <location filename="../../src/main.cpp" line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2553,6 +2509,11 @@ Example: https://server.my:8787</source> <source>type</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ReCaptchaDialog</name> @@ -2676,7 +2637,7 @@ Example: https://server.my:8787</source> <translation>A felhasználónév nem lehet üres és csak a következő karaktereket tartalmazhatja: a-z, 0-9, ., _, =, - és /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2720,7 +2681,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Bezárás</translation> </message> @@ -2736,6 +2697,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2743,7 +2752,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2752,6 +2771,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Bezárás</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2804,7 +2828,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Felhasználói beállítások</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished">Kijelentkezés</translation> </message> @@ -2829,7 +2853,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2852,7 +2896,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Bezárás</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2868,6 +2912,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2915,12 +2964,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2958,22 +3007,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation type="unfinished"></translation> </message> @@ -3026,10 +3060,13 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation>Nem sikerült a kép feltöltése: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> - <translation>Szobabeállítások</translation> + <translation type="unfinished">Szobabeállítások</translation> </message> <message> <location line="+35"/> @@ -3059,7 +3096,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3071,22 +3108,22 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Notifications</source> - <translation>Értesítések</translation> + <translation type="unfinished">Értesítések</translation> </message> <message> <location line="+6"/> <source>Muted</source> - <translation>Némítva</translation> + <translation type="unfinished">Némítva</translation> </message> <message> <location line="+0"/> <source>Mentions only</source> - <translation>Csak említések</translation> + <translation type="unfinished">Csak említések</translation> </message> <message> <location line="+0"/> <source>All messages</source> - <translation>Az összes üzenet</translation> + <translation type="unfinished">Az összes üzenet</translation> </message> <message> <location line="+10"/> @@ -3230,21 +3267,15 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Encryption</source> - <translation>Titkosítás</translation> + <translation type="unfinished">Titkosítás</translation> </message> <message> <location line="+22"/> <source>End-to-End Encryption</source> - <translation>Végponttól végpontig titkosítás</translation> + <translation type="unfinished">Végponttól végpontig titkosítás</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3276,12 +3307,12 @@ Example: https://server.my:8787</source> <message> <location line="+6"/> <source>INFO</source> - <translation>INFÓ</translation> + <translation type="unfinished">INFÓ</translation> </message> <message> <location line="+9"/> <source>Internal ID</source> - <translation>Belső azonosító</translation> + <translation type="unfinished">Belső azonosító</translation> </message> <message> <location line="+16"/> @@ -3291,7 +3322,7 @@ Example: https://server.my:8787</source> <message> <location line="+19"/> <source>Room Version</source> - <translation>Szoba verziója</translation> + <translation type="unfinished">Szoba verziója</translation> </message> <message> <location line="+19"/> @@ -3330,7 +3361,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3422,7 +3453,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3510,7 +3541,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3618,7 +3649,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Sikeres hitelesítés</translation> </message> @@ -3634,15 +3665,95 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 hanghívást kezdeményezett.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished">%1 videóhívást kezdeményezett.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished">%1 hívást kezdeményezett.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 fogadta a hívást.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 befejezte a hívást.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished">Szerkesztve</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Az üzenet visszavonása nem sikerült: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Nem sikerült titkosítani az eseményt, küldés megszakítva!</translation> @@ -3696,7 +3807,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 elérhetővé tette a szobát vendégeknek.</translation> </message> @@ -3706,7 +3817,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 eltávolította a szoba elérhetőségét vendégek számára.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 olvashatóvá tette a világon bárki számára a szoba előzményeit. Az eseményeket most már azok is láthatják, akik nem csatlakoztak.</translation> </message> @@ -3726,7 +3837,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 beállította, hogy a szoba előzményei láthatóak legyenek a tagok számára a csatlakozásuktól kezdve.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 megváltoztatta a szoba engedélyeit.</translation> @@ -3865,7 +3976,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3936,12 +4047,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -3996,12 +4107,72 @@ Reason: %4</source> <translation>%1 visszavonta a kopogását.</translation> </message> <message> - <location line="-1700"/> + <location line="-1684"/> <source>You joined this room.</source> <translation>Csatlakoztál ehhez a szobához.</translation> </message> <message> - <location line="+1695"/> + <location line="-661"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 létrehozta és beállította a következő szobát: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2282"/> <source>%2 revoked the invite to %1.</source> <translation type="unfinished"></translation> </message> @@ -4033,23 +4204,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> + <name>TimelineSectionHeader</name> <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> - <message> - <location line="-18"/> - <source>Edited</source> - <translation>Szerkesztve</translation> - </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Nincs nyitott szoba</translation> </message> @@ -4154,7 +4319,7 @@ Reason: %4</source> <translation>Vissza a szobák listájára</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4209,7 +4374,7 @@ Reason: %4</source> <translation>Beállítások</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4235,24 +4400,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4260,7 +4425,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4270,7 +4435,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4280,7 +4445,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Profilkép kiválasztása</translation> </message> @@ -4300,7 +4470,7 @@ Reason: %4</source> <translation>Hiba a fájl olvasása közben: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Globális felhasználói profil</translation> </message> @@ -4351,12 +4521,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Hitelesítés</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4372,11 +4542,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Eszközök</translation> </message> @@ -4409,8 +4589,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>Alapértelmezett</translation> </message> @@ -4514,6 +4694,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished">Asztali értesítések</translation> </message> @@ -4709,6 +4899,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4773,7 +4968,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished">Alapértelmezett</translation> </message> @@ -4889,6 +5084,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4987,7 +5187,7 @@ az idővonal homályosítva lesz.</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished">A kulcs, amellyel hozzáférhetsz a kulcsok online biztonsági mentéseihez. Ha gyorsítótárazva van, lehetőséged van biztonsági másolatként, titkosítva a szerveren tárolni a titkosítási kulcsokat.</translation> </message> @@ -5024,7 +5224,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished">Fájl kiválasztása</translation> </message> @@ -5079,7 +5294,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>GYORSÍTÓTÁRAZVA</translation> </message> @@ -5109,7 +5324,17 @@ This setting will take effect upon restart.</source> <translation>LEKÉRÉS</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5192,29 +5417,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Fallback megnyitása böngészőben</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Mégse</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Megerősítés</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_id.ts b/resources/langs/nheko_id.ts index 342ad034..42a80839 100644 --- a/resources/langs/nheko_id.ts +++ b/resources/langs/nheko_id.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Memanggil…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Menghubungkan…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>Alias ke %1</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation>Pengaturan ruangan yang diperbolehkan</translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation>%1 dan %2</translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 dan %n lainnya</numerusform> @@ -207,7 +213,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation>X11</translation> </message> @@ -231,12 +237,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Pengguna yang diundang: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation> @@ -245,7 +251,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>Konfirmasi keluar dari akun</translation> </message> @@ -260,7 +266,7 @@ <translation>Gagal untuk membuka basisdata, kamu telah dikeluarkan!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>Ketuk pada ruangan</translation> </message> @@ -286,12 +292,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Konfirmasi undangan</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Apakah kamu ingin mengundang %1 (%2)?</translation> </message> @@ -336,12 +342,12 @@ <translation>Menghilangkan cekalan pengguna: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Apakah kamu ingin memulai chat privat dengan %1?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Migrasi tembolok gagal!</translation> </message> @@ -365,7 +371,7 @@ Jika kamu pikir bahwa ini adalah kesalahan, kamu bisa menutup Nheko untuk memuli <translation>Versi tembolok tidak kompatibel</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Gagal memulihkan akun OLM. Mohon masuk lagi.</translation> </message> @@ -383,7 +389,7 @@ Jika kamu pikir bahwa ini adalah kesalahan, kamu bisa menutup Nheko untuk memuli </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Mohon mencoba masuk lagi: %1</translation> </message> @@ -737,7 +743,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Besarkan</translation> </message> @@ -747,7 +753,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla <translation>Kecilkan</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation>Jangan tampilkan jumlah notifikasi untuk komunitas atau tag ini.</translation> </message> @@ -833,7 +839,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation>Konfirmasi pergabungan komunitas</translation> </message> @@ -873,7 +879,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation>Buat Obrolan Langsung</translation> </message> @@ -969,7 +975,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation>Dekripsi rahasia</translation> </message> @@ -997,7 +1003,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Kode Verifikasi</translation> </message> @@ -1048,7 +1054,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Tidak ada kunci untuk mengakses pesan ini. Kami telah meminta untuk kunci secara otomatis, tetapi kamu bisa meminta lagi jika kamu tidak sabar.</translation> </message> @@ -1083,7 +1089,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla <translation>Error dekripsi yang tidak dikenal</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Minta kunci</translation> </message> @@ -1091,12 +1097,12 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation>%1 mengaktifkan enkripsi ujung ke ujung</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation>Enkripsi membuat pesanmu aman dengan hanya memperbolehkan orang-orang yang kamu kirim pesannya untuk mereka baca. Untuk keamanan lebih, jika kamu ingin yakin kamu berbicara ke orang-orang yang benar, kamu bisa memverifikasi secara langsung.</translation> </message> @@ -1240,6 +1246,34 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation>Autentikasi cadangan</translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation>Buka cadangan, ikuti petunjuknya, dan konfirmasi setelah menyelesaikannya.</translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation>Buka Fallback di Peramban</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation>Batalkan</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation>Konfirmasi</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1313,6 +1347,24 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation>Pengguna yang diabaikan</translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation>Mengabaikan pengguna menyembunyikan pesannya (tetapi mereka masih dapat melihat pesan Anda!).</translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation>Berhenti Mengabaikan.</translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1492,9 +1544,9 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@pengguna:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation>@pengguna:serveranda.contoh.id</translation> </message> <message> <location line="+42"/> @@ -1533,7 +1585,7 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>Tinggalkan ruangan</translation> </message> @@ -1550,8 +1602,8 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Kamu telah memasukkan ID Matrix yang tidak valid mis. @joe:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation>Anda telah memasukkan ID Matrix yang tidak valid, misalnya @pengguna:serveranda.contoh.id</translation> </message> <message> <location line="-157"/> @@ -1630,19 +1682,19 @@ Kamu dapat memberikan alasan untuk orang lain untuk menerima ketukanmu:</transla </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>mis. @pengguna:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation>misalnya @pengguna:serveranda.contoh.com</translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> - <translation>Nama masuk kamu. Sebuah MXID seharusnya mulai dengan @ diikuti dengan ID pengguna. Setelah ID pengguna kamu harus menambahkan nama servermu setelah :. -Kamu juga bisa meletakkan alamat homeserver kamu di situ jika server kamu tidak mendukung pencarian .well-known. -Contoh: @pengguna:server.saya -Jika Nheko gagal menemukan homeserver kamu, sebuah kolom akan ditampilkan untuk memasukkan server secara manual.</translation> + <translation>Nama login Anda. Sebuah ID Matrix seharusnya berawalan dengan @ beserta ID penggunanya. Setelah ID pengguna, Anda perlu memasukkan nama server Anda setelah tanda titik dua (:). +Anda juga dapat memasukkan alamat homeserver Anda jika server tidam mendukung pengecekan .well-known. +Contoh: @pengguna:serveranda.contoh.id +Jika Nheko gagal menjelajahi homeserver Anda, maka akan ditampilkan kolom untuk memasukkan server secara manual.</translation> </message> <message> <location line="+27"/> @@ -1671,15 +1723,15 @@ Jika Nheko gagal menemukan homeserver kamu, sebuah kolom akan ditampilkan untuk </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>server.my:8787</translation> + <source>yourserver.example.com:8787</source> + <translation>serveranda.contoh.id:8787</translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> - <translation>Alamat yang dapat digunakan untuk menghubungi API klien homeserver kamu. -Contoh: https://server.saya:8787</translation> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> + <translation>Alamat yang dapat digunakan untuk menghubungi API klien homeserver Anda. +Contoh: https://serveranda.contoh.id:8787</translation> </message> <message> <location line="+32"/> @@ -1695,7 +1747,7 @@ Contoh: https://server.saya:8787</translation> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>Keluar</translation> </message> @@ -1720,120 +1772,6 @@ Contoh: https://server.saya:8787</translation> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation>Ruangan ini digantikan karena alasan berikut: %1</translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation>Pergi ke ruangan baru</translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation>%1 menghapus sebuah pesan</translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation>%1 mengubah server mana yang diizinkan di ruangan ini.</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation>%2 mengubah nama ruangan ke: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation>%1 menghapus nama ruangan</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation>%2 mengubah topik ke: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation>%1 menghapus topiknya</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 mengubah avatar ruangan</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation>%1 mengubah pesan-pesan yang dipasangi pin.</translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation>%1 mengubah alamat-alamat untuk ruangan ini.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation>%1 mengubah komunitas induk untuk ruangan.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 membuat dan mengkonfigurasikan ruangan: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 melakukan panggilan suara.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 melakukan panggilan suara.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 melakukan panggilan.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 menjawab panggilan.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation>%1 menolak panggilan.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation>%1 memilih menjawab</translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 mengakhir panggilan.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation>%1 sedang melakukan panggilan...</translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>Izinkan mereka untuk masuk</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1884,7 +1822,7 @@ Contoh: https://server.saya:8787</translation> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Sunting</translation> </message> @@ -1919,12 +1857,7 @@ Contoh: https://server.saya:8787</translation> <translation>Opsi</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation>Pesan status</translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation>Masukkan alasan untuk menghapus atau tekan enter untuk menghapus tanpa alasan:</translation> </message> @@ -1934,24 +1867,24 @@ Contoh: https://server.saya:8787</translation> <translation>Alasan untuk menghapus</translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation>Pergi ke &pesan</translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>&Salin</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>Salin lokasi &tautan</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>Re&aksi</translation> </message> @@ -2011,7 +1944,12 @@ Contoh: https://server.saya:8787</translation> <translation>Hap&us pesan</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation>Laporkan pesan</translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>&Simpan sebagai</translation> </message> @@ -2034,7 +1972,7 @@ Contoh: https://server.saya:8787</translation> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Kirim Permintaan Verifikasi</translation> </message> @@ -2254,7 +2192,7 @@ Contoh: https://server.saya:8787</translation> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation>Terapkan perubahan izin</translation> </message> @@ -2311,9 +2249,27 @@ Contoh: https://server.saya:8787</translation> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation>Administrator: %1</translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation>Moderator: %1</translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation>Pengguna: %1</translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation>Peristiwa lainnya</translation> </message> @@ -2504,7 +2460,7 @@ Contoh: https://server.saya:8787</translation> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation>Buat sebuah profil unik yang memungkinkan kamu untuk masuk ke beberapa akun secara bersamaan dan mulai beberapa instansi Nheko.</translation> </message> @@ -2522,7 +2478,7 @@ Contoh: https://server.saya:8787</translation> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation>Alias untuk '--log-level trace'.</translation> </message> @@ -2547,6 +2503,11 @@ Contoh: https://server.saya:8787</translation> <translation>jenis</translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation>Mengompak ulang basis data yang dapat meningkatkan performa.</translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation>Tanggapi</translation> @@ -2684,7 +2645,7 @@ Contoh: https://server.saya:8787</translation> <translation>Nama pengguna tidak boleh kosong, dan hanya mengandung karakter a-z, 0-9, ., _, =, -, dan /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation>Kembali</translation> @@ -2728,7 +2689,7 @@ Contoh: https://server.saya:8787</translation> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Tutup</translation> </message> @@ -2744,6 +2705,54 @@ Contoh: https://server.saya:8787</translation> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation>Laporkan pesan</translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation>Pesan ini yang akan dilaporkan akan dikirim ke administrator server Anda untuk ditinjau. Perlu dicatat bahwa tidak semua administrator meninjau konten yang dilaporkan. Anda seharusnya juga bertanya kepada moderator ruangan untuk menghapus konten tersebut jika diperlukan.</translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation>Masukkan alasan Anda melaporkan:</translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation>Seberapa buruk pesan tersebut?</translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation>Tidak terlalu buruk</translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation>Sedikit buruk</translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation>Buruk</translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation>Sangat buruk</translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation>Terlalu buruk</translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2751,7 +2760,17 @@ Contoh: https://server.saya:8787</translation> <translation>Temukan Ruangan Publik</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation>Bergabung</translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation>Buka</translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>Cari ruangan publik</translation> </message> @@ -2760,6 +2779,11 @@ Contoh: https://server.saya:8787</translation> <source>Choose custom homeserver</source> <translation>Pilih homeserver kustom</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation>Tutup</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2812,7 +2836,7 @@ Contoh: https://server.saya:8787</translation> <translation>Pengaturan pengguna</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>Keluar</translation> </message> @@ -2837,7 +2861,27 @@ Contoh: https://server.saya:8787</translation> <translation>Tetapkan pesan status</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation>Status daring otomatis</translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation>Daring</translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation>Tidak tersedia</translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation>Luring</translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>Enkripsi belum disiapkan</translation> @@ -2860,7 +2904,7 @@ Contoh: https://server.saya:8787</translation> <translation>Tutup</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>Masukkan tag yang kamu ingin gunakan:</translation> </message> @@ -2876,6 +2920,11 @@ Contoh: https://server.saya:8787</translation> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation>Tandai sebagai dibaca</translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation>Pengaturan ruangan</translation> </message> @@ -2923,12 +2972,12 @@ Contoh: https://server.saya:8787</translation> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>Anggota dari %1</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2966,22 +3015,7 @@ Contoh: https://server.saya:8787</translation> <translation>Tingkat daya</translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation>Administrator: %1</translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation>Moderator: %1</translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation>Pengguna: %1</translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>Ruangan ini tidak terenkripsi!</translation> </message> @@ -3034,8 +3068,11 @@ Contoh: https://server.saya:8787</translation> <source>Failed to upload image: %s</source> <translation>Gagal mengunggah gambar: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation>Pengaturan Ruangan</translation> </message> @@ -3067,7 +3104,7 @@ Contoh: https://server.saya:8787</translation> <translation>Tidak ada topik yang ditetapkan</translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation>Ubah topik ruangan</translation> </message> @@ -3130,7 +3167,7 @@ Contoh: https://server.saya:8787</translation> <message> <location line="-241"/> <source>Change the list of rooms users can join this room via. Usually this is the official community of this room.</source> - <translation>Ubah daftar ruangan yang bisa digabung oleh ruangan dari. Biasanya ini komunitas resmi dari ruangan ini.</translation> + <translation>Ubah daftar ruangan yang bisa digabung dari ruangan mana. Biasanya ini adalah komunitas resmi dari ruangan ini.</translation> </message> <message> <location line="+6"/> @@ -3246,14 +3283,7 @@ Contoh: https://server.saya:8787</translation> <translation>Enkripsi Ujung ke Ujung</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation>Enkripsi saat ini eksperimental dan hal-hal mungkin rusak tanpa terduga. <br> -Dicatat bahwa ini tidak dapat dinonaktifkan setelah ini.</translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation>Izin</translation> </message> @@ -3339,7 +3369,7 @@ Dicatat bahwa ini tidak dapat dinonaktifkan setelah ini.</translation> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>Mohon masukkan kata sandi loginmu untuk melanjutkan:</translation> </message> @@ -3431,7 +3461,7 @@ Dicatat bahwa ini tidak dapat dinonaktifkan setelah ini.</translation> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>Gagal menghubungkan ke penyimpanan rahasia</translation> </message> @@ -3521,7 +3551,7 @@ Jika kamu memilih verifikasi, kamu harus memiliki perangkat lain yang tersedia. <translation>Penyiapan enkripsi gagal: %1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>Kunci identitas telah berubah. Ini merusak enkripsi ujung-ke-ujung, jadi kamu dikeluarkan.</translation> </message> @@ -3629,7 +3659,7 @@ Jika kamu memilih verifikasi, kamu harus memiliki perangkat lain yang tersedia. <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Verifikasi Berhasil</translation> </message> @@ -3645,15 +3675,95 @@ Jika kamu memilih verifikasi, kamu harus memiliki perangkat lain yang tersedia. </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation>Bagian dari sebuah utas</translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation>%1 melakukan panggilan suara.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation>%1 melakukan panggilan suara.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation>%1 melakukan panggilan.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation>%1 menjawab panggilan.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation>%1 menolak panggilan.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation> </translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation>%1 mengakhir panggilan.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation>%1 sedang melakukan panggilan...</translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation>Izinkan mereka untuk masuk</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation>Ruangan ini digantikan karena alasan berikut: %1</translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation>Pergi ke ruangan baru</translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation>Disunting</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation>Bagian dari sebuah utas</translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Reaksi pesan gagal: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Gagal mendekripsikan peristiwa, pengiriman dihentikan!</translation> @@ -3702,7 +3812,7 @@ Jika kamu memilih verifikasi, kamu harus memiliki perangkat lain yang tersedia. <translation>%1 mengizinkan anggota dari ruangan berikut untuk bergabung ke ruangan ini secara otomatis: %2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 membuat ruangan ini terbuka ke tamu.</translation> </message> @@ -3712,7 +3822,7 @@ Jika kamu memilih verifikasi, kamu harus memiliki perangkat lain yang tersedia. <translation>%1 telah menutup ruangan ke akses tamu.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 membuat sejarah ruangan dibaca oleh siapa saja. Peristiwa mungkin bisa dibaca oleh orang yang tidak bergabung.</translation> </message> @@ -3732,7 +3842,7 @@ Jika kamu memilih verifikasi, kamu harus memiliki perangkat lain yang tersedia. <translation>%1 membuat sejarah ruangan bisa dilihat oleh anggota yang telah bergabung ke ruangan ini.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 telah mengubah izin ruangan.</translation> @@ -3871,7 +3981,7 @@ Jika kamu memilih verifikasi, kamu harus memiliki perangkat lain yang tersedia. <translation>%1 telah mengubah tingkat daya tipe peristiwa "%2" dari %3 ke %4.</translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation>(kosong)</translation> </message> @@ -3943,7 +4053,7 @@ Reason: %4</source> Alasan: %4</translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation>%2 membatalkan undangan ke %1.</translation> </message> @@ -4003,22 +4113,82 @@ Alasan: %4</translation> <translation>%1 menolak ketukannya.</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation>%1 mengubah server mana yang diizinkan di ruangan ini.</translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation>%1 menghapus nama ruangan.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation>%1 mengubah nama ruangan ke: %2</translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation>%1 menghapus topik.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation>%1 mengubah topik ke: %2</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation>%1 mengubah avatar ruangan ke: %2</translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation>%1 menghapus avatar ruangan.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation>%1 mengubah pesan-pesan yang disematkan.</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation>%1 mengubah alamat-alamat untuk ruangan ini.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation>%1 mengubah komunitas induk untuk ruangan.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation>%1 membuat dan mengkonfigurasikan ruangan: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation>%1 mengubah keadaan peristiwa %2 yang tidak diketahui.</translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>Kamu bergabung ruangan ini.</translation> </message> <message> - <location line="+998"/> + <location line="+1019"/> <source>%1 made this room require an invitation to join.</source> <translation>%1 membuat ruangan ini membutuhkan undangan untuk bergabung.</translation> </message> <message> - <location line="+654"/> + <location line="+618"/> <source>%1 invited %2.</source> <translation>%1 mengundang %2.</translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 mengubah avatarnya dan ubah nama tampilannya ke %2.</translation> </message> @@ -4045,23 +4215,17 @@ Alasan: %4</translation> </message> </context> <context> - <name>TimelineRow</name> + <name>TimelineSectionHeader</name> <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation>Bagian dari sebuah utasan</translation> - </message> - <message> - <location line="-18"/> - <source>Edited</source> - <translation>Diedit</translation> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> + <translation>Pesan status %1</translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Tidak ada ruangan yang dibuka</translation> </message> @@ -4166,7 +4330,7 @@ Alasan: %4</translation> <translation>Kembali ke daftar ruangan</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation>Tampilkan atau sembunyikan pesan yang dipasangi pin</translation> </message> @@ -4221,7 +4385,7 @@ Alasan: %4</translation> <translation>Pengaturan</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation>Lepaskan pin</translation> </message> @@ -4247,24 +4411,24 @@ Alasan: %4</translation> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>Tidak ada alur pendaftaran yang tersedia!</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>Pendaftaran dibatalkan</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>Mohon masukkan token pendaftaran yang valid.</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>Token tidak valid</translation> </message> @@ -4272,7 +4436,7 @@ Alasan: %4</translation> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation> <numerusform>Unggah %n file</numerusform> @@ -4282,7 +4446,7 @@ Alasan: %4</translation> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>Keluarkan perangkat %1</translation> </message> @@ -4292,7 +4456,12 @@ Alasan: %4</translation> <translation>Kamu mengeluarkan perangkat ini.</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation>Gagal mengabaikan "%1": %2</translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Pilih sebuah avatar</translation> </message> @@ -4312,7 +4481,7 @@ Alasan: %4</translation> <translation>Terjadi kesalahan saat membaca file: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Profil Pengguna Global</translation> </message> @@ -4363,12 +4532,12 @@ Alasan: %4</translation> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Lakukan verifikasi</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>Mulai chat privat.</translation> </message> @@ -4384,11 +4553,21 @@ Alasan: %4</translation> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation>Batalkan pengabaian pengguna.</translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation>Abaikan pengguna.</translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>Muat ulang daftar perangkat.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation>Perangkat</translation> </message> @@ -4421,8 +4600,8 @@ Alasan: %4</translation> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>Default</translation> </message> @@ -4521,6 +4700,16 @@ Alasan: %4</translation> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation>Peristiwa tersembunyi</translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation>Pengguna yang diabaikan</translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation>Notifikasi desktop</translation> </message> @@ -4711,6 +4900,11 @@ Alasan: %4</translation> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation>KETERLIHATAN PESAN GLOBAL</translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation>NOTIFIKASI</translation> </message> @@ -4775,7 +4969,7 @@ Alasan: %4</translation> <translation>Hapus peristiwa yang telah kedaluwarsa secara berkala</translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation>Default</translation> </message> @@ -4877,6 +5071,11 @@ Jika diaktifkan, ruangan yang datang lebih dulu menurut abjad akan diurutkan leb </message> <message> <location line="+8"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation>Konfigurasi apakah peristiwa tertentu seperti orang yang bergabung ke ruangan ditampilkan atau tidak.</translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation>Beri tahu tentang pesan yang diterima saat klien tidak difokuskan.</translation> </message> @@ -4913,29 +5112,29 @@ MATI - kotak, NYALA - bulat.</translation> <translation>Secara otomatis membalas permintaan kunci dari pengguna lain jika mereka terverifikasi, bahkan jika perangkat itu seharusnya tidak memiliki akses ke kunci itu bagaimanapun.</translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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>Kunci untuk memverifikasi perangkatmu. Jika disimpan, memverifikasi salah satu perangkatmu akan menandainya sebagai terverifikasi untuk perangkatmu yang lain dan untuk pengguna yang telah memverifikasimu.</translation> </message> <message> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation>Menampilkan pemberitahuan saat sebuah pesan diterima. Ini biasanya menyebabkan ikon aplikasi di bilah tugas untuk beranimasi.</translation> </message> <message> - <location line="-350"/> + <location line="-366"/> <source>Communities sidebar</source> <translation>Bilah samping komunitas</translation> </message> <message> - <location line="+42"/> + <location line="+46"/> <source>Show message counts for communities and tags</source> <translation>Tampilkan hitungan pesan untuk komunitas dan tag</translation> </message> <message> - <location line="+241"/> + <location line="+251"/> <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source> <translation>Tetapkan lebar pesan di lini masa (dalam pixel). Ini dapat membantu keterbacaan di layar lebar ketika Nheko dimaksimalkan</translation> </message> @@ -4954,7 +5153,7 @@ Status ditampilkan di sebelah stempel waktu. Peringatan: Jika homeservermu tidak mendukung ini, ruanganmu tidak akan pernah ditandai sebagai dibaca!</translation> </message> <message> - <location line="+13"/> + <location line="+15"/> <source>Display an identicon instead of a letter when no avatar is set.</source> <translation>Tampilkan sebuah identikon daripada sebuah huruf ketika tidak ada avatar yang diatur.</translation> </message> @@ -5012,7 +5211,7 @@ akan buram.</translation> <translation>Unduh kunci enkripsi pesan dari dan unggah ke cadangan kunci daring terenkripsi.</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation>Kunci untuk mendekripsikan cadangan kunci daring. Jika disimpan, kamu bisa mengaktifkan kunci cadangan daring untuk menyimpan kunci enkripsi yang dienkripsi secara aman di servernya.</translation> </message> @@ -5046,7 +5245,22 @@ Pengaturan ini akan ditetapkan saat dimulai ulang.</translation> <translation>Hapus peristiwa yang telahkedaluwarsa secara berkala seperti yang ditentukan dalam konfigurasi kedaluwarsa peristiwa. Karena ini saat ini tidak dijalankan di sisi server, kamu harus memiliki satu klien yang menjalankan ini secara berkala.</translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation>Kelola pengguna Anda yang diabaikan.</translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation>Fon sistem</translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation>Fon emoji sistem</translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation>Pilih sebuah file</translation> </message> @@ -5101,7 +5315,7 @@ Pengaturan ini akan ditetapkan saat dimulai ulang.</translation> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>DISIMPAN</translation> </message> @@ -5131,7 +5345,17 @@ Pengaturan ini akan ditetapkan saat dimulai ulang.</translation> <translation>MINTA</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation>ATUR</translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation>KELOLA</translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation>Kembali</translation> </message> @@ -5214,29 +5438,6 @@ Pengaturan ini akan ditetapkan saat dimulai ulang.</translation> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Buka Fallback di Peramban</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Batalkan</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Konfirmasi</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation>Buka munduran, ikuti petunjuknya, dan konfirmasi setelah menyelesaikannya.</translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_ie.ts b/resources/langs/nheko_ie.ts index 008600f8..674fc92d 100644 --- a/resources/langs/nheko_ie.ts +++ b/resources/langs/nheko_ie.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation type="unfinished"></translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -237,12 +243,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -251,7 +257,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -288,7 +294,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> + <location line="+22"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -306,7 +312,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation type="unfinished"></translation> </message> @@ -363,12 +369,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+30"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation type="unfinished"></translation> </message> @@ -438,7 +444,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> @@ -735,7 +741,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -745,7 +751,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -831,7 +837,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -872,7 +878,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -996,7 +1002,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation type="unfinished"></translation> </message> @@ -1047,7 +1053,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1082,7 +1088,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1090,12 +1096,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1239,6 +1245,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1312,6 +1346,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1491,8 +1543,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1532,7 +1584,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished"></translation> </message> @@ -1551,14 +1603,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> + <source>e.g @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1589,13 +1641,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1613,7 +1665,7 @@ Example: https://server.my:8787</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1690,7 +1742,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1715,120 +1767,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1879,7 +1817,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1914,12 +1852,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1929,24 +1862,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2006,7 +1939,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2029,7 +1967,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2249,7 +2187,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2306,9 +2244,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2499,7 +2455,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2517,7 +2473,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2542,6 +2498,11 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation type="unfinished"></translation> @@ -2624,7 +2585,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2723,7 +2684,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished"></translation> </message> @@ -2739,6 +2700,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2746,7 +2755,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2755,6 +2774,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2807,7 +2831,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished"></translation> </message> @@ -2832,7 +2856,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2855,7 +2899,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2871,6 +2915,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2918,12 +2967,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2962,45 +3011,64 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> + <location line="+92"/> + <source>This room is not encrypted!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>This user is verified.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Moderator: %1</source> + <source>This user isn't verified, but is still using the same master key from the first time you met.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>User: %1</source> + <source>This user has unverified devices!</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>RoomSettings</name> <message> - <location line="+20"/> - <source>This room is not encrypted!</source> + <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> + <source>Failed to enable encryption: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>This user is verified.</source> + <location line="+404"/> + <source>Select an avatar</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user isn't verified, but is still using the same master key from the first time you met.</source> + <location line="+0"/> + <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user has unverified devices!</source> + <location line="+12"/> + <source>The selected file is not an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Error while reading file: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <location line="+19"/> + <source>Failed to upload image: %s</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>RoomSettings</name> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3033,7 +3101,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3212,13 +3280,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3277,37 +3339,6 @@ Example: https://server.my:8787</source> <source>show more</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> - <source>Failed to enable encryption: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+404"/> - <source>Select an avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>All Files (*)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>The selected file is not an image</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Error while reading file: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+32"/> - <location line="+19"/> - <source>Failed to upload image: %s</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>RoomlistModel</name> @@ -3335,7 +3366,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3427,7 +3458,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3515,7 +3546,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3623,7 +3654,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3639,20 +3670,160 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1251"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+711"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+250"/> + <location line="+265"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3707,7 +3878,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3717,7 +3888,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3737,7 +3908,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3880,7 +4051,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3951,12 +4122,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4043,23 +4214,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation type="unfinished"></translation> </message> @@ -4165,7 +4330,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4220,7 +4385,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4246,24 +4411,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4271,7 +4436,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4282,7 +4447,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4333,12 +4498,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4354,11 +4519,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished"></translation> </message> @@ -4388,7 +4563,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4398,7 +4573,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -4421,8 +4601,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4526,6 +4706,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished"></translation> </message> @@ -4721,6 +4911,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4785,7 +4980,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4896,6 +5091,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4991,7 +5191,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5028,7 +5228,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished"></translation> </message> @@ -5083,7 +5298,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5113,7 +5328,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5196,29 +5421,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_it.ts b/resources/langs/nheko_it.ts index 5746ac44..dee39aab 100644 --- a/resources/langs/nheko_it.ts +++ b/resources/langs/nheko_it.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Sto chiamando…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Connessione in corso...</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -232,12 +238,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Invitato utente: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -246,7 +252,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -273,7 +279,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation>Apertura del database fallita, disconnessione in corso!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation type="unfinished"></translation> </message> @@ -305,12 +311,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Conferma Invito</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Vuoi veramente invitare %1 (%2)?</translation> </message> @@ -375,12 +381,12 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Rimosso il ban dall'utente: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Sei sicuro di voler avviare una chat privata con %1?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Migrazione della cache fallita!</translation> </message> @@ -390,7 +396,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Versione della cache incompatibile</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Impossibile ripristinare l'account OLM. Per favore accedi nuovamente.</translation> </message> @@ -408,7 +414,7 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Per favore prova ad accedere nuovamente: %1</translation> </message> @@ -735,7 +741,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -745,7 +751,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -831,7 +837,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -872,7 +878,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -968,7 +974,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+305"/> + <location filename="../../src/ChatPage.cpp" line="+312"/> <source>Decrypt secrets</source> <translation>Decifra i segreti</translation> </message> @@ -996,7 +1002,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Codice di verifica</translation> </message> @@ -1047,7 +1053,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1082,7 +1088,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1090,12 +1096,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1239,6 +1245,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">Apertura di Ripiego nel Browser</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Annulla</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Conferma</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1312,6 +1346,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1491,8 +1543,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1532,7 +1584,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished">Lascia la stanza</translation> </message> @@ -1549,8 +1601,8 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Hai inserito un ID Matrix non valido, es @joe:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="-157"/> @@ -1629,14 +1681,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>es. @joe:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1667,13 +1719,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>server.my:8787</translation> + <source>yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1690,7 +1742,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1715,120 +1767,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 creato e configurata stanza: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 ha avviato una chiamata audio.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 ha risposto alla chiamata.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 ha terminato la chiamata.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1879,7 +1817,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Modifica</translation> </message> @@ -1914,12 +1852,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Opzioni</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1929,24 +1862,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2006,7 +1939,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2029,7 +1967,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Invia richiesta di verifica</translation> </message> @@ -2249,7 +2187,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2306,9 +2244,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2499,7 +2455,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2532,7 +2488,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Scrivi un messaggio…</translation> </message> <message> - <location filename="../../src/main.cpp" line="-26"/> + <location filename="../../src/main.cpp" line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2556,6 +2512,11 @@ Example: https://server.my:8787</source> <source>type</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ReCaptchaDialog</name> @@ -2679,7 +2640,7 @@ Example: https://server.my:8787</source> <translation>Il nome utente non deve essere vuoto e deve contenere solo i caratteri a-z, 0-9, ., _, =, -, e /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2723,7 +2684,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Chiudi</translation> </message> @@ -2739,6 +2700,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2746,7 +2755,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2755,6 +2774,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Chiudi</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2807,7 +2831,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Impostazioni utente</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished">Disconnettiti</translation> </message> @@ -2832,7 +2856,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2855,7 +2899,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Chiudi</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2871,6 +2915,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2918,12 +2967,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2962,22 +3011,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation type="unfinished"></translation> </message> @@ -3030,8 +3064,11 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation type="unfinished">Impossibile fare l'upload dell'immagine: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3064,7 +3101,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3243,13 +3280,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Crittografia End-to-End</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3335,7 +3366,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3427,7 +3458,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3515,7 +3546,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3623,7 +3654,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3639,15 +3670,95 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 ha avviato una chiamata audio.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 ha risposto alla chiamata.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 ha terminato la chiamata.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Oscuramento del messaggio fallito: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3702,7 +3813,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 ha configurato questa stanza affinché sia aperta ai visitatori.</translation> </message> @@ -3712,7 +3823,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 ha chiuso la stanza ai visitatori.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 ha reso la cronologia della stanza leggibile da tutti. Gli eventi adesso possono essere letti da persone esterne.</translation> </message> @@ -3732,7 +3843,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 ha reso la cronologia della stanza visibile ai membri dal momento in cui sono entrati nella stanza.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 ha cambiato i permessi della stanza.</translation> @@ -3875,7 +3986,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3946,12 +4057,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4006,12 +4117,72 @@ Reason: %4</source> <translation>%1 ha oscurato la sua bussata.</translation> </message> <message> - <location line="-1700"/> + <location line="-1684"/> <source>You joined this room.</source> <translation>Sei entrato in questa stanza.</translation> </message> <message> - <location line="+1695"/> + <location line="-661"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 creato e configurata stanza: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2282"/> <source>%2 revoked the invite to %1.</source> <translation type="unfinished"></translation> </message> @@ -4043,23 +4214,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Nessuna stanza aperta</translation> </message> @@ -4165,7 +4330,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4220,7 +4385,7 @@ Reason: %4</source> <translation>Impostazioni</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4246,24 +4411,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4271,7 +4436,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4282,7 +4447,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4292,7 +4457,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished">Scegli un avatar</translation> </message> @@ -4312,7 +4482,7 @@ Reason: %4</source> <translation type="unfinished">Errore durante la lettura del file: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4363,12 +4533,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4384,11 +4554,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Dispositivi</translation> </message> @@ -4421,8 +4601,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4526,6 +4706,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished">Notifiche desktop</translation> </message> @@ -4721,6 +4911,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4785,7 +4980,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4896,6 +5091,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4991,7 +5191,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5028,7 +5228,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished">Seleziona un file</translation> </message> @@ -5083,7 +5298,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5113,7 +5328,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5196,29 +5421,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Apertura di Ripiego nel Browser</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Annulla</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Conferma</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_ja.ts b/resources/langs/nheko_ja.ts index dc2aebdc..40130a30 100644 --- a/resources/langs/nheko_ja.ts +++ b/resources/langs/nheko_ja.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation type="unfinished"></translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -207,7 +213,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -231,12 +237,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>招待されたユーザー: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -244,7 +250,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -281,7 +287,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation type="unfinished"></translation> </message> @@ -313,12 +319,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation type="unfinished"></translation> </message> @@ -388,12 +394,12 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>永久追放を解除されたユーザー: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> <message> - <location line="-861"/> + <location line="-907"/> <source>Failed to restore OLM account. Please login again.</source> <translation>OLMアカウントを復元できませんでした。もう一度ログインして下さい。</translation> </message> @@ -411,7 +417,7 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>もう一度ログインしてみて下さい: %1</translation> </message> @@ -733,7 +739,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -743,7 +749,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -829,7 +835,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -869,7 +875,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -965,7 +971,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+377"/> + <location filename="../../src/ChatPage.cpp" line="+384"/> <source>Decrypt secrets</source> <translation type="unfinished"></translation> </message> @@ -993,7 +999,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation type="unfinished"></translation> </message> @@ -1044,7 +1050,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1079,7 +1085,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1087,12 +1093,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1236,6 +1242,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">キャンセル</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">確認</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1309,6 +1343,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1488,8 +1540,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1529,7 +1581,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished">部屋を出る</translation> </message> @@ -1546,7 +1598,7 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1626,14 +1678,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>例 @joe:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1664,13 +1716,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1687,7 +1739,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1712,120 +1764,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1876,7 +1814,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1911,12 +1849,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">オプション</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1926,24 +1859,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2003,7 +1936,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2026,7 +1964,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2246,7 +2184,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2303,9 +2241,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2496,7 +2452,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2529,7 +2485,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">メッセージを書く...</translation> </message> <message> - <location filename="../../src/main.cpp" line="-26"/> + <location filename="../../src/main.cpp" line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2553,6 +2509,11 @@ Example: https://server.my:8787</source> <source>type</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ReCaptchaDialog</name> @@ -2676,7 +2637,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2720,7 +2681,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished">閉じる</translation> </message> @@ -2736,6 +2697,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2743,7 +2752,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2752,6 +2771,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">閉じる</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2804,7 +2828,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">ユーザー設定</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished">ログアウト</translation> </message> @@ -2829,7 +2853,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2852,7 +2896,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">閉じる</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2868,6 +2912,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2915,12 +2964,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2958,22 +3007,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation type="unfinished"></translation> </message> @@ -3026,8 +3060,11 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation type="unfinished">画像をアップロードできませんでした: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3059,7 +3096,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3238,13 +3275,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">エンドツーエンド暗号化</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3330,7 +3361,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3422,7 +3453,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3510,7 +3541,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3618,7 +3649,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3634,15 +3665,95 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>メッセージを編集できませんでした: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3696,7 +3807,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3706,7 +3817,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3726,7 +3837,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3865,7 +3976,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3936,12 +4047,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -3991,12 +4102,72 @@ Reason: %4</source> <translation>%1は退室しました。</translation> </message> <message> - <location line="-1688"/> + <location line="-2333"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1695"/> + <location line="+1679"/> <source>%2 revoked the invite to %1.</source> <translation type="unfinished"></translation> </message> @@ -4033,23 +4204,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>部屋が開いていません</translation> </message> @@ -4154,7 +4319,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4209,7 +4374,7 @@ Reason: %4</source> <translation type="unfinished">設定</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4235,24 +4400,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4260,7 +4425,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4270,7 +4435,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4280,7 +4445,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished">アバターを選択</translation> </message> @@ -4300,7 +4470,7 @@ Reason: %4</source> <translation type="unfinished">ファイルの読み込み時にエラーが発生しました: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4351,12 +4521,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4372,11 +4542,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">デバイス一覧</translation> </message> @@ -4409,8 +4589,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4514,6 +4694,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished">デスクトップ通知</translation> </message> @@ -4709,6 +4899,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4773,7 +4968,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4884,6 +5079,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4979,7 +5179,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5016,7 +5216,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished">ファイルを選択</translation> </message> @@ -5071,7 +5286,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5101,7 +5316,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5184,29 +5409,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished">キャンセル</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished">確認</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_ml.ts b/resources/langs/nheko_ml.ts index 96213cac..c1a634b6 100644 --- a/resources/langs/nheko_ml.ts +++ b/resources/langs/nheko_ml.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>വിളിക്കുന്നു...</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>ബന്ധിപ്പിക്കുന്നു...</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -232,12 +238,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>ക്ഷണിച്ച ഉപയോക്താവ്:% 1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -246,7 +252,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -283,7 +289,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> + <location line="+22"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -300,7 +306,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+178"/> + <location line="+217"/> <source>Knock on room</source> <translation type="unfinished"></translation> </message> @@ -342,12 +348,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+30"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>ക്ഷണം ഉറപ്പാക്കു</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation type="unfinished"></translation> </message> @@ -417,13 +423,13 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> <message> - <location line="-760"/> - <location line="+112"/> + <location line="-806"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>ദയവായി വീണ്ടും ലോഗിൻ ചെയ്യാൻ നോക്കുക: %1</translation> </message> @@ -735,7 +741,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -745,7 +751,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -831,7 +837,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -872,7 +878,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -968,7 +974,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+395"/> + <location filename="../../src/ChatPage.cpp" line="+402"/> <source>Decrypt secrets</source> <translation type="unfinished"></translation> </message> @@ -996,7 +1002,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>ഉറപ്പാക്കൽ കോഡ്</translation> </message> @@ -1047,7 +1053,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1082,7 +1088,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>കീ അഭ്യർ</translation> </message> @@ -1090,12 +1096,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1239,6 +1245,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">റദ്ദാക്കു</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1312,6 +1346,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1491,9 +1543,9 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@joe:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation type="unfinished"></translation> </message> <message> <location line="+42"/> @@ -1532,7 +1584,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished"></translation> </message> @@ -1549,7 +1601,7 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1629,14 +1681,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>ഉദാ. @joe:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1667,13 +1719,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1690,7 +1742,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1715,120 +1767,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>ഇവരെ അനുവദിക്കുക</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1879,7 +1817,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>തിരുത്തുക</translation> </message> @@ -1914,12 +1852,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1929,24 +1862,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2006,7 +1939,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2029,7 +1967,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2249,7 +2187,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2306,9 +2244,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2499,7 +2455,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2532,7 +2488,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">ഒരു സന്ദേശം എഴുതുക….</translation> </message> <message> - <location filename="../../src/main.cpp" line="-26"/> + <location filename="../../src/main.cpp" line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2556,6 +2512,11 @@ Example: https://server.my:8787</source> <source>type</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ReCaptchaDialog</name> @@ -2624,7 +2585,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2723,7 +2684,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished">അടയ്ക്കുക</translation> </message> @@ -2739,6 +2700,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2746,7 +2755,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2755,6 +2774,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">അടയ്ക്കുക</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2807,7 +2831,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished"></translation> </message> @@ -2832,7 +2856,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2855,7 +2899,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">അടയ്ക്കുക</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2871,6 +2915,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2918,12 +2967,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2962,22 +3011,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation type="unfinished"></translation> </message> @@ -3030,8 +3064,11 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3064,7 +3101,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3243,13 +3280,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3335,7 +3366,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3427,7 +3458,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3515,7 +3546,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3623,7 +3654,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3639,20 +3670,160 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished">ഇവരെ അനുവദിക്കുക</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1251"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+711"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished">നിങ്ങൾ ഈ മുറിയിൽ ചേർന്നു.</translation> </message> <message> - <location line="+250"/> + <location line="+265"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3707,7 +3878,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3717,7 +3888,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3737,7 +3908,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3880,7 +4051,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3951,12 +4122,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4043,23 +4214,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation type="unfinished"></translation> </message> @@ -4165,7 +4330,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4220,7 +4385,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4246,24 +4411,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4271,7 +4436,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4282,7 +4447,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4292,7 +4457,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>All Files (*)</source> <translation type="unfinished">എല്ലാ ഫയലുകളും (*)</translation> </message> @@ -4312,7 +4482,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4363,12 +4533,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4384,11 +4554,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">ഉപകരണങ്ങൾ</translation> </message> @@ -4421,8 +4601,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4526,6 +4706,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished"></translation> </message> @@ -4721,6 +4911,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4785,7 +4980,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4896,6 +5091,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4991,7 +5191,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5028,7 +5228,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished">ഒരു ഫയൽ തിരഞ്ഞെടുക്കുക</translation> </message> @@ -5083,7 +5298,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5113,7 +5328,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5196,29 +5421,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished">റദ്ദാക്കു</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_nl.ts b/resources/langs/nheko_nl.ts index 6daea7f8..b8b9e1cb 100644 --- a/resources/langs/nheko_nl.ts +++ b/resources/langs/nheko_nl.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Bellen…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Verbinden…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>Aliassen voor %1</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation>Instellingen voor toegestane kamers</translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 en %n ander</numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation>X11</translation> </message> @@ -232,12 +238,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Gebruiker uitgenodigd: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation> @@ -248,7 +254,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>Bevestig uitloggen</translation> </message> @@ -263,7 +269,7 @@ <translation>Kon database niet openen, je wordt uitgelogd!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>Aankloppen</translation> </message> @@ -289,12 +295,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Bevestig uitnodiging</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Weet je zeker dat je %1 (%2) wil uitnodigen?</translation> </message> @@ -339,12 +345,12 @@ <translation>Toegelaten gebruiker: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Weet je zeker dat je een privé chat wil beginnen met %1?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Migreren van de cache is mislukt!</translation> </message> @@ -368,7 +374,7 @@ Als je denkt dat dit een fout is, kan je Nheko sluiten om mogelijk je versleutel <translation>Incompatibele cacheversie</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Herstellen van OLM account mislukt. Log a.u.b. opnieuw in.</translation> </message> @@ -386,7 +392,7 @@ Als je denkt dat dit een fout is, kan je Nheko sluiten om mogelijk je versleutel </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Probeer a.u.b. opnieuw in te loggen: %1</translation> </message> @@ -740,7 +746,7 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Uitvouwen</translation> </message> @@ -750,7 +756,7 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> <translation>Invouwen</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation>Laat geen meldingteller zien voor deze groep of markering.</translation> </message> @@ -836,7 +842,7 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation>Bevestig groep binnentreden</translation> </message> @@ -877,7 +883,7 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation>Maak een privéchat</translation> </message> @@ -973,7 +979,7 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation>Ontsleutel geheimen</translation> </message> @@ -1001,7 +1007,7 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Verificatiecode</translation> </message> @@ -1052,7 +1058,7 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Er is geen sleutel om dit bericht te ontsleutelen. We hebben de sleutel aangevraagd, maar je kan het opnieuw proberen als je ongeduldig bent.</translation> </message> @@ -1087,7 +1093,7 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> <translation>Onbekende ontsleutelingsfout</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Vraag sleutel aan</translation> </message> @@ -1095,12 +1101,12 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation>%1 heeft eind-tot-eind versleuteling geactiveerd</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1244,6 +1250,34 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished">Open de webpagina, doorloop de stappen, en bevestig nadat je ze hebt voltooid.</translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">Open fallback in browser</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Annuleren</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Bevestigen</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1317,6 +1351,24 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1496,9 +1548,9 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@jan:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation type="unfinished"></translation> </message> <message> <location line="+42"/> @@ -1537,7 +1589,7 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>Kamer verlaten</translation> </message> @@ -1554,8 +1606,8 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Je hebt een ongeldige Matrix ID ingevuld. Correct voorbeeld: @jan:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="-157"/> @@ -1634,19 +1686,16 @@ Je kan optioneel hier een reden invoeren dat je aanklopt:</translation> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>bijv. @jan:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> - <translation>Je inlognaam. Een mxid begint met een @ gevolgd door de gebruikersid. Na de gebruikersid moet je je servernaam toevoegen na een :. -Je kan ook je thuisserver adres invullen als je server geen .well-known ondersteund. -Voorbeeld: @gebruiker:mijn.server -Als Nheko je thuisserver niet kan vinden, zal je worden gevraagd het adres op te geven.</translation> + <translation type="unfinished"></translation> </message> <message> <location line="+27"/> @@ -1675,15 +1724,14 @@ Als Nheko je thuisserver niet kan vinden, zal je worden gevraagd het adres op te </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>mijnserver.nl:8787</translation> + <source>yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> - <translation>Het adres waarop je thuisserver's API voor gebruikers te bereiken is. -Voorbeeld: https://mijn.server:8787</translation> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+32"/> @@ -1699,7 +1747,7 @@ Voorbeeld: https://mijn.server:8787</translation> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>Uitloggen</translation> </message> @@ -1724,120 +1772,6 @@ Voorbeeld: https://mijn.server:8787</translation> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation>Deze kamer is vervangen wegens de volgende reden: %1</translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation>Ga naar de vervangende kamer</translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation>%1 heeft een bericht verwijderd</translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation>%2 heeft de naam van de kamer veranderd in: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation>%1 heeft de kamernaam verwijderd</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation>%2 heeft het onderwerp veranderd in: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation>%1 heeft het onderwerp verwijderd</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 heeft de kameravatar veranderd</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation>%1 heeft de vastgeprikte berichten aangepast.</translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation>%1 heeft de adressen voor deze kamer aangepast.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation>%1 heeft de moedergroep voor deze kamer bijgewerkt.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 maakte en configureerde de kamer: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 plaatste een spraakoproep.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 plaatste een video oproep.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 plaatste een oproep.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 beantwoordde de oproep.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation>%1 heeft het gesprek afgewezen.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation>%1 heeft het gesprek beantwoord</translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 beëindigde de oproep.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation>%1 is het gesprek aan het opzetten...</translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>Binnenlaten</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1888,7 +1822,7 @@ Voorbeeld: https://mijn.server:8787</translation> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Bewerken</translation> </message> @@ -1923,12 +1857,7 @@ Voorbeeld: https://mijn.server:8787</translation> <translation>Opties</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation>Voer de reden voor verwijdering in of druk op enter voor geen reden:</translation> </message> @@ -1938,24 +1867,24 @@ Voorbeeld: https://mijn.server:8787</translation> <translation>Reden voor verwijdering</translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>&Kopiëren</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>Kopieer &link</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>Re&ageren</translation> </message> @@ -2015,7 +1944,12 @@ Voorbeeld: https://mijn.server:8787</translation> <translation>&Verwijder bericht</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>Op&slaan als</translation> </message> @@ -2038,7 +1972,7 @@ Voorbeeld: https://mijn.server:8787</translation> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Verstuur verificatieverzoek</translation> </message> @@ -2258,7 +2192,7 @@ Voorbeeld: https://mijn.server:8787</translation> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation>Aanpassingen aan rechten doorvoeren</translation> </message> @@ -2315,9 +2249,27 @@ Voorbeeld: https://mijn.server:8787</translation> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished">Beheerder: %1</translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished">Toezichthouder: %1</translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished">Gebruiker: %1</translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation>Andere evenementen</translation> </message> @@ -2508,7 +2460,7 @@ Voorbeeld: https://mijn.server:8787</translation> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation>Maak een uniek profiel, waardoor je tegelijk meerdere kopieën van Nheko kan draaien en zo op meerdere gebruikers tegelijk ingelogd kan zijn.</translation> </message> @@ -2526,7 +2478,7 @@ Voorbeeld: https://mijn.server:8787</translation> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation>Alias voor '--log-level trace'.</translation> </message> @@ -2551,6 +2503,11 @@ Voorbeeld: https://mijn.server:8787</translation> <translation>type</translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation>Antwoorden</translation> @@ -2688,7 +2645,7 @@ Voorbeeld: https://mijn.server:8787</translation> <translation>De gebruikersnaam mag niet leeg zijn, en mag alleen de volgende tekens bevatten: a-z, 0-9, ., _, =, -, en /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation>Terug</translation> @@ -2732,7 +2689,7 @@ Voorbeeld: https://mijn.server:8787</translation> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Sluiten</translation> </message> @@ -2748,6 +2705,54 @@ Voorbeeld: https://mijn.server:8787</translation> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2755,7 +2760,17 @@ Voorbeeld: https://mijn.server:8787</translation> <translation>Verken openbare kamers</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished">Binnentreden</translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>Zoek naar openbare kamers</translation> </message> @@ -2764,6 +2779,11 @@ Voorbeeld: https://mijn.server:8787</translation> <source>Choose custom homeserver</source> <translation>Kies een aangepaste thuisserver</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Sluiten</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2816,7 +2836,7 @@ Voorbeeld: https://mijn.server:8787</translation> <translation>Gebruikersinstellingen</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>Uitloggen</translation> </message> @@ -2841,7 +2861,27 @@ Voorbeeld: https://mijn.server:8787</translation> <translation>Stel statusbericht in</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>Versleuteling niet ingesteld</translation> @@ -2864,7 +2904,7 @@ Voorbeeld: https://mijn.server:8787</translation> <translation>Sluiten</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>Voer de markering in die je wil gebruiken:</translation> </message> @@ -2880,6 +2920,11 @@ Voorbeeld: https://mijn.server:8787</translation> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation>Kamerinstellingen</translation> </message> @@ -2927,12 +2972,12 @@ Voorbeeld: https://mijn.server:8787</translation> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>Deelnemers in %1</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2971,22 +3016,7 @@ Voorbeeld: https://mijn.server:8787</translation> <translation>Machtsniveau</translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation>Beheerder: %1</translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation>Toezichthouder: %1</translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation>Gebruiker: %1</translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>Deze kamer is niet versleuteld!</translation> </message> @@ -3039,25 +3069,28 @@ Voorbeeld: https://mijn.server:8787</translation> <source>Failed to upload image: %s</source> <translation>Uploaden van afbeelding mislukt: %1</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> - <translation>Kamerinstellingen</translation> + <translation type="unfinished">Kamerinstellingen</translation> </message> <message> <location line="+35"/> <source>Change room avatar.</source> - <translation>Verander kamerafbeelding.</translation> + <translation type="unfinished">Verander kamerafbeelding.</translation> </message> <message> <location line="+93"/> <source>Change name of this room</source> - <translation>Naam van deze kamer veranderen</translation> + <translation type="unfinished">Naam van deze kamer veranderen</translation> </message> <message numerus="yes"> <location line="+22"/> <source>%n member(s)</source> - <translation> + <translation type="unfinished"> <numerusform>%n deelnemer</numerusform> <numerusform>%n deelnemers</numerusform> </translation> @@ -3065,17 +3098,17 @@ Voorbeeld: https://mijn.server:8787</translation> <message> <location line="+8"/> <source>View members of %1</source> - <translation>Bekijk deelnemers aan %1</translation> + <translation type="unfinished">Bekijk deelnemers aan %1</translation> </message> <message> <location line="+24"/> <source>No topic set</source> - <translation>Geen onderwerp</translation> + <translation type="unfinished">Geen onderwerp</translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> - <translation>Verander onderwerp van deze kamer</translation> + <translation type="unfinished">Verander onderwerp van deze kamer</translation> </message> <message> <location line="+31"/> @@ -3085,22 +3118,22 @@ Voorbeeld: https://mijn.server:8787</translation> <message> <location line="+9"/> <source>Notifications</source> - <translation>Meldingen</translation> + <translation type="unfinished">Meldingen</translation> </message> <message> <location line="+6"/> <source>Muted</source> - <translation>Gedempt</translation> + <translation type="unfinished">Gedempt</translation> </message> <message> <location line="+0"/> <source>Mentions only</source> - <translation>Alleen vermeldingen</translation> + <translation type="unfinished">Alleen vermeldingen</translation> </message> <message> <location line="+0"/> <source>All messages</source> - <translation>Alle berichten</translation> + <translation type="unfinished">Alle berichten</translation> </message> <message> <location line="+10"/> @@ -3110,43 +3143,43 @@ Voorbeeld: https://mijn.server:8787</translation> <message> <location line="+9"/> <source>Anyone can join</source> - <translation>Iedereen kan binnentreden</translation> + <translation type="unfinished">Iedereen kan binnentreden</translation> </message> <message> <location line="+14"/> <source>Allow knocking</source> - <translation>Sta aankloppen toe</translation> + <translation type="unfinished">Sta aankloppen toe</translation> </message> <message> <location line="+19"/> <source>Allow joining via other rooms</source> - <translation>Sta binnentreden via andere kamers toe</translation> + <translation type="unfinished">Sta binnentreden via andere kamers toe</translation> </message> <message> <location line="+19"/> <source>Rooms to join via</source> - <translation>Kamers die hier binnentreden toestaan</translation> + <translation type="unfinished">Kamers die hier binnentreden toestaan</translation> </message> <message> <location line="+12"/> <location line="+242"/> <source>Change</source> - <translation>Bewerken</translation> + <translation type="unfinished">Bewerken</translation> </message> <message> <location line="-241"/> <source>Change the list of rooms users can join this room via. Usually this is the official community of this room.</source> - <translation>Verander de lijst van kamers waarlangs gebruikers kunnen binnentreden. Meestal is dit de officiële groep van deze kamer.</translation> + <translation type="unfinished">Verander de lijst van kamers waarlangs gebruikers kunnen binnentreden. Meestal is dit de officiële groep van deze kamer.</translation> </message> <message> <location line="+6"/> <source>Allow guests to join</source> - <translation>Sta gasten toe om binnen te treden</translation> + <translation type="unfinished">Sta gasten toe om binnen te treden</translation> </message> <message> <location line="+17"/> <source>Apply access rules</source> - <translation>Toegangsregels doorvoeren</translation> + <translation type="unfinished">Toegangsregels doorvoeren</translation> </message> <message> <location line="+7"/> @@ -3219,12 +3252,12 @@ Voorbeeld: https://mijn.server:8787</translation> <location line="+60"/> <location line="+12"/> <source>Configure</source> - <translation>Instellen</translation> + <translation type="unfinished">Instellen</translation> </message> <message> <location line="-89"/> <source>Select events to hide in this room</source> - <translation>Selecteer gebeurtenissen die verborgen dienen te worden in deze kamer</translation> + <translation type="unfinished">Selecteer gebeurtenissen die verborgen dienen te worden in deze kamer</translation> </message> <message> <location line="+6"/> @@ -3244,79 +3277,72 @@ Voorbeeld: https://mijn.server:8787</translation> <message> <location line="+9"/> <source>Encryption</source> - <translation>Versleuteling</translation> + <translation type="unfinished">Versleuteling</translation> </message> <message> <location line="+22"/> <source>End-to-End Encryption</source> - <translation>Eind-tot-eind versleuteling</translation> - </message> - <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation>Versleuteling is momenteel experimenteel en dingen gaan misschien stuk. <br> -Wees ervan bewust dat het achteraf niet meer uitgeschakeld kan worden.</translation> + <translation type="unfinished">Eind-tot-eind versleuteling</translation> </message> <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> - <translation>Toestemmingen</translation> + <translation type="unfinished">Toestemmingen</translation> </message> <message> <location line="+6"/> <source>View and change the permissions in this room</source> - <translation>Bekijken en aanpassen van toestemmingen in deze kamer</translation> + <translation type="unfinished">Bekijken en aanpassen van toestemmingen in deze kamer</translation> </message> <message> <location line="+6"/> <source>Aliases</source> - <translation>Aliassen</translation> + <translation type="unfinished">Aliassen</translation> </message> <message> <location line="+6"/> <source>View and change the addresses/aliases of this room</source> - <translation>Bekijken en aanpassen van adressen/aliassen van deze kamer</translation> + <translation type="unfinished">Bekijken en aanpassen van adressen/aliassen van deze kamer</translation> </message> <message> <location line="+6"/> <source>Sticker & Emote Settings</source> - <translation>Sticker & Emoji instellingen</translation> + <translation type="unfinished">Sticker & Emoji instellingen</translation> </message> <message> <location line="+6"/> <source>Change what packs are enabled, remove packs, or create new ones</source> - <translation>Verander welke pakketten ingeschakeld zijn, verwijder ze, of maak nieuwe</translation> + <translation type="unfinished">Verander welke pakketten ingeschakeld zijn, verwijder ze, of maak nieuwe</translation> </message> <message> <location line="+6"/> <source>INFO</source> - <translation>INFO</translation> + <translation type="unfinished">INFO</translation> </message> <message> <location line="+9"/> <source>Internal ID</source> - <translation>Interne ID</translation> + <translation type="unfinished">Interne ID</translation> </message> <message> <location line="+16"/> <source>Copied to clipboard</source> - <translation>Gekopieerd naar klembord</translation> + <translation type="unfinished">Gekopieerd naar klembord</translation> </message> <message> <location line="+19"/> <source>Room Version</source> - <translation>Kamerversie</translation> + <translation type="unfinished">Kamerversie</translation> </message> <message> <location line="+19"/> <source>show less</source> - <translation>minder tonen</translation> + <translation type="unfinished">minder tonen</translation> </message> <message> <location line="+0"/> <source>show more</source> - <translation>meer tonen</translation> + <translation type="unfinished">meer tonen</translation> </message> </context> <context> @@ -3345,7 +3371,7 @@ Wees ervan bewust dat het achteraf niet meer uitgeschakeld kan worden.</translat <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>Voer a.u.b. je wachtwoord in om door te gaan:</translation> </message> @@ -3437,7 +3463,7 @@ Wees ervan bewust dat het achteraf niet meer uitgeschakeld kan worden.</translat <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>Verbinden met geheimopslag mislukt</translation> </message> @@ -3527,7 +3553,7 @@ Als je "verifieer" kiest, moet je het andere apparaat bij de hand hebb <translation>Versleuteling instellen mislukt: %1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>Identiteitssleutel is veranderd. Dit breekt eind-tot-eind versleuteling, dus je wordt uitgelogd.</translation> </message> @@ -3635,7 +3661,7 @@ Als je "verifieer" kiest, moet je het andere apparaat bij de hand hebb <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Succesvolle verificatie</translation> </message> @@ -3651,15 +3677,95 @@ Als je "verifieer" kiest, moet je het andere apparaat bij de hand hebb </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished">Deel van een gespreksdraad</translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 plaatste een spraakoproep.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished">%1 plaatste een video oproep.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished">%1 plaatste een oproep.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 beantwoordde de oproep.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished">%1 heeft het gesprek afgewezen.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 beëindigde de oproep.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished">%1 is het gesprek aan het opzetten...</translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished">Binnenlaten</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished">Deze kamer is vervangen wegens de volgende reden: %1</translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished">Ga naar de vervangende kamer</translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished">Bewerkt</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished">Deel van een gespreksdraad</translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Bericht intrekken mislukt: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Kon evenement niet versleutelen, versturen geannuleerd!</translation> @@ -3709,7 +3815,7 @@ Als je "verifieer" kiest, moet je het andere apparaat bij de hand hebb <translation>%1 stond toe dat deelnemers aan de volgende kamers automatisch mogen deelnemen: %2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 maakte de kamer openbaar voor gasten.</translation> </message> @@ -3719,7 +3825,7 @@ Als je "verifieer" kiest, moet je het andere apparaat bij de hand hebb <translation>%1 maakte de kamer gesloten voor gasten.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 maakte de kamergeschiedenis openbaar. Niet-deelnemers kunnen nu de kamer inzien.</translation> </message> @@ -3739,7 +3845,7 @@ Als je "verifieer" kiest, moet je het andere apparaat bij de hand hebb <translation>%1 maakte de kamergeschiedenis zichtbaar vanaf moment van deelname.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 heeft de rechten van de kamer aangepast.</translation> @@ -3882,7 +3988,7 @@ Als je "verifieer" kiest, moet je het andere apparaat bij de hand hebb <translation>%1 veranderde het machtsniveau van gebeurtenistype "%2" van %3 naar %4.</translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation>(leeg)</translation> </message> @@ -3954,7 +4060,7 @@ Reason: %4</source> Reden: %4</translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation>%2 heeft de uitnodiging voor %1 ingetrokken.</translation> </message> @@ -4014,22 +4120,82 @@ Reden: %4</translation> <translation>%1 heeft het aankloppen ingetrokken.</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished">%2 heeft de naam van de kamer veranderd in: %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished">%2 heeft het onderwerp veranderd in: %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished">%1 heeft de vastgeprikte berichten aangepast.</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished">%1 heeft de adressen voor deze kamer aangepast.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished">%1 heeft de moedergroep voor deze kamer bijgewerkt.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 maakte en configureerde de kamer: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>Je neemt nu deel aan deze kamer.</translation> </message> <message> - <location line="+998"/> + <location line="+1019"/> <source>%1 made this room require an invitation to join.</source> <translation>%1 heeft deze kamer zodanig ingesteld dat een uitnodiging vereist is om te mogen betreden.</translation> </message> <message> - <location line="+654"/> + <location line="+618"/> <source>%1 invited %2.</source> <translation>%1 heeft %2 uitgenodigd.</translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 is van avatar veranderd en heet nu %2.</translation> </message> @@ -4056,23 +4222,17 @@ Reden: %4</translation> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation>Deel van een gespreksdraad</translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> - <translation>Bewerkt</translation> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Geen kamer open</translation> </message> @@ -4178,7 +4338,7 @@ Reden: %4</translation> <translation>Terug naar kamerlijst</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation>Toon of verberg vastgeprikte berichten</translation> </message> @@ -4233,7 +4393,7 @@ Reden: %4</translation> <translation>Instellingen</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation>Vastprikken ongedaan maken</translation> </message> @@ -4259,24 +4419,24 @@ Reden: %4</translation> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>Geen beschikbare registratiestromen!</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>Registratie afgebroken</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>Voer a.u.b een geldig registratieteken in.</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>Ongeldig teken</translation> </message> @@ -4284,7 +4444,7 @@ Reden: %4</translation> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation> <numerusform>Bestand versturen</numerusform> @@ -4295,7 +4455,7 @@ Reden: %4</translation> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>Meld apparaat %1 af</translation> </message> @@ -4305,7 +4465,12 @@ Reden: %4</translation> <translation>Je hebt dit apparaat afgemeld.</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Kies een avatar</translation> </message> @@ -4325,7 +4490,7 @@ Reden: %4</translation> <translation>Fout bij lezen bestand: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Globaal gebruikersprofiel</translation> </message> @@ -4376,12 +4541,12 @@ Reden: %4</translation> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Verifiëren</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>Begin een privéchat.</translation> </message> @@ -4397,11 +4562,21 @@ Reden: %4</translation> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>Ververs apparaatlijst.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Apparaten</translation> </message> @@ -4434,8 +4609,8 @@ Reden: %4</translation> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>Standaard</translation> </message> @@ -4534,6 +4709,16 @@ Reden: %4</translation> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished">Verborgen gebeurtenissen</translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation>Bureaubladnotificaties</translation> </message> @@ -4724,6 +4909,11 @@ Reden: %4</translation> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation>NOTIFICATIES</translation> </message> @@ -4788,7 +4978,7 @@ Reden: %4</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation>Standaard</translation> </message> @@ -4872,6 +5062,11 @@ Dit schakelt ook het versturen van je eigen typnotificaties naar anderen in of u </message> <message> <location line="+8"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation>Verstuur meldingen over ontvangen berichten als het scherm niet momenteel de focus heeft.</translation> </message> @@ -4908,29 +5103,29 @@ UIT - vierkant, AAN - cirkel.</translation> <translation>Automatisch antwoorden op sleutelverzoeken van andere gebruikers als ze bevestigd zijn, zelfs als dat apparaat anders geen toegang tot die sleutel zou hebben gehad.</translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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>De sleutel om je eigen apparaten te verifiëren. Indien gecached zal het verifiëren van één van je apparaten die ook als geverifieerd markeren voor je anderen apparaten en gebruikers die jou geverifieerd hebben.</translation> </message> <message> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation>Activeer een melding als een bericht binnen komt. Meestal zorgt dit dat het icoon in de taakbalk op een manier animeert of iets dergelijks.</translation> </message> <message> - <location line="-350"/> + <location line="-366"/> <source>Communities sidebar</source> <translation>Zijbalk voor groepen</translation> </message> <message> - <location line="+42"/> + <location line="+46"/> <source>Show message counts for communities and tags</source> <translation>Laat totaalaantal berichten zien voor groepen en markeringen</translation> </message> <message> - <location line="+241"/> + <location line="+251"/> <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source> <translation>Stel de maximale breedte in van berichten in de tijdlijn (in pixels). Dit kan helpen met leesbaarheid op een breed scherm als Nheko op volledig scherm staat ingesteld</translation> </message> @@ -4963,7 +5158,7 @@ De status wordt weergegeven naast de tijdsindicatie. Let op: als je thuisserver dit niet ondersteund, zullen je kamers nooit als gelezen worden gemarkeerd!</translation> </message> <message> - <location line="+13"/> + <location line="+15"/> <source>Display an identicon instead of a letter when no avatar is set.</source> <translation>Laat een identicon zien in plaats van een letter wanneer er geen avatar is ingesteld.</translation> </message> @@ -5021,7 +5216,7 @@ worden geblurt.</translation> <translation>Download van en upload naar de online reservesleutel.</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation>De sleutel om online reservesleutels mee te ontsleutelen. Indien gecached kan je online reservesleutel activeren om je sleutels veilig versleuteld op de server op te slaan.</translation> </message> @@ -5055,7 +5250,22 @@ Deze instelling wordt toegepast na opnieuw starten van de applicatie.</translati <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation>Selecteer een bestand</translation> </message> @@ -5110,7 +5320,7 @@ Deze instelling wordt toegepast na opnieuw starten van de applicatie.</translati <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>IN CACHE</translation> </message> @@ -5140,7 +5350,17 @@ Deze instelling wordt toegepast na opnieuw starten van de applicatie.</translati <translation>OPVRAGEN</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation>Terug</translation> </message> @@ -5223,29 +5443,6 @@ Deze instelling wordt toegepast na opnieuw starten van de applicatie.</translati </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Open fallback in browser</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Annuleren</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Bevestigen</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation>Open de webpagina, doorloop de stappen, en bevestig nadat je ze hebt voltooid.</translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_pl.ts b/resources/langs/nheko_pl.ts index d4c46c00..b8dcdbc0 100644 --- a/resources/langs/nheko_pl.ts +++ b/resources/langs/nheko_pl.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Dzwonię…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Łączę…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>Aliasy do %1</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 i jeszcze %n inny</numerusform> @@ -209,7 +215,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -233,12 +239,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Zaproszono użytkownika: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -248,7 +254,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>Potwierdź wylogowanie</translation> </message> @@ -275,7 +281,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation>Nie udało się otworzyć bazy danych, następuje wylogowanie!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>Zapukaj do pokoju</translation> </message> @@ -307,12 +313,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Potwierdź zaproszenie</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Czy na pewno chcesz zaprosić %1 (%2)?</translation> </message> @@ -357,12 +363,12 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Odblokowano użytkownika: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Czy na pewno chcesz rozpocząć prywatny czat z %1?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Nie udało się przenieść pamięci podręcznej!</translation> </message> @@ -372,7 +378,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Niekompatybilna wersja pamięci podręcznej</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Nie udało się przywrócić konta OLM. Spróbuj zalogować się ponownie.</translation> </message> @@ -390,7 +396,7 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Spróbuj zalogować się ponownie: %1</translation> </message> @@ -737,7 +743,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Rozwiń</translation> </message> @@ -747,7 +753,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Zwiń</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation>Nie pokazuj liczników powiadomień dla tej społeczności lub tagu.</translation> </message> @@ -833,7 +839,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation>Potwierdź dołączenie do społeczności</translation> </message> @@ -875,7 +881,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation>Utwórz czat bezpośredni</translation> </message> @@ -971,7 +977,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation>Odszyfruj sekrety</translation> </message> @@ -999,7 +1005,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Kod weryfikacyjny</translation> </message> @@ -1050,7 +1056,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Brakuje klucza do odblokowania tej wiadomości. Poprosiliśmy o klucz automatycznie, ale możesz poprosić ręcznie jeszcze raz, jeśli jesteś niecierpliwy(a).</translation> </message> @@ -1085,7 +1091,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Nieznany błąd odszyfrowywania</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Poproś o klucz</translation> </message> @@ -1093,12 +1099,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1242,6 +1248,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">W razie konieczności otwórz w przeglądarce</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Anuluj</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Potwierdź</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1315,6 +1349,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1494,9 +1546,9 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@ania:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation type="unfinished"></translation> </message> <message> <location line="+42"/> @@ -1535,7 +1587,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>Opuść pokój</translation> </message> @@ -1552,8 +1604,8 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Wprowadzono nieprawidłowe Matrix ID. Przykład prawidłowego ID: @ania:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="-157"/> @@ -1632,14 +1684,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>np. @joe:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1670,13 +1722,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>serwer.mój:8787</translation> + <source>yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1693,7 +1745,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>Wyloguj się</translation> </message> @@ -1718,120 +1770,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation>%1 usunął/ęła wiadomość</translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation>%2 zmienił(a) nazwę pokoju na: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation>%1 usunął/ęła nazwę pokoju</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation>%2 zmienił(a) temat pokoju na: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation>%1 usunął/ęła temat pokoju</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 zmienił(a) awatar pokoju</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation>%1 zmienił(a) przypięte wiadomości.</translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation>%1 zmienił(a) adresy tego pokoju.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 utworzył(a) i skonfigurował(a) pokój: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 rozpoczął(-ęła) połączenie głosowe.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 rozpoczął(-ęła) połączenie wideo.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 rozpoczął(-ęła) połączenie.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 odebrał(a) połączenie.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 zakończył(a) połączenie.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation>%1 negocjuje połączenie...</translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>Wpuść</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1882,7 +1820,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Edytuj</translation> </message> @@ -1917,12 +1855,7 @@ Example: https://server.my:8787</source> <translation>Opcje</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation>Podaj powód usunięcia lub wciśnij enter by nie podawać powodu:</translation> </message> @@ -1932,24 +1865,24 @@ Example: https://server.my:8787</source> <translation>Powód usunięcia</translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>&Kopiuj</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>Kopiuj &adres odnośnika</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>Zar&eaguj</translation> </message> @@ -2009,7 +1942,12 @@ Example: https://server.my:8787</source> <translation>&Usuń wiadomość</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>&Zapisz jako</translation> </message> @@ -2032,7 +1970,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Wyślij prośbę o weryfikację</translation> </message> @@ -2253,7 +2191,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation>Zastosuj zmiany uprawnień</translation> </message> @@ -2310,9 +2248,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished">Administrator: %1</translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished">Moderator: %1</translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished">Użytkownik: %1</translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation>Inne zdarzenia</translation> </message> @@ -2503,7 +2459,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2536,7 +2492,7 @@ Example: https://server.my:8787</source> <translation>Napisz wiadomość…</translation> </message> <message> - <location filename="../../src/main.cpp" line="-26"/> + <location filename="../../src/main.cpp" line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2560,6 +2516,11 @@ Example: https://server.my:8787</source> <source>type</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ReCaptchaDialog</name> @@ -2683,7 +2644,7 @@ Example: https://server.my:8787</source> <translation>Nazwa użytkownika nie może być pusta i może zawierać wyłącznie znaki a-z, 0-9, ., _, =, -, i /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation>Wróć</translation> @@ -2727,7 +2688,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Zamknij</translation> </message> @@ -2743,6 +2704,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2750,7 +2759,17 @@ Example: https://server.my:8787</source> <translation>Przeglądaj publiczne pokoje</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished">Dołącz</translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>Szukaj publicznych pokojów</translation> </message> @@ -2759,6 +2778,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation>Wybierz własny serwer domowy</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Zamknij</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2811,7 +2835,7 @@ Example: https://server.my:8787</source> <translation>Ustawienia użytkownika</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>Wyloguj</translation> </message> @@ -2836,7 +2860,27 @@ Example: https://server.my:8787</source> <translation>Ustaw wiadomość statusową</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>Szyfrowanie nie zostało skonfigurowane</translation> @@ -2859,7 +2903,7 @@ Example: https://server.my:8787</source> <translation>Zamknij</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>Wprowadź tag, którego chcesz użyć:</translation> </message> @@ -2875,6 +2919,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation>Ustawienia pokoju</translation> </message> @@ -2922,12 +2971,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>Obecni w %1</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2967,22 +3016,7 @@ Example: https://server.my:8787</source> <translation>Poziom mocy</translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation>Administrator: %1</translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation>Moderator: %1</translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation>Użytkownik: %1</translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>Ten pokój nie jest szyfrowany!</translation> </message> @@ -3035,44 +3069,47 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation>Nie udało się wysłać obrazu: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> - <translation>Ustawienia pokoju</translation> + <translation type="unfinished">Ustawienia pokoju</translation> </message> <message> <location line="+35"/> <source>Change room avatar.</source> - <translation>Zmień awatar pokoju.</translation> + <translation type="unfinished">Zmień awatar pokoju.</translation> </message> <message> <location line="+93"/> <source>Change name of this room</source> - <translation>Zmień nazwę tego pokoju</translation> + <translation type="unfinished">Zmień nazwę tego pokoju</translation> </message> <message numerus="yes"> <location line="+22"/> <source>%n member(s)</source> - <translation> - <numerusform>%n członek</numerusform> - <numerusform>%n członkowie</numerusform> - <numerusform>%n członków</numerusform> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> </translation> </message> <message> <location line="+8"/> <source>View members of %1</source> - <translation>Pokaż członków pokoju %1</translation> + <translation type="unfinished"></translation> </message> <message> <location line="+24"/> <source>No topic set</source> - <translation>Brak ustawionego tematu</translation> + <translation type="unfinished">Brak ustawionego tematu</translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> - <translation>Zmień temat tego pokoju</translation> + <translation type="unfinished">Zmień temat tego pokoju</translation> </message> <message> <location line="+31"/> @@ -3082,22 +3119,22 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Notifications</source> - <translation>Powiadomienia</translation> + <translation type="unfinished">Powiadomienia</translation> </message> <message> <location line="+6"/> <source>Muted</source> - <translation>Wyciszony</translation> + <translation type="unfinished">Wyciszony</translation> </message> <message> <location line="+0"/> <source>Mentions only</source> - <translation>Tylko wzmianki</translation> + <translation type="unfinished">Tylko wzmianki</translation> </message> <message> <location line="+0"/> <source>All messages</source> - <translation>Wszystkie wiadomości</translation> + <translation type="unfinished">Wszystkie wiadomości</translation> </message> <message> <location line="+10"/> @@ -3107,12 +3144,12 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Anyone can join</source> - <translation>Każdy może dołączyć</translation> + <translation type="unfinished">Każdy może dołączyć</translation> </message> <message> <location line="+14"/> <source>Allow knocking</source> - <translation>Pozwól na pukanie</translation> + <translation type="unfinished">Pozwól na pukanie</translation> </message> <message> <location line="+19"/> @@ -3128,7 +3165,7 @@ Example: https://server.my:8787</source> <location line="+12"/> <location line="+242"/> <source>Change</source> - <translation>Zmień</translation> + <translation type="unfinished">Zmień</translation> </message> <message> <location line="-241"/> @@ -3143,7 +3180,7 @@ Example: https://server.my:8787</source> <message> <location line="+17"/> <source>Apply access rules</source> - <translation>Zastosuj reguły dostępu</translation> + <translation type="unfinished">Zastosuj reguły dostępu</translation> </message> <message> <location line="+7"/> @@ -3216,12 +3253,12 @@ Example: https://server.my:8787</source> <location line="+60"/> <location line="+12"/> <source>Configure</source> - <translation>Konfiguruj</translation> + <translation type="unfinished">Konfiguruj</translation> </message> <message> <location line="-89"/> <source>Select events to hide in this room</source> - <translation>Wybierz zdarzenia do ukrycia w tym pokoju</translation> + <translation type="unfinished">Wybierz zdarzenia do ukrycia w tym pokoju</translation> </message> <message> <location line="+6"/> @@ -3241,44 +3278,37 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Encryption</source> - <translation>Szyfrowanie</translation> + <translation type="unfinished">Szyfrowanie</translation> </message> <message> <location line="+22"/> <source>End-to-End Encryption</source> - <translation>Szyfrowanie end-to-end</translation> + <translation type="unfinished">Szyfrowanie end-to-end</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation>Szyfrowanie jest obecnie eksperymentalne, niektóre funkcjonalności mogą nagle przestać działać. <br> -Zwróć uwagę, iż nie będzie ono mogło zostać wyłączone.</translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> - <translation>Uprawnienia</translation> + <translation type="unfinished">Uprawnienia</translation> </message> <message> <location line="+6"/> <source>View and change the permissions in this room</source> - <translation>Wyświetl i edytuj uprawnienia tego pokoju</translation> + <translation type="unfinished">Wyświetl i edytuj uprawnienia tego pokoju</translation> </message> <message> <location line="+6"/> <source>Aliases</source> - <translation>Aliasy</translation> + <translation type="unfinished">Aliasy</translation> </message> <message> <location line="+6"/> <source>View and change the addresses/aliases of this room</source> - <translation>Wyświetl i edytuj adresy/aliasy tego pokoju</translation> + <translation type="unfinished">Wyświetl i edytuj adresy/aliasy tego pokoju</translation> </message> <message> <location line="+6"/> <source>Sticker & Emote Settings</source> - <translation>Ustawienia naklejek i emotek</translation> + <translation type="unfinished">Ustawienia naklejek i emotek</translation> </message> <message> <location line="+6"/> @@ -3288,32 +3318,32 @@ Zwróć uwagę, iż nie będzie ono mogło zostać wyłączone.</translation> <message> <location line="+6"/> <source>INFO</source> - <translation>INFO</translation> + <translation type="unfinished">INFO</translation> </message> <message> <location line="+9"/> <source>Internal ID</source> - <translation>Wewnętrzne ID</translation> + <translation type="unfinished">Wewnętrzne ID</translation> </message> <message> <location line="+16"/> <source>Copied to clipboard</source> - <translation>Skopiowano do schowka</translation> + <translation type="unfinished">Skopiowano do schowka</translation> </message> <message> <location line="+19"/> <source>Room Version</source> - <translation>Wersja Pokoju</translation> + <translation type="unfinished">Wersja Pokoju</translation> </message> <message> <location line="+19"/> <source>show less</source> - <translation>pokaż mniej</translation> + <translation type="unfinished">pokaż mniej</translation> </message> <message> <location line="+0"/> <source>show more</source> - <translation>pokaż więcej</translation> + <translation type="unfinished">pokaż więcej</translation> </message> </context> <context> @@ -3342,7 +3372,7 @@ Zwróć uwagę, iż nie będzie ono mogło zostać wyłączone.</translation> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>Wprowadź swoje hasło do konta, aby kontynuować:</translation> </message> @@ -3434,7 +3464,7 @@ Zwróć uwagę, iż nie będzie ono mogło zostać wyłączone.</translation> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>Błąd połączenia do menadżera sekretów</translation> </message> @@ -3524,7 +3554,7 @@ Jeśli zdecydujesz się na weryfikację, będziesz potrzebować innego zaufanego <translation>Konfiguracja szyfrowania zakończona niepowodzeniem: %1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>Klucz identyfikacyjny został zmieniony. Uniemożliwia to dalsze korzystanie z szyfrowania end-to-end, w związku z czym nastąpi wylogowanie.</translation> </message> @@ -3632,7 +3662,7 @@ Jeśli zdecydujesz się na weryfikację, będziesz potrzebować innego zaufanego <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Weryfikacja udana</translation> </message> @@ -3648,15 +3678,95 @@ Jeśli zdecydujesz się na weryfikację, będziesz potrzebować innego zaufanego </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished">Część wątku</translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 rozpoczął(-ęła) połączenie głosowe.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished">%1 rozpoczął(-ęła) połączenie wideo.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished">%1 rozpoczął(-ęła) połączenie.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 odebrał(a) połączenie.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 zakończył(a) połączenie.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished">%1 negocjuje połączenie...</translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished">Wpuść</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished">Edytowane</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished">Część wątku</translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Cenzurowanie wiadomości nie powiodło się: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Szyfrowanie event-u nie powiodło się, wysyłanie anulowane!</translation> @@ -3712,7 +3822,7 @@ Jeśli zdecydujesz się na weryfikację, będziesz potrzebować innego zaufanego <translation>%1 zezwolił(a) członkom następujących pokojów na automatyczne dołączenie do tego pokoju: %2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 pozwoliła na dostęp gościom do tego pokoju.</translation> </message> @@ -3722,7 +3832,7 @@ Jeśli zdecydujesz się na weryfikację, będziesz potrzebować innego zaufanego <translation>%1 zabronił(a) gościom dostępu do tego pokoju.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 zezwoliła każdemu na dostęp do historii tego pokoju. Eventy mogą teraz zostać przeczytane przez osoby nie będące członkami tego pokoju.</translation> </message> @@ -3742,7 +3852,7 @@ Jeśli zdecydujesz się na weryfikację, będziesz potrzebować innego zaufanego <translation>%1 umożliwił dostęp do historii tego pokoju członkom od momentu kiedy dołączyli do pokoju.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 zmienił(a) uprawnienia pokoju.</translation> @@ -3889,7 +3999,7 @@ Jeśli zdecydujesz się na weryfikację, będziesz potrzebować innego zaufanego <translation>%1 zmienił(a) poziom mocy wymagany do wysyłania wydarzeń typu "%2" z %3 na %4.</translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation>(puste)</translation> </message> @@ -3961,7 +4071,7 @@ Reason: %4</source> Powód: %4</translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation>%2 anulował(a) zaproszenie do %1.</translation> </message> @@ -4021,17 +4131,77 @@ Powód: %4</translation> <translation>Użytkownik %1 ocenzurował własne pukanie.</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished">%2 zmienił(a) nazwę pokoju na: %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished">%2 zmienił(a) temat pokoju na: %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished">%1 zmienił(a) przypięte wiadomości.</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished">%1 zmienił(a) adresy tego pokoju.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 utworzył(a) i skonfigurował(a) pokój: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>Dołączyłeś(-aś) do tego pokoju.</translation> </message> <message> - <location line="+1652"/> + <location line="+1637"/> <source>%1 invited %2.</source> <translation>%1 zaprosił(a) %2.</translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 zmienił(a) swój awatar i ustawił(a) wyświetlaną nazwę na %2.</translation> </message> @@ -4058,23 +4228,17 @@ Powód: %4</translation> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation>Część wątku</translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> - <translation>Edytowane</translation> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Brak otwartych pokojów</translation> </message> @@ -4181,7 +4345,7 @@ Powód: %4</translation> <translation>Wróć do listy pokoi</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation>Pokaż lub ukryj przypięte wiadomości</translation> </message> @@ -4236,7 +4400,7 @@ Powód: %4</translation> <translation>Ustawienia</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation>Odepnij</translation> </message> @@ -4262,24 +4426,24 @@ Powód: %4</translation> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>Nie są dostępne żadne sposoby rejestracji!</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>Rejestracja przerwana</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>Proszę wprowadzić prawidłowy token rejestracji.</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>Nieprawidłowy token</translation> </message> @@ -4287,7 +4451,7 @@ Powód: %4</translation> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation> <numerusform>Wyślij plik</numerusform> @@ -4299,7 +4463,7 @@ Powód: %4</translation> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>Wyloguj urządzenie %1</translation> </message> @@ -4309,7 +4473,12 @@ Powód: %4</translation> <translation>Wylogowano to urządzenie.</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Wybierz awatar</translation> </message> @@ -4329,7 +4498,7 @@ Powód: %4</translation> <translation>Błąd odczytu pliku: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Globalny profil użytkownika</translation> </message> @@ -4380,12 +4549,12 @@ Powód: %4</translation> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Zweryfikuj</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>Rozpocznij prywatny czat.</translation> </message> @@ -4401,11 +4570,21 @@ Powód: %4</translation> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>Odśwież listę urządzeń.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Urządzenia</translation> </message> @@ -4438,8 +4617,8 @@ Powód: %4</translation> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>Domyślne</translation> </message> @@ -4538,6 +4717,16 @@ Powód: %4</translation> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished">Ukryte zdarzenia</translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation>Powiadomienia na pulpicie</translation> </message> @@ -4728,6 +4917,11 @@ Powód: %4</translation> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation>POWIADOMIENIA</translation> </message> @@ -4792,7 +4986,7 @@ Powód: %4</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation>Domyślne</translation> </message> @@ -4889,6 +5083,11 @@ If this is on, rooms that come first alphabetically will be sorted earlier than </message> <message> <location line="+8"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation>Powiadamiaj o odebranych wiadomościach gdy okno klienta nie jest na pierwszym planie.</translation> </message> @@ -4925,29 +5124,29 @@ Wyłączone - kwadratowe, włączone - okrągłe.</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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>Klucz używany do weryfikacji twoich własnych urządzeń. Jeśli jest on w pamięci podręcznej, zweryfikowanie jednego z twoich urządzeń oznaczy je w ten sam sposób dla wszystkich pozostałych twoich urządzeń oraz dla użytkowników którzy uprzednio ciebie zweryfikowali.</translation> </message> <message> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation>Pokazuj alert po otrzymaniu wiadomości. To zwykle sprawia, że ikona aplikacji na pasku zadań jest animowana.</translation> </message> <message> - <location line="-350"/> + <location line="-366"/> <source>Communities sidebar</source> <translation>Pasek społeczności</translation> </message> <message> - <location line="+42"/> + <location line="+46"/> <source>Show message counts for communities and tags</source> <translation>Pokaż liczniki wiadomości dla społeczności i tagów</translation> </message> <message> - <location line="+241"/> + <location line="+251"/> <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source> <translation>Ustaw maksymalną szerokość wiadomości na osi czasu (w pikselach). Może to poprawić czytelność Nheko zmaksymalizowanego na szerokim ekranie</translation> </message> @@ -4966,7 +5165,7 @@ Status jest wyświetlany obok czasu wysłania wiadomości. Uwaga: Jeśli twój serwer domowy nie obsługuje tej funkcji, twoje pokoje nigdy nie zostaną oznaczone jako przeczytane!</translation> </message> <message> - <location line="+13"/> + <location line="+15"/> <source>Display an identicon instead of a letter when no avatar is set.</source> <translation>Wyświetla identikon zamiast litery w miejscu awatara, gdy użytkownik nie ustawił własnego.</translation> </message> @@ -5023,7 +5222,7 @@ be blurred.</source> <translation>Pobierz i wyślij klucze szyfrowania wiadomości do szyfrowanej kopii zapasowej kluczy online.</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation>Klucz służący do odszyfrowania kopii zapasowej kluczy online. Jeśli jest w pamięci podręcznej, możesz włączyć kopię zapasową kluczy online by zapisać je w zaszyfrowanej formie na serwerze.</translation> </message> @@ -5057,7 +5256,22 @@ To ustawienie wejdzie w życie po restarcie aplikacji.</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation>Wybierz plik</translation> </message> @@ -5112,7 +5326,7 @@ To ustawienie wejdzie w życie po restarcie aplikacji.</translation> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>ZAPISANO W PAMIĘCI PODRĘCZNEJ</translation> </message> @@ -5142,7 +5356,17 @@ To ustawienie wejdzie w życie po restarcie aplikacji.</translation> <translation>POPROŚ O</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation>Wróć</translation> </message> @@ -5225,29 +5449,6 @@ To ustawienie wejdzie w życie po restarcie aplikacji.</translation> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>W razie konieczności otwórz w przeglądarce</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Anuluj</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Potwierdź</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_pt_BR.ts b/resources/langs/nheko_pt_BR.ts index 2cd3e9c1..126f6ec0 100644 --- a/resources/langs/nheko_pt_BR.ts +++ b/resources/langs/nheko_pt_BR.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Ligando...</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Conectando...</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -232,12 +238,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Usuário convidado: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -246,7 +252,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -273,7 +279,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation type="unfinished"></translation> </message> @@ -310,12 +316,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Confirmar convite</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Deseja realmente convidar %1 (%2)?</translation> </message> @@ -380,12 +386,12 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Usuário desbanido: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Você realmente quer iniciar um chat privado com %1?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Migração do cache falhou!</translation> </message> @@ -395,7 +401,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Versão do cache incompatível</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Falha ao restaurar conta OLM. Por favor faça login novamente.</translation> </message> @@ -413,7 +419,7 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Por favor, tente entrar novamente: %1</translation> </message> @@ -735,7 +741,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -745,7 +751,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -831,7 +837,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -872,7 +878,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -968,7 +974,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+305"/> + <location filename="../../src/ChatPage.cpp" line="+312"/> <source>Decrypt secrets</source> <translation>Descriptografar segredos</translation> </message> @@ -996,7 +1002,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Código de Verificação</translation> </message> @@ -1047,7 +1053,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Não existe uma chave para desbloquear esta mensagem. Nós pedimos pela chave automaticamente, mas você pode tentar pedir novamente se for impaciente.</translation> </message> @@ -1082,7 +1088,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1090,12 +1096,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1239,6 +1245,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Cancelar</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1312,6 +1346,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1491,8 +1543,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1532,7 +1584,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished"></translation> </message> @@ -1551,14 +1603,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> + <source>e.g @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1589,13 +1641,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1613,7 +1665,7 @@ Example: https://server.my:8787</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1690,7 +1742,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1715,120 +1767,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1879,7 +1817,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1914,12 +1852,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1929,24 +1862,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2006,7 +1939,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2029,7 +1967,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2249,7 +2187,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2306,9 +2244,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2499,7 +2455,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2517,7 +2473,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2542,6 +2498,11 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation type="unfinished"></translation> @@ -2624,7 +2585,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2723,7 +2684,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished"></translation> </message> @@ -2739,6 +2700,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2746,7 +2755,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2755,6 +2774,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2807,7 +2831,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished"></translation> </message> @@ -2832,7 +2856,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2855,7 +2899,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2871,6 +2915,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2918,12 +2967,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2962,45 +3011,64 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> + <location line="+92"/> + <source>This room is not encrypted!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>This user is verified.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Moderator: %1</source> + <source>This user isn't verified, but is still using the same master key from the first time you met.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>User: %1</source> + <source>This user has unverified devices!</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>RoomSettings</name> <message> - <location line="+20"/> - <source>This room is not encrypted!</source> + <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> + <source>Failed to enable encryption: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>This user is verified.</source> + <location line="+404"/> + <source>Select an avatar</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user isn't verified, but is still using the same master key from the first time you met.</source> + <location line="+0"/> + <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user has unverified devices!</source> + <location line="+12"/> + <source>The selected file is not an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Error while reading file: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <location line="+19"/> + <source>Failed to upload image: %s</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>RoomSettings</name> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3033,7 +3101,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3212,13 +3280,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3277,37 +3339,6 @@ Example: https://server.my:8787</source> <source>show more</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> - <source>Failed to enable encryption: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+404"/> - <source>Select an avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>All Files (*)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>The selected file is not an image</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Error while reading file: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+32"/> - <location line="+19"/> - <source>Failed to upload image: %s</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>RoomlistModel</name> @@ -3335,7 +3366,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3427,7 +3458,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3515,7 +3546,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3623,7 +3654,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3639,20 +3670,160 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1251"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+711"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished">Você entrou nessa sala.</translation> </message> <message> - <location line="+250"/> + <location line="+265"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3707,7 +3878,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3717,7 +3888,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3737,7 +3908,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3880,7 +4051,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3951,12 +4122,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4043,23 +4214,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation type="unfinished"></translation> </message> @@ -4165,7 +4330,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4220,7 +4385,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4246,24 +4411,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4271,7 +4436,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4282,7 +4447,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4333,12 +4498,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4354,11 +4519,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Dispositivos</translation> </message> @@ -4388,7 +4563,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4398,7 +4573,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -4421,8 +4601,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4526,6 +4706,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished"></translation> </message> @@ -4721,6 +4911,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4785,7 +4980,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4896,6 +5091,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4991,7 +5191,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5028,7 +5228,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished"></translation> </message> @@ -5083,7 +5298,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5113,7 +5328,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5196,29 +5421,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished">Cancelar</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_pt_PT.ts b/resources/langs/nheko_pt_PT.ts index 9b0824bf..93cfe1a2 100644 --- a/resources/langs/nheko_pt_PT.ts +++ b/resources/langs/nheko_pt_PT.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>A chamar...</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>A ligar...</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>Alcunhas de %1</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation>Definições das salas permitidas</translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 e outro %n</numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -232,12 +238,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Utilizador convidado: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -246,7 +252,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>Confirmar saída</translation> </message> @@ -273,7 +279,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation>Falha ao abrir base de dados. A terminar sessão!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>"Bater à porta"</translation> </message> @@ -305,12 +311,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Confirmar convite</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Tem a certeza que quer convidar %1 (%2)?</translation> </message> @@ -360,12 +366,12 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Utilizador perdoado: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Tem a certeza que quer começar uma conversa privada com %1?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Falha ao migrar a cache!</translation> </message> @@ -375,7 +381,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Versão da cache incompatível</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Falha ao restaurar a sua conta OLM. Por favor autentique-se novamente.</translation> </message> @@ -393,7 +399,7 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Por favor, tente autenticar-se novamente: %1</translation> </message> @@ -735,7 +741,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -745,7 +751,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -831,7 +837,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -872,7 +878,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -968,7 +974,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+292"/> + <location filename="../../src/ChatPage.cpp" line="+299"/> <source>Decrypt secrets</source> <translation>Desencriptar segredos</translation> </message> @@ -996,7 +1002,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Código de verificação</translation> </message> @@ -1047,7 +1053,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Não existe nenhuma chave para desbloquear esta mensagem. Nós pedimos a chave automaticamente, mas pode tentar pedi-la outra vez se estiver impaciente.</translation> </message> @@ -1082,7 +1088,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Erro de desencriptação desconhecido</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Solicitar chave</translation> </message> @@ -1090,12 +1096,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1239,6 +1245,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Cancelar</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Confirmar</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1312,6 +1346,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1491,9 +1543,9 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@ze:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation type="unfinished"></translation> </message> <message> <location line="+42"/> @@ -1532,7 +1584,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>Sair da sala</translation> </message> @@ -1549,8 +1601,8 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Inseriu um ID Matrix inválido p. ex. @ze:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="-157"/> @@ -1629,14 +1681,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>p. ex. @ze:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1667,13 +1719,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>servidor.meu:8787</translation> + <source>yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1690,7 +1742,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>Terminar sessão</translation> </message> @@ -1715,120 +1767,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 alterou o ícone da sala</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 criou e configurou a sala: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 iniciou uma chamada de voz.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 iniciou uma chamada de vídeo.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 iniciou uma chamada.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 atendeu a chamada.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 terminou a chamada.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>Permitir a entrada</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1879,7 +1817,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Editar</translation> </message> @@ -1914,12 +1852,7 @@ Example: https://server.my:8787</source> <translation>Opções</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1929,24 +1862,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>&Copiar</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>Copiar localização da &ligação</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>Re&agir</translation> </message> @@ -2006,7 +1939,12 @@ Example: https://server.my:8787</source> <translation>Remo&ver mensagem</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>&Guardar como</translation> </message> @@ -2029,7 +1967,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Enviar pedido de verificação</translation> </message> @@ -2249,7 +2187,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2306,9 +2244,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2499,7 +2455,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2532,7 +2488,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Escreva uma mensagem…</translation> </message> <message> - <location filename="../../src/main.cpp" line="-26"/> + <location filename="../../src/main.cpp" line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2556,6 +2512,11 @@ Example: https://server.my:8787</source> <source>type</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ReCaptchaDialog</name> @@ -2679,7 +2640,7 @@ Example: https://server.my:8787</source> <translation>O nome de utilizador não pode ser vazio e tem que conter apenas os caracteres a-z, 0-9, ., _, =, - e /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2723,7 +2684,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Fechar</translation> </message> @@ -2739,6 +2700,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2746,7 +2755,17 @@ Example: https://server.my:8787</source> <translation>Explorar salas públicas</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>Procurar por salas públicas</translation> </message> @@ -2755,6 +2774,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation>Escolher servidor personalizado</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Fechar</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2807,7 +2831,7 @@ Example: https://server.my:8787</source> <translation>Definições de utilizador</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>Terminar sessão</translation> </message> @@ -2832,7 +2856,27 @@ Example: https://server.my:8787</source> <translation>Definir mensagem de estado</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>Encriptação não configurada</translation> @@ -2855,7 +2899,7 @@ Example: https://server.my:8787</source> <translation>Fechar</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>Insira a etiqueta que quer usar:</translation> </message> @@ -2871,6 +2915,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2918,12 +2967,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>Membros de %1</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2962,22 +3011,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>Esta sala não está encriptada!</translation> </message> @@ -3030,10 +3064,13 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation>Falha ao carregar imagem: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> - <translation>Definições de sala</translation> + <translation type="unfinished">Definições de sala</translation> </message> <message> <location line="+35"/> @@ -3064,7 +3101,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3076,22 +3113,22 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Notifications</source> - <translation>Notificações</translation> + <translation type="unfinished">Notificações</translation> </message> <message> <location line="+6"/> <source>Muted</source> - <translation>Silenciada</translation> + <translation type="unfinished">Silenciada</translation> </message> <message> <location line="+0"/> <source>Mentions only</source> - <translation>Apenas menções</translation> + <translation type="unfinished">Apenas menções</translation> </message> <message> <location line="+0"/> <source>All messages</source> - <translation>Todas as mensagens</translation> + <translation type="unfinished">Todas as mensagens</translation> </message> <message> <location line="+10"/> @@ -3122,7 +3159,7 @@ Example: https://server.my:8787</source> <location line="+12"/> <location line="+242"/> <source>Change</source> - <translation>Alterar</translation> + <translation type="unfinished">Alterar</translation> </message> <message> <location line="-241"/> @@ -3235,21 +3272,15 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Encryption</source> - <translation>Encriptação</translation> + <translation type="unfinished">Encriptação</translation> </message> <message> <location line="+22"/> <source>End-to-End Encryption</source> - <translation>Encriptação ponta-a-ponta</translation> + <translation type="unfinished">Encriptação ponta-a-ponta</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3271,7 +3302,7 @@ Example: https://server.my:8787</source> <message> <location line="+6"/> <source>Sticker & Emote Settings</source> - <translation>Definições de autocolantes e emojis</translation> + <translation type="unfinished">Definições de autocolantes e emojis</translation> </message> <message> <location line="+6"/> @@ -3281,12 +3312,12 @@ Example: https://server.my:8787</source> <message> <location line="+6"/> <source>INFO</source> - <translation>INFO</translation> + <translation type="unfinished">INFO</translation> </message> <message> <location line="+9"/> <source>Internal ID</source> - <translation>ID interno</translation> + <translation type="unfinished">ID interno</translation> </message> <message> <location line="+16"/> @@ -3296,7 +3327,7 @@ Example: https://server.my:8787</source> <message> <location line="+19"/> <source>Room Version</source> - <translation>Versão da sala</translation> + <translation type="unfinished">Versão da sala</translation> </message> <message> <location line="+19"/> @@ -3335,7 +3366,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>Por favor, insira a sua palavra-passe para continuar:</translation> </message> @@ -3427,7 +3458,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>Falha ao ligar ao armazenamento secreto</translation> </message> @@ -3517,7 +3548,7 @@ Se escolher a verificação, terá que ter o outro dispositivo disponível. Se e <translation>Falha na configuração de encriptação: %1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>Chave de identificação alterada. Isto quebra a encriptação, portanto, a terminar sessão...</translation> </message> @@ -3625,7 +3656,7 @@ Se escolher a verificação, terá que ter o outro dispositivo disponível. Se e <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Verificação bem sucedida</translation> </message> @@ -3641,15 +3672,95 @@ Se escolher a verificação, terá que ter o outro dispositivo disponível. Se e </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 iniciou uma chamada de voz.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished">%1 iniciou uma chamada de vídeo.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished">%1 iniciou uma chamada.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 atendeu a chamada.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 terminou a chamada.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished">Permitir a entrada</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished">Editada</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Falha ao eliminar mensagem: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Falha ao encriptar evento, envio abortado!</translation> @@ -3704,7 +3815,7 @@ Se escolher a verificação, terá que ter o outro dispositivo disponível. Se e <translation>%1 autorizou os membros das seguintes salas a juntarem-se à sala automaticamente: %2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 tornou a sala aberta a visitantes.</translation> </message> @@ -3714,7 +3825,7 @@ Se escolher a verificação, terá que ter o outro dispositivo disponível. Se e <translation>%1 fechou o acesso à sala a visitantes.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 tornou o histórico da sala visível a qualquer pessoa. Eventos podem agora ser lidos por não-membros.</translation> </message> @@ -3734,7 +3845,7 @@ Se escolher a verificação, terá que ter o outro dispositivo disponível. Se e <translation>%1 tornou o histórico da sala visível ao membros desde a sua entrada.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 alterou as permissões da sala.</translation> @@ -3877,7 +3988,7 @@ Se escolher a verificação, terá que ter o outro dispositivo disponível. Se e <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3948,12 +4059,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> + <location line="+17"/> <source>%1 changed their avatar.</source> <translation>%1 alterou o seu avatar.</translation> </message> @@ -3998,12 +4109,72 @@ Reason: %4</source> <translation>%1 eliminou a sua "batida à porta".</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 criou e configurou a sala: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>Entrou na sala.</translation> </message> <message> - <location line="+1664"/> + <location line="+1648"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 alterou o seu avatar e também o seu nome de exibição para %2.</translation> </message> @@ -4045,23 +4216,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> + <name>TimelineSectionHeader</name> <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> - <message> - <location line="-18"/> - <source>Edited</source> - <translation>Editada</translation> - </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Nenhuma sala aberta</translation> </message> @@ -4167,7 +4332,7 @@ Reason: %4</source> <translation>Voltar à lista de salas</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4222,7 +4387,7 @@ Reason: %4</source> <translation>Definições</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4248,24 +4413,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>Nenhum processo de registo disponível!</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>Registo abortado</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>Por favor, insira um código de registo válido.</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>Código inválido</translation> </message> @@ -4273,7 +4438,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4284,7 +4449,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>Terminar sessão no dispositivo %1</translation> </message> @@ -4294,7 +4459,12 @@ Reason: %4</source> <translation>Terminou a sessão neste dispositivo.</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Selecionar um avatar</translation> </message> @@ -4314,7 +4484,7 @@ Reason: %4</source> <translation>Erro ao ler ficheiro: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Perfil de utilizador global</translation> </message> @@ -4365,12 +4535,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Verificar</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>Iniciar uma conversa privada.</translation> </message> @@ -4386,11 +4556,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>Atualizar a lista de dispositivos.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Dispositivos</translation> </message> @@ -4423,8 +4603,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>Predefinido</translation> </message> @@ -4528,6 +4708,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished">Notificações de ambiente de trabalho</translation> </message> @@ -4723,6 +4913,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4787,7 +4982,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished">Predefinido</translation> </message> @@ -4902,6 +5097,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4999,7 +5199,7 @@ será desfocada.</translation> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5036,7 +5236,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished">Selecionar um ficheiro</translation> </message> @@ -5091,7 +5306,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>ARMAZENADO EM CACHE</translation> </message> @@ -5121,7 +5336,17 @@ This setting will take effect upon restart.</source> <translation>PEDIR</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5204,29 +5429,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Cancelar</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Confirmar</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_ro.ts b/resources/langs/nheko_ro.ts index d706cdca..883e080c 100644 --- a/resources/langs/nheko_ro.ts +++ b/resources/langs/nheko_ro.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation type="unfinished"></translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -209,7 +215,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -233,7 +239,7 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Utilizator invitat: %1</translation> </message> @@ -244,12 +250,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation type="unfinished"></translation> </message> @@ -319,12 +325,12 @@ <translation>Utilizator dezinterzis: %1</translation> </message> <message> - <location line="-552"/> + <location line="-595"/> <source>Cache migration failed!</source> <translation>Nu s-a putut migra cache-ul!</translation> </message> <message numerus="yes"> - <location line="-159"/> + <location line="-172"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -334,7 +340,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -366,7 +372,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> + <location line="+22"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Nu s-a putut restabili contul OLM. Vă rugăm să vă reconectați.</translation> </message> @@ -384,7 +390,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Vă rugăm să vă reconectați: %1</translation> </message> @@ -435,7 +441,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Nu s-a putut părăsi camera: %1</translation> </message> <message> - <location line="+508"/> + <location line="+515"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> @@ -737,7 +743,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -747,7 +753,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -833,7 +839,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -875,7 +881,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -999,7 +1005,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation type="unfinished"></translation> </message> @@ -1050,7 +1056,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1085,7 +1091,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1093,12 +1099,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1242,6 +1248,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">Deschide Fallback în Browser</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Anulare</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Confirmare</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1315,6 +1349,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1494,8 +1546,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1535,7 +1587,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished">Părăsește camera</translation> </message> @@ -1552,7 +1604,7 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1632,14 +1684,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>ex. @joe:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1670,13 +1722,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1693,7 +1745,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1718,120 +1770,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 a creat și configurat camera: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 a răspuns apelului.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 a închis apelul.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1882,7 +1820,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1917,12 +1855,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Opțiuni</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1932,24 +1865,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2009,7 +1942,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2032,7 +1970,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2252,7 +2190,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2309,9 +2247,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2502,7 +2458,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2520,7 +2476,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2545,6 +2501,11 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation type="unfinished"></translation> @@ -2682,7 +2643,7 @@ Example: https://server.my:8787</source> <translation>Numele de utilizator nu poate fi gol, și trebuie să conțină doar caracterele a-z, 0-9, ., =, - și /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2726,7 +2687,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished">Închide</translation> </message> @@ -2742,6 +2703,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2749,7 +2758,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2758,6 +2777,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Închide</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2810,7 +2834,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Setări utilizator</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished">Deconectare</translation> </message> @@ -2835,7 +2859,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2858,7 +2902,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Închide</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2874,6 +2918,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2921,12 +2970,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2966,22 +3015,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation type="unfinished"></translation> </message> @@ -3034,8 +3068,11 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation type="unfinished">Nu s-a putut încărca imaginea: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3069,7 +3106,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3248,13 +3285,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Criptare Capăt-la-Capăt</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3340,7 +3371,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3432,7 +3463,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3520,7 +3551,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3628,7 +3659,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3644,15 +3675,95 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 a răspuns apelului.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 a închis apelul.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Redactare mesaj eșuată: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3708,7 +3819,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 a deschis camera pentru vizitatori.</translation> </message> @@ -3718,7 +3829,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 a revocat accesul vizitatorilor în această cameră.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 a făcut istoricul camerei să fie citibil de toată lumea. Evenimentele vor putea fi citite de neparticipanți de acum.</translation> </message> @@ -3738,7 +3849,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 a setat istoricul camerei accesibil membrilor din momentul alăturării.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 a modificat permisiunile camerei.</translation> @@ -3885,7 +3996,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3956,12 +4067,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4016,12 +4127,72 @@ Reason: %4</source> <translation>%1 și-a redactat ciocănitul.</translation> </message> <message> - <location line="-1700"/> + <location line="-1684"/> <source>You joined this room.</source> <translation>Te-ai alăturat camerei.</translation> </message> <message> - <location line="+1695"/> + <location line="-661"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 a creat și configurat camera: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2282"/> <source>%2 revoked the invite to %1.</source> <translation type="unfinished"></translation> </message> @@ -4053,23 +4224,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Nicio cameră deschisă</translation> </message> @@ -4176,7 +4341,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4231,7 +4396,7 @@ Reason: %4</source> <translation type="unfinished">Setări</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4257,24 +4422,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4282,7 +4447,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4294,7 +4459,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4304,7 +4469,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished">Selectează un avatar</translation> </message> @@ -4324,7 +4494,7 @@ Reason: %4</source> <translation type="unfinished">Eroare întâmpinată la citirea fișierului: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4375,12 +4545,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4396,11 +4566,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Dispozitive</translation> </message> @@ -4433,8 +4613,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4538,6 +4718,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished">Notificări desktop</translation> </message> @@ -4733,6 +4923,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4797,7 +4992,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4908,6 +5103,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -5003,7 +5203,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5040,7 +5240,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>All Files (*)</source> <translation type="unfinished">Toate fișierele (*)</translation> </message> @@ -5095,7 +5310,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5125,7 +5340,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5208,29 +5433,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Deschide Fallback în Browser</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Anulare</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Confirmare</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_ru.ts b/resources/langs/nheko_ru.ts index b6eec539..ff2bf3d5 100644 --- a/resources/langs/nheko_ru.ts +++ b/resources/langs/nheko_ru.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Вызов…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Соединение…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>Псевдонимы для %1</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 и ещё %n</numerusform> @@ -209,7 +215,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -233,12 +239,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Приглашенный пользователь: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -248,7 +254,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -275,7 +281,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation>Ошибка при попытке открыть базу данных, выходим из аккаунта!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>Попросить приглашение</translation> </message> @@ -307,12 +313,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Подтвердите приглашение</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Вы точно хотите пригласить %1 (%2)?</translation> </message> @@ -367,12 +373,12 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Разблокированный пользователь: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Вы действительно хотите начать личную переписку с %1?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Миграция кэша не удалась!</translation> </message> @@ -382,7 +388,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Несовместимая версия кэша</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Не удалось восстановить учетную запись OLM. Пожалуйста, войдите снова.</translation> </message> @@ -400,7 +406,7 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Повторите попытку входа: %1</translation> </message> @@ -737,7 +743,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Развернуть</translation> </message> @@ -747,7 +753,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Свернуть</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -833,7 +839,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -875,7 +881,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -971,7 +977,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+292"/> + <location filename="../../src/ChatPage.cpp" line="+299"/> <source>Decrypt secrets</source> <translation>Расшифровать ключи</translation> </message> @@ -999,7 +1005,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Код для Верификации</translation> </message> @@ -1050,7 +1056,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Сообщение не было расшифровано из-за отсутствия ключа. Ключ был запрошен автоматически, но Вы можете попробовать запросить его снова вручную.</translation> </message> @@ -1085,7 +1091,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Запросить ключ</translation> </message> @@ -1093,12 +1099,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1242,6 +1248,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">Открыть ответ в Браузере</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Отмена</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Подтвердить</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1315,6 +1349,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1494,8 +1546,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1535,7 +1587,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished">Покинуть комнату</translation> </message> @@ -1552,8 +1604,8 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Вы ввели не правильный Matrix ID, @joe:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="-157"/> @@ -1632,14 +1684,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>Пример: @joe:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1670,13 +1722,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>server.my:8787</translation> + <source>yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1693,7 +1745,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1718,120 +1770,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 создал и настроил комнату: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 начал голосовой звонок.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 начал видео звонок.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 начал вызов.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 ответил на звонок.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 завершил вызов.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1882,7 +1820,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Редактировать</translation> </message> @@ -1917,12 +1855,7 @@ Example: https://server.my:8787</source> <translation>Опции</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1932,24 +1865,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2009,7 +1942,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2032,7 +1970,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Отправить запрос на проверку</translation> </message> @@ -2252,7 +2190,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2309,9 +2247,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2502,7 +2458,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2535,7 +2491,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Написать сообщение…</translation> </message> <message> - <location filename="../../src/main.cpp" line="-26"/> + <location filename="../../src/main.cpp" line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2559,6 +2515,11 @@ Example: https://server.my:8787</source> <source>type</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ReCaptchaDialog</name> @@ -2682,7 +2643,7 @@ Example: https://server.my:8787</source> <translation>Имя пользователя не должно быть пустым и должно содержать только символы a-z, 0-9, ., _, =, -, и /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2726,7 +2687,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Закрыть</translation> </message> @@ -2742,6 +2703,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2749,7 +2758,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished">Присоединиться</translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2758,6 +2777,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Закрыть</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2810,7 +2834,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Пользовательские настройки</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished">Выйти</translation> </message> @@ -2835,7 +2859,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2858,7 +2902,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Закрыть</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2874,6 +2918,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2921,12 +2970,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2966,22 +3015,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation type="unfinished"></translation> </message> @@ -3034,10 +3068,13 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation>Не удалось загрузить изображение: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> - <translation>Настройки комнаты</translation> + <translation type="unfinished">Настройки комнаты</translation> </message> <message> <location line="+35"/> @@ -3069,7 +3106,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3081,22 +3118,22 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Notifications</source> - <translation>Уведомления</translation> + <translation type="unfinished">Уведомления</translation> </message> <message> <location line="+6"/> <source>Muted</source> - <translation>Заглушен</translation> + <translation type="unfinished">Заглушен</translation> </message> <message> <location line="+0"/> <source>Mentions only</source> - <translation>Упоминания только</translation> + <translation type="unfinished">Упоминания только</translation> </message> <message> <location line="+0"/> <source>All messages</source> - <translation>Все сообщения</translation> + <translation type="unfinished">Все сообщения</translation> </message> <message> <location line="+10"/> @@ -3240,23 +3277,17 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Encryption</source> - <translation>Шифрование</translation> + <translation type="unfinished">Шифрование</translation> </message> <message> <location line="+22"/> <source>End-to-End Encryption</source> - <translation>Оконечное шифрование</translation> + <translation type="unfinished">Оконечное шифрование</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> - <translation>Права доступа</translation> + <translation type="unfinished">Права доступа</translation> </message> <message> <location line="+6"/> @@ -3286,12 +3317,12 @@ Example: https://server.my:8787</source> <message> <location line="+6"/> <source>INFO</source> - <translation>ИНФОРМАЦИЯ</translation> + <translation type="unfinished">ИНФОРМАЦИЯ</translation> </message> <message> <location line="+9"/> <source>Internal ID</source> - <translation>Внутренний ID</translation> + <translation type="unfinished">Внутренний ID</translation> </message> <message> <location line="+16"/> @@ -3301,7 +3332,7 @@ Example: https://server.my:8787</source> <message> <location line="+19"/> <source>Room Version</source> - <translation>Версия Комнаты</translation> + <translation type="unfinished">Версия Комнаты</translation> </message> <message> <location line="+19"/> @@ -3340,7 +3371,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3432,7 +3463,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3520,7 +3551,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3628,7 +3659,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Верификация прошла успешно</translation> </message> @@ -3644,15 +3675,95 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 начал голосовой звонок.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished">%1 начал видео звонок.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished">%1 начал вызов.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 ответил на звонок.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 завершил вызов.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished">Изменено</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Ошибка редактирования сообщения: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Не удалось зашифровать сообщение, отправка отменена!</translation> @@ -3708,7 +3819,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 сделал комнату открытой для гостей.</translation> </message> @@ -3718,7 +3829,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 закрыл доступ к комнате для гостей.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 сделал историю сообщений видимой для всех. События могут быть прочитаны неприсоединившимися к комнате.</translation> </message> @@ -3738,7 +3849,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 сделал историю сообщений видимой для участников, с момента того, как они присоединились к комнате.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 изменил права доступа комнаты.</translation> @@ -3885,7 +3996,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3956,12 +4067,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4016,12 +4127,72 @@ Reason: %4</source> <translation>%1 отредактировал его "стук".</translation> </message> <message> - <location line="-1700"/> + <location line="-1684"/> <source>You joined this room.</source> <translation>Вы присоединились к комнате.</translation> </message> <message> - <location line="+1695"/> + <location line="-661"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 создал и настроил комнату: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2282"/> <source>%2 revoked the invite to %1.</source> <translation type="unfinished"></translation> </message> @@ -4053,23 +4224,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> + <name>TimelineSectionHeader</name> <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> - <message> - <location line="-18"/> - <source>Edited</source> - <translation>Изменено</translation> - </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Комната не выбрана</translation> </message> @@ -4176,7 +4341,7 @@ Reason: %4</source> <translation>Вернуться к списку комнат</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4231,7 +4396,7 @@ Reason: %4</source> <translation>Настройки</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4257,24 +4422,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4282,7 +4447,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4294,7 +4459,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4304,7 +4469,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Выберите аватар</translation> </message> @@ -4324,7 +4494,7 @@ Reason: %4</source> <translation>Ошибка во время прочтения файла: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Глобальный Пользовательский Профиль</translation> </message> @@ -4375,12 +4545,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Верифицировать</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4396,11 +4566,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Устройства</translation> </message> @@ -4433,8 +4613,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>По умолчанию</translation> </message> @@ -4538,6 +4718,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished">Уведомления на рабочем столе</translation> </message> @@ -4733,6 +4923,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4797,7 +4992,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished">По умолчанию</translation> </message> @@ -4910,6 +5105,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -5007,7 +5207,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5044,7 +5244,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation>Выберите файл</translation> </message> @@ -5099,7 +5314,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>Закешировано</translation> </message> @@ -5129,7 +5344,17 @@ This setting will take effect upon restart.</source> <translation>ЗАПРОС</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5212,29 +5437,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Открыть ответ в Браузере</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Отмена</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Подтвердить</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_si.ts b/resources/langs/nheko_si.ts index 6a19012a..8923a1c4 100644 --- a/resources/langs/nheko_si.ts +++ b/resources/langs/nheko_si.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation type="unfinished"></translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -237,12 +243,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -251,7 +257,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -288,7 +294,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> + <location line="+22"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -306,7 +312,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation type="unfinished"></translation> </message> @@ -363,12 +369,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+30"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation type="unfinished"></translation> </message> @@ -438,7 +444,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> @@ -735,7 +741,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -745,7 +751,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -831,7 +837,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -872,7 +878,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -996,7 +1002,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation type="unfinished"></translation> </message> @@ -1047,7 +1053,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1082,7 +1088,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1090,12 +1096,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1239,6 +1245,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1312,6 +1346,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1491,8 +1543,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1532,7 +1584,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished"></translation> </message> @@ -1551,14 +1603,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> + <source>e.g @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1589,13 +1641,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1613,7 +1665,7 @@ Example: https://server.my:8787</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1690,7 +1742,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1715,120 +1767,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1879,7 +1817,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1914,12 +1852,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1929,24 +1862,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2006,7 +1939,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2029,7 +1967,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2249,7 +2187,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2306,9 +2244,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2499,7 +2455,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2517,7 +2473,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2542,6 +2498,11 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation type="unfinished"></translation> @@ -2624,7 +2585,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2723,7 +2684,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished"></translation> </message> @@ -2739,6 +2700,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2746,7 +2755,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2755,6 +2774,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2807,7 +2831,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished"></translation> </message> @@ -2832,7 +2856,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2855,7 +2899,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2871,6 +2915,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2918,12 +2967,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2962,45 +3011,64 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> + <location line="+92"/> + <source>This room is not encrypted!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>This user is verified.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Moderator: %1</source> + <source>This user isn't verified, but is still using the same master key from the first time you met.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>User: %1</source> + <source>This user has unverified devices!</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>RoomSettings</name> <message> - <location line="+20"/> - <source>This room is not encrypted!</source> + <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> + <source>Failed to enable encryption: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>This user is verified.</source> + <location line="+404"/> + <source>Select an avatar</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user isn't verified, but is still using the same master key from the first time you met.</source> + <location line="+0"/> + <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user has unverified devices!</source> + <location line="+12"/> + <source>The selected file is not an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Error while reading file: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <location line="+19"/> + <source>Failed to upload image: %s</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>RoomSettings</name> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3033,7 +3101,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3212,13 +3280,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3277,37 +3339,6 @@ Example: https://server.my:8787</source> <source>show more</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> - <source>Failed to enable encryption: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+404"/> - <source>Select an avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>All Files (*)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>The selected file is not an image</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Error while reading file: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+32"/> - <location line="+19"/> - <source>Failed to upload image: %s</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>RoomlistModel</name> @@ -3335,7 +3366,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3427,7 +3458,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3515,7 +3546,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3623,7 +3654,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3639,20 +3670,160 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1251"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+711"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+250"/> + <location line="+265"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3707,7 +3878,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3717,7 +3888,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3737,7 +3908,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3880,7 +4051,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3951,12 +4122,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4043,23 +4214,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation type="unfinished"></translation> </message> @@ -4165,7 +4330,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4220,7 +4385,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4246,24 +4411,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4271,7 +4436,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4282,7 +4447,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4333,12 +4498,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4354,11 +4519,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished"></translation> </message> @@ -4388,7 +4563,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4398,7 +4573,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -4421,8 +4601,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4526,6 +4706,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished"></translation> </message> @@ -4721,6 +4911,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4785,7 +4980,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4896,6 +5091,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4991,7 +5191,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5028,7 +5228,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished"></translation> </message> @@ -5083,7 +5298,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5113,7 +5328,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5196,29 +5421,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_sr_Latn.ts b/resources/langs/nheko_sr_Latn.ts index 535d79fc..8ab3dc93 100644 --- a/resources/langs/nheko_sr_Latn.ts +++ b/resources/langs/nheko_sr_Latn.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation type="unfinished"></translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -209,7 +215,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -238,12 +244,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -253,7 +259,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -290,7 +296,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> + <location line="+22"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -308,7 +314,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation type="unfinished"></translation> </message> @@ -365,12 +371,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+30"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation type="unfinished"></translation> </message> @@ -440,7 +446,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> @@ -737,7 +743,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -747,7 +753,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -833,7 +839,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -875,7 +881,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -999,7 +1005,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation type="unfinished"></translation> </message> @@ -1050,7 +1056,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1085,7 +1091,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1093,12 +1099,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1242,6 +1248,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1315,6 +1349,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1494,8 +1546,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1535,7 +1587,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished"></translation> </message> @@ -1554,14 +1606,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> + <source>e.g @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1592,13 +1644,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1616,7 +1668,7 @@ Example: https://server.my:8787</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1693,7 +1745,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1718,120 +1770,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1882,7 +1820,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1917,12 +1855,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1932,24 +1865,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2009,7 +1942,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2032,7 +1970,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2252,7 +2190,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2309,9 +2247,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2502,7 +2458,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2520,7 +2476,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2545,6 +2501,11 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation type="unfinished"></translation> @@ -2627,7 +2588,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2726,7 +2687,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished"></translation> </message> @@ -2742,6 +2703,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2749,7 +2758,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2758,6 +2777,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2810,7 +2834,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished"></translation> </message> @@ -2835,7 +2859,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2858,7 +2902,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2874,6 +2918,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2921,12 +2970,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2966,45 +3015,64 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> + <location line="+92"/> + <source>This room is not encrypted!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>This user is verified.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Moderator: %1</source> + <source>This user isn't verified, but is still using the same master key from the first time you met.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>User: %1</source> + <source>This user has unverified devices!</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>RoomSettings</name> <message> - <location line="+20"/> - <source>This room is not encrypted!</source> + <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> + <source>Failed to enable encryption: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>This user is verified.</source> + <location line="+404"/> + <source>Select an avatar</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user isn't verified, but is still using the same master key from the first time you met.</source> + <location line="+0"/> + <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user has unverified devices!</source> + <location line="+12"/> + <source>The selected file is not an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Error while reading file: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <location line="+19"/> + <source>Failed to upload image: %s</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>RoomSettings</name> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3038,7 +3106,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3217,13 +3285,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3282,37 +3344,6 @@ Example: https://server.my:8787</source> <source>show more</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> - <source>Failed to enable encryption: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+404"/> - <source>Select an avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>All Files (*)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>The selected file is not an image</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Error while reading file: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+32"/> - <location line="+19"/> - <source>Failed to upload image: %s</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>RoomlistModel</name> @@ -3340,7 +3371,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3432,7 +3463,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3520,7 +3551,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3628,7 +3659,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3644,20 +3675,160 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1251"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+711"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+250"/> + <location line="+265"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3713,7 +3884,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3723,7 +3894,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3743,7 +3914,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3890,7 +4061,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3961,12 +4132,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4053,23 +4224,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation type="unfinished"></translation> </message> @@ -4176,7 +4341,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4231,7 +4396,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4257,24 +4422,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4282,7 +4447,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4294,7 +4459,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4345,12 +4510,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4366,11 +4531,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished"></translation> </message> @@ -4400,7 +4575,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4410,7 +4585,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -4433,8 +4613,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4538,6 +4718,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished"></translation> </message> @@ -4733,6 +4923,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4797,7 +4992,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4908,6 +5103,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -5003,7 +5203,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5040,7 +5240,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished"></translation> </message> @@ -5095,7 +5310,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5125,7 +5340,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5208,29 +5433,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_sv.ts b/resources/langs/nheko_sv.ts index b6b94af4..cdbe03d1 100644 --- a/resources/langs/nheko_sv.ts +++ b/resources/langs/nheko_sv.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Ringer upp...</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Ansluter...</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -208,7 +214,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -232,12 +238,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Bjöd in användare: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -246,7 +252,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -273,7 +279,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation type="unfinished"></translation> </message> @@ -305,12 +311,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Bekräfta inbjudan</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Är du säker på att du vill bjuda in %1 (%2)?</translation> </message> @@ -380,12 +386,12 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Hävde bannlysningen av användare: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Cache-migration misslyckades!</translation> </message> @@ -395,7 +401,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Inkompatibel cache-version</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Kunde inte återställa OLM-konto. Vänligen logga in på nytt.</translation> </message> @@ -413,7 +419,7 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Vänligen försök logga in på nytt: %1</translation> </message> @@ -735,7 +741,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -745,7 +751,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -831,7 +837,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -872,7 +878,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -968,7 +974,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+377"/> + <location filename="../../src/ChatPage.cpp" line="+384"/> <source>Decrypt secrets</source> <translation>Dekryptera hemliga nycklar</translation> </message> @@ -996,7 +1002,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Verifikationskod</translation> </message> @@ -1047,7 +1053,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1082,7 +1088,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1090,12 +1096,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1239,6 +1245,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">Öppna reserv i webbläsare</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Avbryt</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Bekräfta</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1312,6 +1346,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1491,8 +1543,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1532,7 +1584,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished">Lämna rum</translation> </message> @@ -1549,7 +1601,7 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1629,14 +1681,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>t.ex. @joe:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1667,13 +1719,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1690,7 +1742,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1715,120 +1767,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 skapade och konfigurerade rum: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 påbörjade ett röstsamtal.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 påbörjade ett videosamtal.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 påbörjade ett samtal.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 besvarade samtalet.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 avslutade samtalet.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1879,7 +1817,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1914,12 +1852,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Alternativ</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1929,24 +1862,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2006,7 +1939,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2029,7 +1967,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Skicka verifikationsförfrågan</translation> </message> @@ -2249,7 +2187,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2306,9 +2244,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2499,7 +2455,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2532,7 +2488,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Skriv ett meddelande…</translation> </message> <message> - <location filename="../../src/main.cpp" line="-26"/> + <location filename="../../src/main.cpp" line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2556,6 +2512,11 @@ Example: https://server.my:8787</source> <source>type</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>ReCaptchaDialog</name> @@ -2679,7 +2640,7 @@ Example: https://server.my:8787</source> <translation>Användarnamnet kan inte vara tomt, och måste enbart innehålla tecknen a-z, 0-9, ., _, =, -, och /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2723,7 +2684,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Stäng</translation> </message> @@ -2739,6 +2700,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2746,7 +2755,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2755,6 +2774,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Stäng</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2807,7 +2831,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Användarinställningar</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished">Logga ut</translation> </message> @@ -2832,7 +2856,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2855,7 +2899,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Stäng</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2871,6 +2915,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2918,12 +2967,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2962,22 +3011,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation type="unfinished"></translation> </message> @@ -3030,8 +3064,11 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation type="unfinished">Kunde inte ladda upp bilden: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3064,7 +3101,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3243,13 +3280,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Totalsträckskryptering</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3335,7 +3366,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3427,7 +3458,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3515,7 +3546,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3623,7 +3654,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Lyckad verifikation</translation> </message> @@ -3639,15 +3670,95 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 påbörjade ett röstsamtal.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished">%1 påbörjade ett videosamtal.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished">%1 påbörjade ett samtal.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 besvarade samtalet.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 avslutade samtalet.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Kunde inte maskera meddelande: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Kunde inte kryptera event, sändning avbruten!</translation> @@ -3702,7 +3813,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 öppnade rummet för gäståtkomst.</translation> </message> @@ -3712,7 +3823,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 stängde rummet för gäståtkomst.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 gjorde rummets historik läsligt för omvärlden. Event kan nu läsas av användare som inte är i rummet.</translation> </message> @@ -3732,7 +3843,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 gjorde rummets historik läslig för medlemmar sedan de gick med i rummet.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 har ändrat rummets behörigheter.</translation> @@ -3875,7 +3986,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3946,12 +4057,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4006,12 +4117,72 @@ Reason: %4</source> <translation>%1 maskerade sin knackning.</translation> </message> <message> - <location line="-1700"/> + <location line="-1684"/> <source>You joined this room.</source> <translation>Du gick med i detta rum.</translation> </message> <message> - <location line="+1695"/> + <location line="-661"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 skapade och konfigurerade rum: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2282"/> <source>%2 revoked the invite to %1.</source> <translation type="unfinished"></translation> </message> @@ -4043,23 +4214,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> + <name>TimelineSectionHeader</name> <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Inget rum öppet</translation> </message> @@ -4165,7 +4330,7 @@ Reason: %4</source> <translation>Tillbaka till rumlista</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4220,7 +4385,7 @@ Reason: %4</source> <translation>Inställningar</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4246,24 +4411,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4271,7 +4436,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4282,7 +4447,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4292,7 +4457,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Välj en avatar</translation> </message> @@ -4312,7 +4482,7 @@ Reason: %4</source> <translation>Kunde inte läsa filen: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4363,12 +4533,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Bekräfta</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4384,11 +4554,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Enheter</translation> </message> @@ -4421,8 +4601,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4526,6 +4706,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished">Skrivbordsnotifikationer</translation> </message> @@ -4721,6 +4911,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4785,7 +4980,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4898,6 +5093,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4995,7 +5195,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished">Nyckeln för att dekryptera online-lagrade nyckelbackuper. Om den är lagrad lokalt kan du slå på onlinebackup av nycklar för att säkert lagra krypteringsnycklar på servern.</translation> </message> @@ -5032,7 +5232,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished">Välj en fil</translation> </message> @@ -5087,7 +5302,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>SPARAD</translation> </message> @@ -5117,7 +5332,17 @@ This setting will take effect upon restart.</source> <translation>BEGÄRAN</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5200,29 +5425,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Öppna reserv i webbläsare</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Avbryt</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Bekräfta</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_tr.ts b/resources/langs/nheko_tr.ts index 3d2ffdc4..6886da57 100644 --- a/resources/langs/nheko_tr.ts +++ b/resources/langs/nheko_tr.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Aranıyor…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Bağlanıyor…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>%1'e ait adresler</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished">İzin verilen oda ayarları</translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -207,7 +213,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -231,12 +237,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Kullanıcı davet edildi: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -244,7 +250,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>Çıkışı onayla</translation> </message> @@ -259,7 +265,7 @@ <translation>Veritabanı açılamadı, çıkış yapılıyor!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>Kapıyı tıklat</translation> </message> @@ -285,12 +291,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Daveti onayla</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>%1 (%2) adlı kişiyi davet etmek istediğinize emin misiniz?</translation> </message> @@ -335,12 +341,12 @@ <translation>Yasak kaldırıldı: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>%1 adlı kişiyle özel konuşma başlatmak istediğinize emin misiniz?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Önbellek transferi başarısız!</translation> </message> @@ -364,7 +370,7 @@ Eğer bunun bir hata olduğunu düşünüyorsanız Nheko'yu kapatabilir ve <translation>Uyumsuz önbellek versiyonu</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>OLM hesabınız alınamadı. Lütfen tekrar giriş yapın.</translation> </message> @@ -382,7 +388,7 @@ Eğer bunun bir hata olduğunu düşünüyorsanız Nheko'yu kapatabilir ve </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Lütfen tekrar giriş yapmayı deneyin: %1</translation> </message> @@ -736,7 +742,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Genişlet</translation> </message> @@ -746,7 +752,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Daralt</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation>Bu topluluk veya etiket için bildirim sayısını gösterme.</translation> </message> @@ -832,7 +838,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation>Topluluğa katılmayı onayla</translation> </message> @@ -872,7 +878,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation>Direkt Sohbet Oluştur</translation> </message> @@ -968,7 +974,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation>Gizli anahtarları deşifre et</translation> </message> @@ -996,7 +1002,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Doğrulama Kodu</translation> </message> @@ -1047,7 +1053,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Bu mesajı çözmek için anahtar yok. Anahtarı otomatik olarak talep ettik ama sabırsızlanıyorsanız yine de tekrar istemeyi deneyebilirsiniz.</translation> </message> @@ -1082,7 +1088,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Bilinmeyen şifre çözme hatası</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Anahtar talep et</translation> </message> @@ -1090,12 +1096,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation>%1 uçtan uça şifrelmeyi aktive etti</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation>Şifreleme, mesajlarınızı sadece gönderen kişinin okumasını sağlayarak daha güvenli hale getirir. Ekstra güvenlik için, eğer doğru kişiyle konuştuğunuza emin olmak istiyorsanız, onları gerçek hayatta doğrulayabilirsiniz.</translation> </message> @@ -1239,6 +1245,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1312,6 +1346,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1491,8 +1543,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1532,7 +1584,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished"></translation> </message> @@ -1551,14 +1603,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> + <source>e.g @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1589,13 +1641,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1613,7 +1665,7 @@ Example: https://server.my:8787</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1690,7 +1742,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1715,120 +1767,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1879,7 +1817,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1914,12 +1852,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1929,24 +1862,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2006,7 +1939,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2029,7 +1967,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2249,7 +2187,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2306,9 +2244,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2499,7 +2455,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2517,7 +2473,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2542,6 +2498,11 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation type="unfinished"></translation> @@ -2624,7 +2585,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2723,7 +2684,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished">Kapat</translation> </message> @@ -2739,6 +2700,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2746,7 +2755,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished">Katıl</translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2755,6 +2774,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Kapat</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2807,7 +2831,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished"></translation> </message> @@ -2832,7 +2856,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2855,7 +2899,7 @@ Example: https://server.my:8787</source> <translation type="unfinished">Kapat</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2871,6 +2915,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2918,12 +2967,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2961,45 +3010,64 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> + <location line="+92"/> + <source>This room is not encrypted!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>This user is verified.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Moderator: %1</source> + <source>This user isn't verified, but is still using the same master key from the first time you met.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>User: %1</source> + <source>This user has unverified devices!</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>RoomSettings</name> <message> - <location line="+20"/> - <source>This room is not encrypted!</source> + <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> + <source>Failed to enable encryption: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>This user is verified.</source> + <location line="+404"/> + <source>Select an avatar</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user isn't verified, but is still using the same master key from the first time you met.</source> + <location line="+0"/> + <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user has unverified devices!</source> + <location line="+12"/> + <source>The selected file is not an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Error while reading file: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <location line="+19"/> + <source>Failed to upload image: %s</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>RoomSettings</name> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3031,7 +3099,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3210,13 +3278,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3275,37 +3337,6 @@ Example: https://server.my:8787</source> <source>show more</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> - <source>Failed to enable encryption: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+404"/> - <source>Select an avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>All Files (*)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>The selected file is not an image</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Error while reading file: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+32"/> - <location line="+19"/> - <source>Failed to upload image: %s</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>RoomlistModel</name> @@ -3333,7 +3364,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3425,7 +3456,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3513,7 +3544,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3621,7 +3652,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3637,20 +3668,160 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1251"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+711"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+250"/> + <location line="+265"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3704,7 +3875,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3714,7 +3885,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3734,7 +3905,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3873,7 +4044,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3944,12 +4115,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4036,23 +4207,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation type="unfinished"></translation> </message> @@ -4157,7 +4322,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4212,7 +4377,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4238,24 +4403,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4263,7 +4428,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4273,7 +4438,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4324,12 +4489,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4345,11 +4510,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Cihazlar</translation> </message> @@ -4379,7 +4554,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4389,7 +4564,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -4412,8 +4592,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4517,6 +4697,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished"></translation> </message> @@ -4712,6 +4902,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4776,7 +4971,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4887,6 +5082,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4982,7 +5182,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5019,7 +5219,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished"></translation> </message> @@ -5074,7 +5289,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5104,7 +5319,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5187,29 +5412,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_uk.ts b/resources/langs/nheko_uk.ts index c8180a7b..6b4321dd 100644 --- a/resources/langs/nheko_uk.ts +++ b/resources/langs/nheko_uk.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>Телефоную…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>Підключення…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>Псевдоніми %1</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation>Налаштування дозволених кімнат</translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 і ще %n</numerusform> @@ -209,7 +215,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -233,12 +239,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>Запрошений користувач: %1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -248,7 +254,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>Підтвердьте вихід</translation> </message> @@ -263,7 +269,7 @@ <translation>Не вдалося відкрити базу даних, вихід із системи!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>Постукати в кімнату</translation> </message> @@ -289,12 +295,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>Підтвердити запрошення</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>Ви справді хочете запросити %1 (%2)?</translation> </message> @@ -339,12 +345,12 @@ <translation>Розблоковано користувача: %1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>Ви справді хочете розпочати приватну бесіду з %1?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>Помилка міграції кешу!</translation> </message> @@ -368,7 +374,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation>Несумісна версія кешу</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>Не вдалося відновити обліковий запис OLM. Увійдіть ще раз.</translation> </message> @@ -386,7 +392,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>Спробуйте увійти знову: %1</translation> </message> @@ -740,7 +746,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>Розгорнути</translation> </message> @@ -750,7 +756,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Згорнути</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation>Не показувати кількість сповіщень для цієї спільноти чи тегу.</translation> </message> @@ -836,7 +842,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation>Підтвердити приєднання до спільноти</translation> </message> @@ -878,7 +884,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation>Створити прямий чат</translation> </message> @@ -974,7 +980,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation>Розшифрувати ключі</translation> </message> @@ -1002,7 +1008,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>Код підтвердження</translation> </message> @@ -1053,7 +1059,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>Немає ключа для розблокування цього повідомлення. Ми запросили ключ автоматично, але Ви можете спробувати запросити його знову вручну.</translation> </message> @@ -1088,7 +1094,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>Невідома помилка дешифрування</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>Запитати ключ</translation> </message> @@ -1096,12 +1102,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation>%1 увімкнув наскрізне шифрування</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation>Шифрування зберігає ваші повідомлення в безпеці, дозволяючи прочитати повідомлення лише людям, яким ви надіслали. Для додаткової безпеки, якщо ви хочете переконатися, що спілкуєтеся з потрібними людьми, ви можете перевірити їх у реальному житті.</translation> </message> @@ -1245,6 +1251,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished">Відкрийте резервну копію, виконайте кроки та підтвердіть їх після завершення.</translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished">Відкрити резервну копію в браузері</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished">Скасувати</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished">Підтвердити</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1318,6 +1352,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1497,9 +1549,9 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@taras:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation type="unfinished"></translation> </message> <message> <location line="+42"/> @@ -1538,7 +1590,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>Залишити кімнату</translation> </message> @@ -1555,8 +1607,8 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>Ви ввели недійсний ідентифікатор Matrix наприклад @taras:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="-157"/> @@ -1635,19 +1687,16 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>наприклад @taras:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> - <translation>Ваше ім'я для входу. Ідентифікатор Matrix має починатися з @, за яким іде ідентифікатор користувача. Після ідентифікатора користувача потрібно включити ім’я вашого сервера після :. -Ви також можете вказати адресу домашнього сервера, якщо ваш сервер не підтримує .well-known lookup. -Приклад: @користувач:мій.сервер -Якщо Nheko не зможе виявити ваш домашній сервер, він покаже вам поле для введення сервера вручну.</translation> + <translation type="unfinished"></translation> </message> <message> <location line="+27"/> @@ -1676,15 +1725,14 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>мій.сервер:8787</translation> + <source>yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> - <translation>Адреса, за якою можна зв’язатися з клієнтським API вашого домашнього сервера. -Приклад: https://мій.сервер:8787</translation> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> + <translation type="unfinished"></translation> </message> <message> <location line="+32"/> @@ -1700,7 +1748,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>Вийти</translation> </message> @@ -1725,120 +1773,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation>Цю кімнату було замінено з такої причини: %1</translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation>Йти до кімнати заміни</translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation>%1 видалив повідомлення</translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation>%2 змінив назву кімнати на: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation>%1 видалив назву кімнати</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation>%2 змінив тему на: %1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation>%1 видалив тему</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 змінив аватар кімнати</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation>%1 змінив закріплені повідомлення.</translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation>%1 змінив адреси для цієї кімнати.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation>%1 змінив батьківські спільноти для цієї кімнати.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 створив і налаштував кімнату: %2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 зробив голосовий виклик.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 здійснив відеодзвінок.</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 зателефонував.</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 відповів на дзвінок.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation>%1 відхилив виклик.</translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation>%1 вибрав відповідь</translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 завершив виклик.</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation>%1 обговорює виклик...</translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>Дозволити їм увійти</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1889,7 +1823,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>Змінити</translation> </message> @@ -1924,12 +1858,7 @@ Example: https://server.my:8787</source> <translation>Опції</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation>Введіть причину видалення або натисніть Enter щоб видалити без причини:</translation> </message> @@ -1939,24 +1868,24 @@ Example: https://server.my:8787</source> <translation>Причина видалення</translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>&Копіювати</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>Копіювати &посилання розташування</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>Ре&агувати</translation> </message> @@ -2016,7 +1945,12 @@ Example: https://server.my:8787</source> <translation>Ви&далити повідомлення</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>&Зберегти як</translation> </message> @@ -2039,7 +1973,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>Надіслати запит на підтвердження</translation> </message> @@ -2259,7 +2193,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation>Застосувати зміни дозволів</translation> </message> @@ -2316,9 +2250,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished">Адміністратор: %1</translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished">Модератор: %1</translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished">Користувач: %1</translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation>Інші події</translation> </message> @@ -2509,7 +2461,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation>Створити унікальний профіль, який дозволить вам входити в кілька облікових записів одночасно та запускати кілька екземплярів nheko.</translation> </message> @@ -2527,7 +2479,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation>Псевдонім для '--log-level trace'.</translation> </message> @@ -2552,6 +2504,11 @@ Example: https://server.my:8787</source> <translation>тип</translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation>Відповісти</translation> @@ -2689,7 +2646,7 @@ Example: https://server.my:8787</source> <translation>Ім’я користувача не має бути порожнім і має містити лише символи a-z, 0-9, ., _, =, - та /.</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation>Назад</translation> @@ -2733,7 +2690,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>Закрити</translation> </message> @@ -2749,6 +2706,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2756,7 +2761,17 @@ Example: https://server.my:8787</source> <translation>Досліджуйте громадські кімнати</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished">Приєднатися</translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>Пошук громадських кімнат</translation> </message> @@ -2765,6 +2780,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation>Вибрати спеціальний домашній сервер</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished">Закрити</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2817,7 +2837,7 @@ Example: https://server.my:8787</source> <translation>Налаштування користувача</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>Вийти</translation> </message> @@ -2842,7 +2862,27 @@ Example: https://server.my:8787</source> <translation>Встановити повідомлення про статус</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>Шифрування не встановлено</translation> @@ -2865,7 +2905,7 @@ Example: https://server.my:8787</source> <translation>Закрити</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>Введіть тег, який ви хочете використовувати:</translation> </message> @@ -2881,6 +2921,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation>Налаштування кімнати</translation> </message> @@ -2928,12 +2973,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>Члени %1</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2973,22 +3018,7 @@ Example: https://server.my:8787</source> <translation>Рівень доступу</translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation>Адміністратор: %1</translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation>Модератор: %1</translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation>Користувач: %1</translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>Ця кімната не зашифрована!</translation> </message> @@ -3041,44 +3071,47 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation>Не вдалося завантажити зображення: %s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> - <translation>Налаштування кімнати</translation> + <translation type="unfinished">Налаштування кімнати</translation> </message> <message> <location line="+35"/> <source>Change room avatar.</source> - <translation>Змінити аватар кімнати.</translation> + <translation type="unfinished">Змінити аватар кімнати.</translation> </message> <message> <location line="+93"/> <source>Change name of this room</source> - <translation>Змінити назву цієї кімнати</translation> + <translation type="unfinished">Змінити назву цієї кімнати</translation> </message> <message numerus="yes"> <location line="+22"/> <source>%n member(s)</source> - <translation> - <numerusform>%n учасник</numerusform> - <numerusform>%n учасники</numerusform> - <numerusform>%n учасників</numerusform> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> </translation> </message> <message> <location line="+8"/> <source>View members of %1</source> - <translation>Переглянути учасників %1</translation> + <translation type="unfinished">Переглянути учасників %1</translation> </message> <message> <location line="+24"/> <source>No topic set</source> - <translation>Тема не встановлена</translation> + <translation type="unfinished">Тема не встановлена</translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> - <translation>Змінити тему цієї кімнати</translation> + <translation type="unfinished">Змінити тему цієї кімнати</translation> </message> <message> <location line="+31"/> @@ -3088,22 +3121,22 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Notifications</source> - <translation>Сповіщення</translation> + <translation type="unfinished">Сповіщення</translation> </message> <message> <location line="+6"/> <source>Muted</source> - <translation>Приглушений</translation> + <translation type="unfinished">Приглушений</translation> </message> <message> <location line="+0"/> <source>Mentions only</source> - <translation>Лише згадки</translation> + <translation type="unfinished">Лише згадки</translation> </message> <message> <location line="+0"/> <source>All messages</source> - <translation>Всі повідомлення</translation> + <translation type="unfinished">Всі повідомлення</translation> </message> <message> <location line="+10"/> @@ -3113,43 +3146,43 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Anyone can join</source> - <translation>Будь-хто може приєднатися</translation> + <translation type="unfinished">Будь-хто може приєднатися</translation> </message> <message> <location line="+14"/> <source>Allow knocking</source> - <translation>Дозволити стукіт</translation> + <translation type="unfinished">Дозволити стукіт</translation> </message> <message> <location line="+19"/> <source>Allow joining via other rooms</source> - <translation>Дозволити приєднання через інші кімнати</translation> + <translation type="unfinished">Дозволити приєднання через інші кімнати</translation> </message> <message> <location line="+19"/> <source>Rooms to join via</source> - <translation>Кімнати для приєднання</translation> + <translation type="unfinished">Кімнати для приєднання</translation> </message> <message> <location line="+12"/> <location line="+242"/> <source>Change</source> - <translation>Змінити</translation> + <translation type="unfinished">Змінити</translation> </message> <message> <location line="-241"/> <source>Change the list of rooms users can join this room via. Usually this is the official community of this room.</source> - <translation>Змінити список кімнат, через які користувачі можуть приєднатися до цієї кімнати. Зазвичай це офіційна спільнота цієї кімнати.</translation> + <translation type="unfinished">Змінити список кімнат, через які користувачі можуть приєднатися до цієї кімнати. Зазвичай це офіційна спільнота цієї кімнати.</translation> </message> <message> <location line="+6"/> <source>Allow guests to join</source> - <translation>Дозволити гостям приєднатися</translation> + <translation type="unfinished">Дозволити гостям приєднатися</translation> </message> <message> <location line="+17"/> <source>Apply access rules</source> - <translation>Застосувати правила доступу</translation> + <translation type="unfinished">Застосувати правила доступу</translation> </message> <message> <location line="+7"/> @@ -3222,12 +3255,12 @@ Example: https://server.my:8787</source> <location line="+60"/> <location line="+12"/> <source>Configure</source> - <translation>Налаштувати</translation> + <translation type="unfinished">Налаштувати</translation> </message> <message> <location line="-89"/> <source>Select events to hide in this room</source> - <translation>Вибрати події, які потрібно приховати в цій кімнаті</translation> + <translation type="unfinished">Вибрати події, які потрібно приховати в цій кімнаті</translation> </message> <message> <location line="+6"/> @@ -3247,79 +3280,72 @@ Example: https://server.my:8787</source> <message> <location line="+9"/> <source>Encryption</source> - <translation>Шифрування</translation> + <translation type="unfinished">Шифрування</translation> </message> <message> <location line="+22"/> <source>End-to-End Encryption</source> - <translation>Наскрізне шифрування</translation> - </message> - <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation>Наразі шифрування є експериментальним і може несподівано вийти з ладу. <br> -Будь ласка, зверніть увагу, що після цього його не можна буде вимкнути.</translation> + <translation type="unfinished">Наскрізне шифрування</translation> </message> <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> - <translation>Дозволи</translation> + <translation type="unfinished">Дозволи</translation> </message> <message> <location line="+6"/> <source>View and change the permissions in this room</source> - <translation>Переглянути та змінити дозволи в цій кімнаті</translation> + <translation type="unfinished">Переглянути та змінити дозволи в цій кімнаті</translation> </message> <message> <location line="+6"/> <source>Aliases</source> - <translation>Псевдоніми</translation> + <translation type="unfinished">Псевдоніми</translation> </message> <message> <location line="+6"/> <source>View and change the addresses/aliases of this room</source> - <translation>Переглянути та змінити адреси/псевдоніми цієї кімнати</translation> + <translation type="unfinished">Переглянути та змінити адреси/псевдоніми цієї кімнати</translation> </message> <message> <location line="+6"/> <source>Sticker & Emote Settings</source> - <translation>Налаштування наліпок і емоцій</translation> + <translation type="unfinished">Налаштування наліпок і емоцій</translation> </message> <message> <location line="+6"/> <source>Change what packs are enabled, remove packs, or create new ones</source> - <translation>Змінити увімкнені пакети, видалити пакети або створіть нові</translation> + <translation type="unfinished">Змінити увімкнені пакети, видалити пакети або створіть нові</translation> </message> <message> <location line="+6"/> <source>INFO</source> - <translation>ІНФО</translation> + <translation type="unfinished">ІНФО</translation> </message> <message> <location line="+9"/> <source>Internal ID</source> - <translation>Внутрішній ID</translation> + <translation type="unfinished">Внутрішній ID</translation> </message> <message> <location line="+16"/> <source>Copied to clipboard</source> - <translation>Скопійовано в буфер обміну</translation> + <translation type="unfinished">Скопійовано в буфер обміну</translation> </message> <message> <location line="+19"/> <source>Room Version</source> - <translation>Версія кімнати</translation> + <translation type="unfinished">Версія кімнати</translation> </message> <message> <location line="+19"/> <source>show less</source> - <translation>показати менше</translation> + <translation type="unfinished">показати менше</translation> </message> <message> <location line="+0"/> <source>show more</source> - <translation>показати більше</translation> + <translation type="unfinished">показати більше</translation> </message> </context> <context> @@ -3348,7 +3374,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>Щоб продовжити, введіть свій пароль для входу:</translation> </message> @@ -3440,7 +3466,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>Не вдалося підключитися до секретного сховища</translation> </message> @@ -3530,7 +3556,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>Помилка налаштування шифрування: %1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>Ключ ідентифікації змінено. Це порушує роботу E2EE, тому виходимо із системи.</translation> </message> @@ -3638,7 +3664,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>Успішна перевірка</translation> </message> @@ -3654,15 +3680,95 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished">Частина нитки розмови</translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished">%1 зробив голосовий виклик.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished">%1 здійснив відеодзвінок.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished">%1 зателефонував.</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished">%1 відповів на дзвінок.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished">%1 відхилив виклик.</translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished">%1 завершив виклик.</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished">%1 обговорює виклик...</translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished">Дозволити їм увійти</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished">Цю кімнату було замінено з такої причини: %1</translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished">Йти до кімнати заміни</translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished">Відредаговано</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished">Частина нитки розмови</translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>Помилка редагування повідомлення: %1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>Не вдалося зашифрувати подію, надсилання перервано!</translation> @@ -3713,7 +3819,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 дозволив членам наступних кімнат автоматично приєднатися до цієї кімнати: %2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 відкрив кімнату для гостей.</translation> </message> @@ -3723,7 +3829,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 закрив кімнату для гостьового доступу.</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 зробив історію кімнат читабельною. Події тепер можуть читати люди, які не приєдналися.</translation> </message> @@ -3743,7 +3849,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 зробив історію кімнати видимою для учасників після того, як вони приєдналися до кімнати.</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 змінив дозволи кімнати.</translation> @@ -3890,7 +3996,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 змінив рівень доступу до типу події "%2" з %3 на %4.</translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation>(порожньо)</translation> </message> @@ -3962,7 +4068,7 @@ Reason: %4</source> Причина: %4</translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation>%2 відкликав запрошення до %1.</translation> </message> @@ -4022,22 +4128,82 @@ Reason: %4</source> <translation>%1 відредагував свій стукіт.</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished">%2 змінив назву кімнати на: %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished">%2 змінив тему на: %2 {1 ?}</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished">%1 змінив закріплені повідомлення.</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished">%1 змінив адреси для цієї кімнати.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished">%1 змінив батьківські спільноти для цієї кімнати.</translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished">%1 створив і налаштував кімнату: %2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>Ви приєдналися до цієї кімнати.</translation> </message> <message> - <location line="+998"/> + <location line="+1019"/> <source>%1 made this room require an invitation to join.</source> <translation>%1 зробив так, щоб ця кімната потребувала запрошення, щоб приєднатися.</translation> </message> <message> - <location line="+654"/> + <location line="+618"/> <source>%1 invited %2.</source> <translation>%1 запрошено %2.</translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 змінив свій аватар і відображуване ім’я на %2.</translation> </message> @@ -4064,23 +4230,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation>Частина нитки розмови</translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> - <translation>Відредаговано</translation> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> + <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>Немає відкритих кімнат</translation> </message> @@ -4187,7 +4347,7 @@ Reason: %4</source> <translation>Назад до списку кімнат</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation>Показати або приховати закріплені повідомлення</translation> </message> @@ -4242,7 +4402,7 @@ Reason: %4</source> <translation>Налаштування</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation>Відкріпити</translation> </message> @@ -4268,24 +4428,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>Немає доступних потоків реєстрації!</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>Реєстрацію скасовано</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>Введіть дійсний токен реєстрації.</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>Неприпустимий токен</translation> </message> @@ -4293,7 +4453,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation> <numerusform>Завантажити файл</numerusform> @@ -4305,7 +4465,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>Вийти з пристрою %1</translation> </message> @@ -4315,7 +4475,12 @@ Reason: %4</source> <translation>Ви вийшли з цього пристрою.</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>Виберіть аватар</translation> </message> @@ -4335,7 +4500,7 @@ Reason: %4</source> <translation>Помилка під час читання файлу: %1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>Глобальний профіль користувача</translation> </message> @@ -4386,12 +4551,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>Перевірити</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>Почати приватний чат.</translation> </message> @@ -4407,11 +4572,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>Оновити список пристроїв.</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished">Пристрої</translation> </message> @@ -4444,8 +4619,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>За замовчуванням</translation> </message> @@ -4544,6 +4719,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished">Приховані події</translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation>Сповіщення на робочому столі</translation> </message> @@ -4734,6 +4919,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation>СПОВІЩЕННЯ</translation> </message> @@ -4798,7 +4988,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation>За замовчуванням</translation> </message> @@ -4882,6 +5072,11 @@ This will also enable or disable sending typing notifications to others.</source </message> <message> <location line="+8"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation>Сповіщати про отримані повідомлення, коли клієнт не сфокусований в даний момент.</translation> </message> @@ -4918,29 +5113,29 @@ OFF - square, ON - circle.</source> <translation>Автоматично відповідає на запити ключів від інших користувачів, якщо вони підтверджені, навіть якщо цей пристрій не повинен мати доступу до цих ключів.</translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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>Ключ для перевірки власних пристроїв. Якщо він кешований, перевірка одного з ваших пристроїв позначить його як перевірений для всіх інших ваших пристроїв і користувачів, які вас верифікували.</translation> </message> <message> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation>Показувати сповіщення при отриманні повідомлення. Зазвичай це призводить до того, що іконка програми на панелі завдань певним чином анімується.</translation> </message> <message> - <location line="-350"/> + <location line="-366"/> <source>Communities sidebar</source> <translation>Бічна панель спільнот</translation> </message> <message> - <location line="+42"/> + <location line="+46"/> <source>Show message counts for communities and tags</source> <translation>Показати кількість повідомлень для спільнот і тегів</translation> </message> <message> - <location line="+241"/> + <location line="+251"/> <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source> <translation>Встановити максимальну ширину повідомлень на часовій шкалі (у пікселях). Це може покращити читабельність на широкому екрані, коли Nheko максимізовано</translation> </message> @@ -4973,7 +5168,7 @@ Warning: If your homeserver does not support this, your rooms will never be mark Попередження: Якщо ваш домашній сервер не підтримує цю функцію, ваші кімнати ніколи не будуть позначені як прочитані!</translation> </message> <message> - <location line="+13"/> + <location line="+15"/> <source>Display an identicon instead of a letter when no avatar is set.</source> <translation>Відображати іконку замість літери, якщо аватарка не встановлена.</translation> </message> @@ -5031,7 +5226,7 @@ be blurred.</source> <translation>Завантажуйте ключі шифрування повідомлень із зашифрованого онлайн сховища ключів та завантажуйте їх до нього.</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation>Ключ для розшифрування резервних копій ключів в Інтернеті. Якщо він кешований, ви можете увімкнути резервне копіювання ключів в Інтернеті, щоб зберігати ключі шифрування на сервері в надійному зашифрованому вигляді.</translation> </message> @@ -5065,7 +5260,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation>Вибрати файл</translation> </message> @@ -5120,7 +5330,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>КЕШОВАНО</translation> </message> @@ -5150,7 +5360,17 @@ This setting will take effect upon restart.</source> <translation>ЗАПИТАТИ</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation>Назад</translation> </message> @@ -5233,29 +5453,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>Відкрити резервну копію в браузері</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>Скасувати</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>Підтвердити</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation>Відкрийте резервну копію, виконайте кроки та підтвердіть їх після завершення.</translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_vi.ts b/resources/langs/nheko_vi.ts index 2dc2179f..bba86cd0 100644 --- a/resources/langs/nheko_vi.ts +++ b/resources/langs/nheko_vi.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation type="unfinished"></translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation type="unfinished"></translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation type="unfinished"></translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation type="unfinished"></translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -207,7 +213,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation type="unfinished"></translation> </message> @@ -236,12 +242,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation type="unfinished"> @@ -249,7 +255,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation type="unfinished"></translation> </message> @@ -286,7 +292,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation type="unfinished"></translation> </message> <message> - <location line="+18"/> + <location line="+22"/> <source>Failed to restore OLM account. Please login again.</source> <translation type="unfinished"></translation> </message> @@ -304,7 +310,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation type="unfinished"></translation> </message> @@ -361,12 +367,12 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+30"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation type="unfinished"></translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation type="unfinished"></translation> </message> @@ -436,7 +442,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation type="unfinished"></translation> </message> @@ -733,7 +739,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation type="unfinished"></translation> </message> @@ -743,7 +749,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation type="unfinished"></translation> </message> @@ -829,7 +835,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation type="unfinished"></translation> </message> @@ -869,7 +875,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation type="unfinished"></translation> </message> @@ -993,7 +999,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation type="unfinished"></translation> </message> @@ -1044,7 +1050,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation type="unfinished"></translation> </message> @@ -1079,7 +1085,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation type="unfinished"></translation> </message> @@ -1087,12 +1093,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation type="unfinished"></translation> </message> @@ -1236,6 +1242,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1309,6 +1343,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1488,8 +1540,8 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> <translation type="unfinished"></translation> </message> <message> @@ -1529,7 +1581,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation type="unfinished"></translation> </message> @@ -1548,14 +1600,14 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> + <source>e.g @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation type="unfinished"></translation> </message> @@ -1586,13 +1638,13 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> + <source>yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> <translation type="unfinished"></translation> </message> <message> @@ -1610,7 +1662,7 @@ Example: https://server.my:8787</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> <translation type="unfinished"></translation> </message> <message> @@ -1687,7 +1739,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation type="unfinished"></translation> </message> @@ -1712,120 +1764,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1876,7 +1814,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation type="unfinished"></translation> </message> @@ -1911,12 +1849,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation type="unfinished"></translation> </message> @@ -1926,24 +1859,24 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation type="unfinished"></translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation type="unfinished"></translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation type="unfinished"></translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation type="unfinished"></translation> </message> @@ -2003,7 +1936,12 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation type="unfinished"></translation> </message> @@ -2026,7 +1964,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation type="unfinished"></translation> </message> @@ -2246,7 +2184,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation type="unfinished"></translation> </message> @@ -2303,9 +2241,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation type="unfinished"></translation> </message> @@ -2496,7 +2452,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation type="unfinished"></translation> </message> @@ -2514,7 +2470,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation type="unfinished"></translation> </message> @@ -2539,6 +2495,11 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation type="unfinished"></translation> @@ -2621,7 +2582,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation type="unfinished"></translation> @@ -2720,7 +2681,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation type="unfinished"></translation> </message> @@ -2736,6 +2697,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2743,7 +2752,17 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation type="unfinished"></translation> </message> @@ -2752,6 +2771,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation type="unfinished"></translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2804,7 +2828,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation type="unfinished"></translation> </message> @@ -2829,7 +2853,27 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation type="unfinished"></translation> @@ -2852,7 +2896,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation type="unfinished"></translation> </message> @@ -2868,6 +2912,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation type="unfinished"></translation> </message> @@ -2915,12 +2964,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation type="unfinished"> @@ -2958,45 +3007,64 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> + <location line="+92"/> + <source>This room is not encrypted!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>This user is verified.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>Moderator: %1</source> + <source>This user isn't verified, but is still using the same master key from the first time you met.</source> <translation type="unfinished"></translation> </message> <message> <location line="+2"/> - <source>User: %1</source> + <source>This user has unverified devices!</source> <translation type="unfinished"></translation> </message> +</context> +<context> + <name>RoomSettings</name> <message> - <location line="+20"/> - <source>This room is not encrypted!</source> + <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> + <source>Failed to enable encryption: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+4"/> - <source>This user is verified.</source> + <location line="+404"/> + <source>Select an avatar</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user isn't verified, but is still using the same master key from the first time you met.</source> + <location line="+0"/> + <source>All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+2"/> - <source>This user has unverified devices!</source> + <location line="+12"/> + <source>The selected file is not an image</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>Error while reading file: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+32"/> + <location line="+19"/> + <source>Failed to upload image: %s</source> <translation type="unfinished"></translation> </message> </context> <context> - <name>RoomSettings</name> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation type="unfinished"></translation> </message> @@ -3028,7 +3096,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> <translation type="unfinished"></translation> </message> @@ -3207,13 +3275,7 @@ Example: https://server.my:8787</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation type="unfinished"></translation> </message> @@ -3272,37 +3334,6 @@ Example: https://server.my:8787</source> <source>show more</source> <translation type="unfinished"></translation> </message> - <message> - <location filename="../../src/ui/RoomSettings.cpp" line="+236"/> - <source>Failed to enable encryption: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+404"/> - <source>Select an avatar</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+0"/> - <source>All Files (*)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>The selected file is not an image</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+5"/> - <source>Error while reading file: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+32"/> - <location line="+19"/> - <source>Failed to upload image: %s</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>RoomlistModel</name> @@ -3330,7 +3361,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation type="unfinished"></translation> </message> @@ -3422,7 +3453,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation type="unfinished"></translation> </message> @@ -3510,7 +3541,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation type="unfinished"></translation> </message> @@ -3618,7 +3649,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation type="unfinished"></translation> </message> @@ -3634,20 +3665,160 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1251"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+711"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+250"/> + <location line="+265"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation type="unfinished"></translation> @@ -3701,7 +3872,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation type="unfinished"></translation> </message> @@ -3711,7 +3882,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation type="unfinished"></translation> </message> @@ -3731,7 +3902,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation type="unfinished"></translation> @@ -3870,7 +4041,7 @@ If you choose verify, you need to have the other device available. If you choose <translation type="unfinished"></translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation type="unfinished"></translation> </message> @@ -3941,12 +4112,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+102"/> <source>%1 invited %2.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation type="unfinished"></translation> </message> @@ -4033,23 +4204,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> - <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation type="unfinished"></translation> - </message> + <name>TimelineSectionHeader</name> <message> - <location line="-18"/> - <source>Edited</source> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> <translation type="unfinished"></translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation type="unfinished"></translation> </message> @@ -4154,7 +4319,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation type="unfinished"></translation> </message> @@ -4209,7 +4374,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation type="unfinished"></translation> </message> @@ -4235,24 +4400,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation type="unfinished"></translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation type="unfinished"></translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation type="unfinished"></translation> </message> @@ -4260,7 +4425,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -4270,7 +4435,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation type="unfinished"></translation> </message> @@ -4321,12 +4486,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation type="unfinished"></translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation type="unfinished"></translation> </message> @@ -4342,11 +4507,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation type="unfinished"></translation> </message> @@ -4376,7 +4551,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation type="unfinished"></translation> </message> @@ -4386,7 +4561,12 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation type="unfinished"></translation> </message> @@ -4409,8 +4589,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4514,6 +4694,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation type="unfinished"></translation> </message> @@ -4709,6 +4899,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation type="unfinished"></translation> </message> @@ -4773,7 +4968,7 @@ Reason: %4</source> <translation type="unfinished"></translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation type="unfinished"></translation> </message> @@ -4884,6 +5079,11 @@ Warning: If your homeserver does not support this, your rooms will never be mark </message> <message> <location line="+4"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation type="unfinished"></translation> </message> @@ -4979,7 +5179,7 @@ be blurred.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation type="unfinished"></translation> </message> @@ -5016,7 +5216,22 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation type="unfinished"></translation> </message> @@ -5071,7 +5286,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation type="unfinished"></translation> </message> @@ -5101,7 +5316,17 @@ This setting will take effect upon restart.</source> <translation type="unfinished"></translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation type="unfinished"></translation> </message> @@ -5184,29 +5409,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/langs/nheko_zh_CN.ts b/resources/langs/nheko_zh_CN.ts index 040c7724..508d9915 100644 --- a/resources/langs/nheko_zh_CN.ts +++ b/resources/langs/nheko_zh_CN.ts @@ -4,13 +4,13 @@ <context> <name>ActiveCallBar</name> <message> - <location filename="../qml/voip/ActiveCallBar.qml" line="+107"/> + <location filename="../qml/voip/ActiveCallBar.qml" line="+103"/> <source>Calling...</source> <translation>呼叫中…</translation> </message> <message> - <location line="+10"/> - <location line="+10"/> + <location line="+9"/> + <location line="+9"/> <source>Connecting...</source> <translation>正在连接…</translation> </message> @@ -54,7 +54,7 @@ <context> <name>AliasEditor</name> <message> - <location filename="../qml/dialogs/AliasEditor.qml" line="+26"/> + <location filename="../qml/dialogs/AliasEditor.qml" line="+25"/> <source>Aliases to %1</source> <translation>%1 的别名</translation> </message> @@ -102,7 +102,7 @@ <context> <name>AllowedRoomsSettingsDialog</name> <message> - <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+26"/> + <location filename="../qml/dialogs/AllowedRoomsSettingsDialog.qml" line="+24"/> <source>Allowed rooms settings</source> <translation>已允许的聊天室设置</translation> </message> @@ -129,8 +129,14 @@ </context> <context> <name>Cache</name> + <message> + <location filename="../../src/Cache.cpp" line="+3143"/> + <source>%1 and %2</source> + <comment>RoomName</comment> + <translation>%1 和 %2</translation> + </message> <message numerus="yes"> - <location filename="../../src/Cache.cpp" line="+2968"/> + <location line="+2"/> <source>%1 and %n other(s)</source> <translation> <numerusform>%1 和另外 %n 人</numerusform> @@ -207,7 +213,7 @@ <context> <name>CallManager</name> <message> - <location filename="../../src/voip/CallManager.cpp" line="+877"/> + <location filename="../../src/voip/CallManager.cpp" line="+878"/> <source>X11</source> <translation>X11</translation> </message> @@ -231,12 +237,12 @@ </message> <message> <location line="+4"/> - <location line="+878"/> + <location line="+934"/> <source>Invited user: %1</source> <translation>邀请已发送:%1</translation> </message> <message numerus="yes"> - <location line="-631"/> + <location line="-687"/> <source>%n unread message(s) in room %1 </source> <translation> @@ -245,7 +251,7 @@ </translation> </message> <message> - <location line="+71"/> + <location line="+84"/> <source>Confirm logout</source> <translation>确认登出</translation> </message> @@ -260,7 +266,7 @@ <translation>未能打开数据库,账户将登出!</translation> </message> <message> - <location line="+262"/> + <location line="+305"/> <source>Knock on room</source> <translation>请求加入聊天室</translation> </message> @@ -286,12 +292,12 @@ </message> <message> <location line="+43"/> - <location line="+477"/> + <location line="+484"/> <source>Confirm invite</source> <translation>确认邀请</translation> </message> <message> - <location line="-476"/> + <location line="-483"/> <source>Do you really want to invite %1 (%2)?</source> <translation>你真的想要邀请 %1 (%2) 吗?</translation> </message> @@ -336,12 +342,12 @@ <translation>解封用户:%1</translation> </message> <message> - <location line="+382"/> + <location line="+389"/> <source>Do you really want to start a private chat with %1?</source> <translation>是否确认与 %1 开始私密聊天?</translation> </message> <message> - <location line="-934"/> + <location line="-984"/> <source>Cache migration failed!</source> <translation>缓存迁移失败!</translation> </message> @@ -365,7 +371,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover <translation>无法兼容缓存版本</translation> </message> <message> - <location line="+60"/> + <location line="+64"/> <source>Failed to restore OLM account. Please login again.</source> <translation>未能恢复 OLM 账户。请重新登录。</translation> </message> @@ -383,7 +389,7 @@ If you think this is a mistake, you can close Nheko instead to possibly recover </message> <message> <location line="+35"/> - <location line="+112"/> + <location line="+151"/> <source>Please try to login again: %1</source> <translation>请尝试再次登录:%1</translation> </message> @@ -737,7 +743,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CommunitiesList</name> <message> - <location filename="../qml/CommunitiesList.qml" line="+123"/> + <location filename="../qml/CommunitiesList.qml" line="+125"/> <source>Expand</source> <translation>展开</translation> </message> @@ -747,7 +753,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>收起</translation> </message> <message> - <location line="+87"/> + <location line="+85"/> <source>Do not show notification counts for this community or tag.</source> <translation>不显示此社区或标签的通知计数。</translation> </message> @@ -833,7 +839,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>ConfirmJoinRoomDialog</name> <message> - <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+19"/> + <location filename="../qml/dialogs/ConfirmJoinRoomDialog.qml" line="+18"/> <source>Confirm community join</source> <translation>确认加入社区</translation> </message> @@ -873,7 +879,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CreateDirect</name> <message> - <location filename="../qml/dialogs/CreateDirect.qml" line="+15"/> + <location filename="../qml/dialogs/CreateDirect.qml" line="+14"/> <source>Create Direct Chat</source> <translation>创建直接聊天</translation> </message> @@ -918,12 +924,12 @@ You may optionally provide a reason for others to accept your knock:</source> <message> <location line="+8"/> <source>Topic</source> - <translation>主题</translation> + <translation>话题</translation> </message> <message> <location line="+1"/> <source>No topic</source> - <translation>无主题</translation> + <translation>无话题</translation> </message> <message> <location line="+18"/> @@ -969,7 +975,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>CrossSigningSecrets</name> <message> - <location filename="../../src/ChatPage.cpp" line="+291"/> + <location filename="../../src/ChatPage.cpp" line="+298"/> <source>Decrypt secrets</source> <translation>解密密钥</translation> </message> @@ -997,7 +1003,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>DigitVerification</name> <message> - <location filename="../qml/device-verification/DigitVerification.qml" line="+11"/> + <location filename="../qml/device-verification/DigitVerification.qml" line="+10"/> <source>Verification Code</source> <translation>验证码</translation> </message> @@ -1048,7 +1054,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>Encrypted</name> <message> - <location filename="../qml/delegates/Encrypted.qml" line="+46"/> + <location filename="../qml/delegates/Encrypted.qml" line="+42"/> <source>There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient.</source> <translation>没有找到解锁这条消息的密钥。我们尝试过自动获取密钥,如果你着急你可以持续尝试获取密钥。</translation> </message> @@ -1083,7 +1089,7 @@ You may optionally provide a reason for others to accept your knock:</source> <translation>未知的解密错误</translation> </message> <message> - <location line="+9"/> + <location line="+12"/> <source>Request key</source> <translation>请求密钥</translation> </message> @@ -1091,12 +1097,12 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>EncryptionEnabled</name> <message> - <location filename="../qml/delegates/EncryptionEnabled.qml" line="+41"/> + <location filename="../qml/delegates/EncryptionEnabled.qml" line="+38"/> <source>%1 enabled end-to-end encryption</source> <translation>%1 启用了端对端加密</translation> </message> <message> - <location line="+8"/> + <location line="+9"/> <source>Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.</source> <translation>加密使得消息仅能被你所发送的人阅读,保障了你的信息安全。为了额外安全性,如果你想确保你是在与正确的人交谈,你可以在现实生活中验证他们。</translation> </message> @@ -1240,6 +1246,34 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>FallbackAuthDialog</name> + <message> + <location filename="../qml/dialogs/FallbackAuthDialog.qml" line="+25"/> + <source>Fallback authentication</source> + <translation>备用身份验证</translation> + </message> + <message> + <location line="+15"/> + <source>Open the fallback, follow the steps, and confirm after completing them.</source> + <translation>打开备用身份验证,按照步骤进行操作,并在完成后进行确认。</translation> + </message> + <message> + <location line="+8"/> + <source>Open Fallback in Browser</source> + <translation>在浏览器中打开备用身份验证</translation> + </message> + <message> + <location line="+5"/> + <source>Cancel</source> + <translation>取消</translation> + </message> + <message> + <location line="+5"/> + <source>Confirm</source> + <translation>确认</translation> + </message> +</context> +<context> <name>ForwardCompleter</name> <message> <location filename="../qml/ForwardCompleter.qml" line="+52"/> @@ -1313,6 +1347,24 @@ You may optionally provide a reason for others to accept your knock:</source> </message> </context> <context> + <name>IgnoredUsers</name> + <message> + <location filename="../qml/dialogs/IgnoredUsers.qml" line="+16"/> + <source>Ignored users</source> + <translation>忽略的用户</translation> + </message> + <message> + <location line="+20"/> + <source>Ignoring a user hides their messages (they can still see yours!).</source> + <translation>忽略用户会隐藏他们的消息(他们仍然可以看到你的消息!)。</translation> + </message> + <message> + <location line="+31"/> + <source>Stop Ignoring.</source> + <translation>停止忽略。</translation> + </message> +</context> +<context> <name>ImagePackEditorDialog</name> <message> <location filename="../qml/dialogs/ImagePackEditorDialog.qml" line="+22"/> @@ -1492,9 +1544,9 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+13"/> - <source>@joe:matrix.org</source> - <comment>Example user id. The name 'joe' can be localized however you want.</comment> - <translation>@joe:matrix.org</translation> + <source>@user:yourserver.example.com</source> + <comment>Example user id. The name 'user' can be localized however you want.</comment> + <translation>@user:yourserver.example.com</translation> </message> <message> <location line="+42"/> @@ -1533,7 +1585,7 @@ You may optionally provide a reason for others to accept your knock:</source> <context> <name>LeaveRoomDialog</name> <message> - <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+17"/> + <location filename="../qml/dialogs/LeaveRoomDialog.qml" line="+15"/> <source>Leave room</source> <translation>离开聊天室</translation> </message> @@ -1550,8 +1602,8 @@ You may optionally provide a reason for others to accept your knock:</source> <location line="+6"/> <location line="+64"/> <location line="+127"/> - <source>You have entered an invalid Matrix ID e.g @joe:matrix.org</source> - <translation>你输入了无效的Matrix ID 例如 @joe:matrix.org</translation> + <source>You have entered an invalid Matrix ID e.g. @user:yourserver.example.com</source> + <translation>你输入的 Matrix ID 无效,例如 @user:yourserver.example.com</translation> </message> <message> <location line="-157"/> @@ -1630,18 +1682,18 @@ You may optionally provide a reason for others to accept your knock:</source> </message> <message> <location line="+1"/> - <source>e.g @joe:matrix.org</source> - <translation>例如 @joe:matrix.org</translation> + <source>e.g @user:yourserver.example.com</source> + <translation>例如 @user:yourserver.example.com</translation> </message> <message> <location line="+3"/> <source>Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :. You can also put your homeserver address there if your server doesn't support .well-known lookup. -Example: @user:server.my +Example: @user:yourserver.example.com If Nheko fails to discover your homeserver, it will show you a field to enter the server manually.</source> <translation>你的登录名。一个 mxid 应以 @ 开头,后跟用户 ID。在用户 ID 之后,你需要在一个 : 之后包含你的服务器名称。 如果你的服务器不支持 .well-known 查询,你也可以输入你的主服务器地址。 -例如:@user:server.my +例如 @user:yourserver.example.com 如果 Nheko 未能发现你的主服务器,它将显示一个字段,让你手动输入服务器。</translation> </message> <message> @@ -1671,15 +1723,15 @@ If Nheko fails to discover your homeserver, it will show you a field to enter th </message> <message> <location line="+1"/> - <source>server.my:8787</source> - <translation>server.my:8787</translation> + <source>yourserver.example.com:8787</source> + <translation>yourserver.example.com:8787</translation> </message> <message> <location line="+3"/> - <source>The address that can be used to contact you homeserver's client API. -Example: https://server.my:8787</source> - <translation>可用于联系你的主服务器客户端 API 的地址。 -示例:https://server.my:8787</translation> + <source>The address that can be used to contact your homeserver's client API. +Example: https://yourserver.example.com:8787</source> + <translation>用于联系主服务器客户端 API 的地址。 +例如:https://yourserver.example.com:8787</translation> </message> <message> <location line="+32"/> @@ -1695,7 +1747,7 @@ Example: https://server.my:8787</source> <context> <name>LogoutDialog</name> <message> - <location filename="../qml/dialogs/LogoutDialog.qml" line="+13"/> + <location filename="../qml/dialogs/LogoutDialog.qml" line="+12"/> <source>Log out</source> <translation>登出</translation> </message> @@ -1720,120 +1772,6 @@ Example: https://server.my:8787</source> </message> </context> <context> - <name>MessageDelegate</name> - <message> - <location filename="../qml/delegates/MessageDelegate.qml" line="+79"/> - <source>This room was replaced for the following reason: %1</source> - <translation>此聊天室由于以下原因被替换:%1</translation> - </message> - <message> - <location line="+5"/> - <source>Go to replacement room</source> - <translation>转到更换后的聊天室</translation> - </message> - <message> - <location line="+176"/> - <source>%1 removed a message</source> - <translation>%1 移除了一条消息</translation> - </message> - <message> - <location line="+34"/> - <source>%1 changed which servers are allowed in this room.</source> - <translation>%1 更改了允许在此聊天室使用的服务器。</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the room name to: %1</source> - <translation>%2 将聊天室名称更改为:%1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the room name</source> - <translation>%1 移除了聊天室名称</translation> - </message> - <message> - <location line="+14"/> - <source>%2 changed the topic to: %1</source> - <translation>%2 将主题更改为:%1</translation> - </message> - <message> - <location line="+0"/> - <source>%1 removed the topic</source> - <translation>%1 移除了主题</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the room avatar</source> - <translation>%1 更改了聊天室头像</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the pinned messages.</source> - <translation>%1 更改了置顶消息。</translation> - </message> - <message> - <location line="+29"/> - <source>%1 changed the addresses for this room.</source> - <translation>%1 更改了此聊天室的地址。</translation> - </message> - <message> - <location line="+14"/> - <source>%1 changed the parent communities for this room.</source> - <translation>%1 更改了此聊天室的父社区。</translation> - </message> - <message> - <location line="+14"/> - <source>%1 created and configured room: %2</source> - <translation>%1 创建并配置了聊天室:%2</translation> - </message> - <message> - <location line="+17"/> - <source>%1 placed a voice call.</source> - <translation>%1 发起了语音通话。</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a video call.</source> - <translation>%1 发起了视频通话。</translation> - </message> - <message> - <location line="+2"/> - <source>%1 placed a call.</source> - <translation>%1 发起了通话。</translation> - </message> - <message> - <location line="+16"/> - <source>%1 answered the call.</source> - <translation>%1 接听了通话。</translation> - </message> - <message> - <location line="+14"/> - <source>%1 rejected the call.</source> - <translation>%1 拒绝了通话。</translation> - </message> - <message> - <location line="+14"/> - <source>%1 select answer</source> - <translation>%1 选择答案</translation> - </message> - <message> - <location line="+14"/> - <source>%1 ended the call.</source> - <translation>%1 已结束通话。</translation> - </message> - <message> - <location line="+14"/> - <location line="+14"/> - <source>%1 is negotiating the call...</source> - <translation>%1 正在接通中...</translation> - </message> - <message> - <location line="+122"/> - <source>Allow them in</source> - <translation>允许加入</translation> - </message> -</context> -<context> <name>MessageInput</name> <message> <location filename="../qml/MessageInput.qml" line="+47"/> @@ -1884,7 +1822,7 @@ Example: https://server.my:8787</source> <context> <name>MessageView</name> <message> - <location filename="../qml/MessageView.qml" line="+346"/> + <location filename="../qml/MessageView.qml" line="+204"/> <source>Edit</source> <translation>编辑</translation> </message> @@ -1919,12 +1857,7 @@ Example: https://server.my:8787</source> <translation>选项</translation> </message> <message> - <location line="+187"/> - <source>%1's status message</source> - <translation>%1 的状态消息</translation> - </message> - <message> - <location line="+69"/> + <location line="+130"/> <source>Enter reason for removal or hit enter for no reason:</source> <translation>输入移除理由或按回车键不输入理由:</translation> </message> @@ -1934,24 +1867,24 @@ Example: https://server.my:8787</source> <translation>移除理由</translation> </message> <message> - <location line="+9"/> + <location line="+15"/> <source>Go to &message</source> <translation>转到消息(&m)</translation> </message> <message> <location line="+10"/> - <location line="+138"/> + <location line="+148"/> <source>&Copy</source> <translation>复制(&C)</translation> </message> <message> - <location line="-131"/> - <location line="+138"/> + <location line="-141"/> + <location line="+148"/> <source>Copy &link location</source> <translation>复制链接位置(&l)</translation> </message> <message> - <location line="-130"/> + <location line="-140"/> <source>Re&act</source> <translation>回应(&a)</translation> </message> @@ -2011,7 +1944,12 @@ Example: https://server.my:8787</source> <translation>移除消息(&v)</translation> </message> <message> - <location line="+13"/> + <location line="+12"/> + <source>Report message</source> + <translation>举报消息</translation> + </message> + <message> + <location line="+11"/> <source>&Save as</source> <translation>另存为(&S)</translation> </message> @@ -2034,7 +1972,7 @@ Example: https://server.my:8787</source> <context> <name>NewVerificationRequest</name> <message> - <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+11"/> + <location filename="../qml/device-verification/NewVerificationRequest.qml" line="+10"/> <source>Send Verification Request</source> <translation>发送验证请求</translation> </message> @@ -2254,7 +2192,7 @@ Example: https://server.my:8787</source> <context> <name>PowerLevelSpacesApplyDialog</name> <message> - <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+27"/> + <location filename="../qml/dialogs/PowerLevelSpacesApplyDialog.qml" line="+25"/> <source>Apply permission changes</source> <translation>应用权限更改</translation> </message> @@ -2311,9 +2249,27 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>PowerlevelIndicator</name> + <message> + <location filename="../qml/components/PowerlevelIndicator.qml" line="+30"/> + <source>Administrator: %1</source> + <translation>管理员:%1</translation> + </message> + <message> + <location line="+2"/> + <source>Moderator: %1</source> + <translation>协管员:%1</translation> + </message> + <message> + <location line="+2"/> + <source>User: %1</source> + <translation>用户:%1</translation> + </message> +</context> +<context> <name>PowerlevelsTypeListModel</name> <message> - <location line="-467"/> + <location filename="../../src/PowerlevelsEditModels.cpp" line="-467"/> <source>Other events</source> <translation>其他事件</translation> </message> @@ -2405,7 +2361,7 @@ Example: https://server.my:8787</source> <message> <location line="+2"/> <source>Change the rooms topic</source> - <translation>更改聊天室主题</translation> + <translation>更改聊天室话题</translation> </message> <message> <location line="+2"/> @@ -2504,7 +2460,7 @@ Example: https://server.my:8787</source> <context> <name>QCoreApplication</name> <message> - <location filename="../../src/main.cpp" line="+235"/> + <location filename="../../src/main.cpp" line="+239"/> <source>Create a unique profile which allows you to log into several accounts at the same time and start multiple instances of nheko.</source> <translation>创建一个独特的配置文件,允许你同时登录多个帐户并启动多个 Nheko 实例。</translation> </message> @@ -2522,7 +2478,7 @@ Example: https://server.my:8787</source> <context> <name>QObject</name> <message> - <location line="-26"/> + <location line="-30"/> <source>Alias for '--log-level trace'.</source> <translation>'--log-level trace' 的别名。</translation> </message> @@ -2547,6 +2503,11 @@ Example: https://server.my:8787</source> <translation>类型</translation> </message> <message> + <location line="+4"/> + <source>Recompacts the database which might improve performance.</source> + <translation>重新压缩数据库,可能会提高性能。</translation> + </message> + <message> <location filename="../../src/notifications/ManagerMac.cpp" line="-58"/> <source>Respond</source> <translation>响应</translation> @@ -2684,7 +2645,7 @@ Example: https://server.my:8787</source> <translation>用户名不能为空,并且只能包含字符 a-z、0-9、.、_、=、- 和 /。</translation> </message> <message> - <location line="+21"/> + <location line="+19"/> <location line="+102"/> <source>Back</source> <translation>返回</translation> @@ -2728,7 +2689,7 @@ Example: https://server.my:8787</source> <context> <name>ReplyPopup</name> <message> - <location filename="../qml/ReplyPopup.qml" line="+54"/> + <location filename="../qml/ReplyPopup.qml" line="+40"/> <source>Close</source> <translation>关闭</translation> </message> @@ -2744,6 +2705,54 @@ Example: https://server.my:8787</source> </message> </context> <context> + <name>ReportMessage</name> + <message> + <location filename="../qml/dialogs/ReportMessage.qml" line="+15"/> + <source>Report message</source> + <translation>举报消息</translation> + </message> + <message> + <location line="+15"/> + <source>This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.</source> + <translation>你举报的这条消息将发送给你所在服务器的管理员审核。请注意,并非所有服务器的管理员都会审核所举报的内容。如有必要,你还应要求聊天室的协管员删除内容。</translation> + </message> + <message> + <location line="+4"/> + <source>Enter your reason for reporting:</source> + <translation>输入你举报的理由:</translation> + </message> + <message> + <location line="+10"/> + <source>How bad is the message?</source> + <translation>这条信息有多糟糕?</translation> + </message> + <message> + <location line="+18"/> + <source>Not bad</source> + <translation>还行</translation> + </message> + <message> + <location line="+2"/> + <source>Mild</source> + <translation>轻微</translation> + </message> + <message> + <location line="+2"/> + <source>Bad</source> + <translation>糟糕</translation> + </message> + <message> + <location line="+2"/> + <source>Serious</source> + <translation>严重</translation> + </message> + <message> + <location line="+2"/> + <source>Extremely serious</source> + <translation>非常严重</translation> + </message> +</context> +<context> <name>RoomDirectory</name> <message> <location filename="../qml/dialogs/RoomDirectory.qml" line="+24"/> @@ -2751,7 +2760,17 @@ Example: https://server.my:8787</source> <translation>探索公共聊天室</translation> </message> <message> - <location line="+138"/> + <location line="+92"/> + <source>Join</source> + <translation>加入</translation> + </message> + <message> + <location line="+0"/> + <source>Open</source> + <translation>打开</translation> + </message> + <message> + <location line="+54"/> <source>Search for public rooms</source> <translation>搜索公共聊天室</translation> </message> @@ -2760,6 +2779,11 @@ Example: https://server.my:8787</source> <source>Choose custom homeserver</source> <translation>选择自定义主服务器</translation> </message> + <message> + <location line="+18"/> + <source>Close</source> + <translation>关闭</translation> + </message> </context> <context> <name>RoomInfo</name> @@ -2812,7 +2836,7 @@ Example: https://server.my:8787</source> <translation>用户设置</translation> </message> <message> - <location line="+95"/> + <location line="+94"/> <source>Logout</source> <translation>登出</translation> </message> @@ -2837,7 +2861,27 @@ Example: https://server.my:8787</source> <translation>设置状态信息</translation> </message> <message> - <location line="+52"/> + <location line="+11"/> + <source>Automatic online status</source> + <translation>自动在线状态</translation> + </message> + <message> + <location line="+7"/> + <source>Online</source> + <translation>在线</translation> + </message> + <message> + <location line="+7"/> + <source>Unavailable</source> + <translation>不可用</translation> + </message> + <message> + <location line="+7"/> + <source>Offline</source> + <translation>离线</translation> + </message> + <message> + <location line="+54"/> <source>Encryption not set up</source> <extracomment>Cross-signing setup has not run yet.</extracomment> <translation>加密功能未设置</translation> @@ -2860,7 +2904,7 @@ Example: https://server.my:8787</source> <translation>关闭</translation> </message> <message> - <location line="+372"/> + <location line="+374"/> <source>Enter the tag you want to use:</source> <translation>输入你想使用的标签:</translation> </message> @@ -2876,6 +2920,11 @@ Example: https://server.my:8787</source> </message> <message> <location line="+12"/> + <source>Mark as read</source> + <translation>标为已读</translation> + </message> + <message> + <location line="+5"/> <source>Room settings</source> <translation>聊天室设置</translation> </message> @@ -2923,12 +2972,12 @@ Example: https://server.my:8787</source> <context> <name>RoomMembers</name> <message> - <location filename="../qml/dialogs/RoomMembers.qml" line="+19"/> + <location filename="../qml/dialogs/RoomMembers.qml" line="+20"/> <source>Members of %1</source> <translation>%1 的成员</translation> </message> <message numerus="yes"> - <location line="+31"/> + <location line="+32"/> <source>%n people in %1</source> <comment>Summary above list of members</comment> <translation> @@ -2966,22 +3015,7 @@ Example: https://server.my:8787</source> <translation>权限等级</translation> </message> <message> - <location line="+98"/> - <source>Administrator: %1</source> - <translation>管理员:%1</translation> - </message> - <message> - <location line="+2"/> - <source>Moderator: %1</source> - <translation>协管员:%1</translation> - </message> - <message> - <location line="+2"/> - <source>User: %1</source> - <translation>用户:%1</translation> - </message> - <message> - <location line="+20"/> + <location line="+92"/> <source>This room is not encrypted!</source> <translation>此聊天室未加密!</translation> </message> @@ -3034,8 +3068,11 @@ Example: https://server.my:8787</source> <source>Failed to upload image: %s</source> <translation>未能上传图像:%s</translation> </message> +</context> +<context> + <name>RoomSettingsDialog</name> <message> - <location filename="../qml/dialogs/RoomSettings.qml" line="+26"/> + <location filename="../qml/dialogs/RoomSettingsDialog.qml" line="+26"/> <source>Room Settings</source> <translation>聊天室设置</translation> </message> @@ -3064,12 +3101,12 @@ Example: https://server.my:8787</source> <message> <location line="+24"/> <source>No topic set</source> - <translation>未设置主题</translation> + <translation>未设置话题</translation> </message> <message> - <location line="+21"/> + <location line="+20"/> <source>Change topic of this room</source> - <translation>更改此聊天室的主题</translation> + <translation>更改此聊天室的话题</translation> </message> <message> <location line="+31"/> @@ -3180,7 +3217,7 @@ Example: https://server.my:8787</source> <message> <location line="+7"/> <source>They got invited</source> - <translation>他们已被邀请</translation> + <translation>他们被邀请</translation> </message> <message> <location line="+1"/> @@ -3190,12 +3227,12 @@ Example: https://server.my:8787</source> <message> <location line="+7"/> <source>They joined</source> - <translation>他们已加入</translation> + <translation>他们加入</translation> </message> <message> <location line="+1"/> <source>Members can only see messages since after they joined.</source> - <translation>成员只能看到从他们加入后的信息。</translation> + <translation>成员只能看到从他们加入后的消息。</translation> </message> <message> <location line="+10"/> @@ -3246,14 +3283,7 @@ Example: https://server.my:8787</source> <translation>端到端加密</translation> </message> <message> - <location line="+1"/> - <source>Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.</source> - <translation>加密目前是实验性的,可能会出现意外的崩坏。 <br> -请注意,启用以后就不能禁用了。</translation> - </message> - <message> - <location line="+16"/> + <location line="+17"/> <source>Permission</source> <translation>权限</translation> </message> @@ -3339,7 +3369,7 @@ Example: https://server.my:8787</source> <context> <name>Root</name> <message> - <location filename="../qml/Root.qml" line="+313"/> + <location filename="../qml/Root.qml" line="+308"/> <source>Please enter your login password to continue:</source> <translation>请输入你的登录密码以继续:</translation> </message> @@ -3431,7 +3461,7 @@ Example: https://server.my:8787</source> <context> <name>SecretStorage</name> <message> - <location filename="../../src/Cache.cpp" line="-4856"/> + <location filename="../../src/Cache.cpp" line="-4930"/> <source>Failed to connect to secret storage</source> <translation>未能连接秘密存储</translation> </message> @@ -3521,7 +3551,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>加密设置失败:%1</translation> </message> <message> - <location line="+156"/> + <location line="+158"/> <source>Identity key changed. This breaks E2EE, so logging out.</source> <translation>身份密钥已改变。此操作破坏了 E2EE,因此请登出。</translation> </message> @@ -3629,7 +3659,7 @@ If you choose verify, you need to have the other device available. If you choose <context> <name>Success</name> <message> - <location filename="../qml/device-verification/Success.qml" line="+11"/> + <location filename="../qml/device-verification/Success.qml" line="+10"/> <source>Successful Verification</source> <translation>验证成功</translation> </message> @@ -3645,15 +3675,95 @@ If you choose verify, you need to have the other device available. If you choose </message> </context> <context> + <name>TimelineDefaultMessageStyle</name> + <message> + <location filename="../qml/TimelineDefaultMessageStyle.qml" line="+167"/> + <source>Part of a thread</source> + <translation>消息列的一部分</translation> + </message> +</context> +<context> + <name>TimelineEvent</name> + <message> + <location filename="../qml/TimelineEvent.qml" line="+87"/> + <source>%1 placed a voice call.</source> + <translation>%1 发起了语音通话。</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a video call.</source> + <translation>%1 发起了视频通话。</translation> + </message> + <message> + <location line="+2"/> + <source>%1 placed a call.</source> + <translation>%1 发起了通话。</translation> + </message> + <message> + <location line="+22"/> + <source>%1 answered the call.</source> + <translation>%1 接听了通话。</translation> + </message> + <message> + <location line="+2"/> + <source>%1 rejected the call.</source> + <translation>%1 拒绝了通话。</translation> + </message> + <message> + <location line="+2"/> + <source>%1 selected answer.</source> + <translation>%1 选择了选项</translation> + </message> + <message> + <location line="+2"/> + <source>%1 ended the call.</source> + <translation>%1 已结束通话。</translation> + </message> + <message> + <location line="+2"/> + <location line="+2"/> + <source>%1 is negotiating the call...</source> + <translation>%1 正在接通中...</translation> + </message> + <message> + <location line="+91"/> + <source>Allow them in</source> + <translation>允许加入</translation> + </message> + <message> + <location line="+22"/> + <source>This room was replaced for the following reason: %1</source> + <translation>此聊天室由于以下原因被替换:%1</translation> + </message> + <message> + <location line="+8"/> + <source>Go to replacement room</source> + <translation>转到更换后的聊天室</translation> + </message> +</context> +<context> + <name>TimelineMetadata</name> + <message> + <location filename="../qml/TimelineMetadata.qml" line="+40"/> + <source>Edited</source> + <translation>已编辑</translation> + </message> + <message> + <location line="+16"/> + <source>Part of a thread</source> + <translation>消息列的一部分</translation> + </message> +</context> +<context> <name>TimelineModel</name> <message> - <location filename="../../src/timeline/TimelineModel.cpp" line="+1501"/> + <location filename="../../src/timeline/TimelineModel.cpp" line="+1637"/> <location line="+17"/> <source>Message redaction failed: %1</source> <translation>删除消息失败:%1</translation> </message> <message> - <location line="+115"/> + <location line="+121"/> <location line="+5"/> <source>Failed to encrypt event, sending aborted!</source> <translation>未能加密事件,发送中止!</translation> @@ -3702,7 +3812,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 允许下列聊天室的成员自动加入此聊天室:%2</translation> </message> <message> - <location line="+26"/> + <location line="+19"/> <source>%1 made the room open to guests.</source> <translation>%1 使聊天室对访客开放。</translation> </message> @@ -3712,7 +3822,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 已禁止聊天室对访客开放访问。</translation> </message> <message> - <location line="+23"/> + <location line="+15"/> <source>%1 made the room history world readable. Events may be now read by non-joined people.</source> <translation>%1 使聊天室历史消息变得可读。未加入的人现在可以阅读事件。</translation> </message> @@ -3732,7 +3842,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 已设置仅成员从加入开始能够阅读此聊天室中的历史消息。</translation> </message> <message> - <location line="+35"/> + <location line="+28"/> <location line="+244"/> <source>%1 has changed the room's permissions.</source> <translation>%1 已更改聊天室的权限。</translation> @@ -3871,7 +3981,7 @@ If you choose verify, you need to have the other device available. If you choose <translation>%1 已将事件类型 "%2" 的权限等级从 %3 更改为 %4。</translation> </message> <message> - <location line="+66"/> + <location line="+59"/> <source>(empty)</source> <translation>(空白)</translation> </message> @@ -3943,7 +4053,7 @@ Reason: %4</source> 理由:%4</translation> </message> <message> - <location line="+152"/> + <location line="+144"/> <source>%2 revoked the invite to %1.</source> <translation>%2 撤销了对 %1 的邀请。</translation> </message> @@ -4003,22 +4113,82 @@ Reason: %4</source> <translation>%1 删除了其加入请求。</translation> </message> <message> - <location line="-1700"/> + <location line="-2345"/> + <source>%1 changed which servers are allowed in this room.</source> + <translation>%1 更改了允许在此聊天室使用的服务器。</translation> + </message> + <message> + <location line="+4"/> + <source>%1 removed the room name.</source> + <translation>%1 移除了聊天室名称。</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the room name to: %2</source> + <translation>%1 将聊天室名称更改为:%2</translation> + </message> + <message> + <location line="+5"/> + <source>%1 removed the topic.</source> + <translation>%1 移除了话题。</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the topic to: %2</source> + <translation>%1 将话题更改为:%2</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the room avatar to: %2</source> + <translation>%1 将聊天室头像更改为:%2</translation> + </message> + <message> + <location line="+6"/> + <source>%1 removed the room avatar.</source> + <translation>%1 移除了聊天室头像。</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the pinned messages.</source> + <translation>%1 更改了置顶消息。</translation> + </message> + <message> + <location line="+5"/> + <source>%1 changed the addresses for this room.</source> + <translation>%1 更改了此聊天室的地址。</translation> + </message> + <message> + <location line="+3"/> + <source>%1 changed the parent communities for this room.</source> + <translation>%1 更改了此聊天室的父社区。</translation> + </message> + <message> + <location line="+3"/> + <source>%1 created and configured room: %2</source> + <translation>%1 创建并配置了聊天室:%2</translation> + </message> + <message> + <location line="+18"/> + <source>%1 changed unknown state event %2.</source> + <translation>%1 更改了未知状态事件 %2。</translation> + </message> + <message> + <location line="+603"/> <source>You joined this room.</source> <translation>你已加入此聊天室。</translation> </message> <message> - <location line="+998"/> + <location line="+1019"/> <source>%1 made this room require an invitation to join.</source> <translation>%1 使此聊天室需要邀请才能加入。</translation> </message> <message> - <location line="+654"/> + <location line="+618"/> <source>%1 invited %2.</source> <translation>%1 邀请了 %2。</translation> </message> <message> - <location line="+12"/> + <location line="+11"/> <source>%1 has changed their avatar and changed their display name to %2.</source> <translation>%1 已更改其头像并将其昵称更改为 %2。</translation> </message> @@ -4045,23 +4215,17 @@ Reason: %4</source> </message> </context> <context> - <name>TimelineRow</name> + <name>TimelineSectionHeader</name> <message> - <location filename="../qml/TimelineRow.qml" line="+107"/> - <location line="+171"/> - <source>Part of a thread</source> - <translation>消息列的一部分</translation> - </message> - <message> - <location line="-18"/> - <source>Edited</source> - <translation>已编辑</translation> + <location filename="../qml/TimelineSectionHeader.qml" line="+138"/> + <source>%1's status message</source> + <translation>%1 的状态消息</translation> </message> </context> <context> <name>TimelineView</name> <message> - <location filename="../qml/TimelineView.qml" line="+53"/> + <location filename="../qml/TimelineView.qml" line="+49"/> <source>No room open</source> <translation>未打开聊天室</translation> </message> @@ -4166,7 +4330,7 @@ Reason: %4</source> <translation>返回聊天室列表</translation> </message> <message> - <location line="+55"/> + <location line="+57"/> <source>Show or hide pinned messages</source> <translation>显示或隐藏置顶消息</translation> </message> @@ -4221,7 +4385,7 @@ Reason: %4</source> <translation>设置</translation> </message> <message> - <location line="+67"/> + <location line="+52"/> <source>Unpin</source> <translation>取消置顶</translation> </message> @@ -4247,24 +4411,24 @@ Reason: %4</source> <context> <name>UIA</name> <message> - <location filename="../../src/ui/UIA.cpp" line="+59"/> + <location filename="../../src/ui/UIA.cpp" line="+57"/> <source>No available registration flows!</source> <translation>没有可用的注册流程!</translation> </message> <message> <location line="+50"/> <location line="+22"/> - <location line="+17"/> + <location line="+13"/> <source>Registration aborted</source> <translation>注册已终止</translation> </message> <message> - <location line="-27"/> + <location line="-23"/> <source>Please enter a valid registration token.</source> <translation>请输入有效的注册令牌。</translation> </message> <message> - <location line="+165"/> + <location line="+160"/> <source>Invalid token</source> <translation>无效令牌</translation> </message> @@ -4272,7 +4436,7 @@ Reason: %4</source> <context> <name>UploadBox</name> <message numerus="yes"> - <location filename="../qml/UploadBox.qml" line="+92"/> + <location filename="../qml/UploadBox.qml" line="+90"/> <source>Upload %n file(s)</source> <translation> <numerusform>上传文件</numerusform> @@ -4282,7 +4446,7 @@ Reason: %4</source> <context> <name>UserProfile</name> <message> - <location filename="../../src/ui/UserProfile.cpp" line="+204"/> + <location filename="../../src/ui/UserProfile.cpp" line="+217"/> <source>Sign out device %1</source> <translation>登出设备 %1</translation> </message> @@ -4292,7 +4456,12 @@ Reason: %4</source> <translation>你已登出此设备。</translation> </message> <message> - <location line="+222"/> + <location line="+50"/> + <source>Failed to ignore "%1": %2</source> + <translation>未能忽略 "%1":%2</translation> + </message> + <message> + <location line="+211"/> <source>Select an avatar</source> <translation>选择一个头像</translation> </message> @@ -4312,7 +4481,7 @@ Reason: %4</source> <translation>读取文件时出错:%1</translation> </message> <message> - <location filename="../qml/dialogs/UserProfile.qml" line="+26"/> + <location filename="../qml/dialogs/UserProfile.qml" line="+25"/> <source>Global User Profile</source> <translation>全局用户资料</translation> </message> @@ -4363,12 +4532,12 @@ Reason: %4</source> </message> <message> <location line="+9"/> - <location line="+232"/> + <location line="+243"/> <source>Verify</source> <translation>验证</translation> </message> <message> - <location line="-192"/> + <location line="-203"/> <source>Start a private chat.</source> <translation>开始私聊。</translation> </message> @@ -4384,11 +4553,21 @@ Reason: %4</source> </message> <message> <location line="+11"/> + <source>Unignore the user.</source> + <translation>取消忽略用户。</translation> + </message> + <message> + <location line="+0"/> + <source>Ignore the user.</source> + <translation>忽略用户。</translation> + </message> + <message> + <location line="+12"/> <source>Refresh device list.</source> <translation>刷新设备列表。</translation> </message> <message> - <location line="+15"/> + <location line="+14"/> <source>Devices</source> <translation>设备</translation> </message> @@ -4421,8 +4600,8 @@ Reason: %4</source> <context> <name>UserSettings</name> <message> - <location filename="../../src/UserSettingsPage.cpp" line="+599"/> - <location filename="../../src/UserSettingsPage.h" line="+276"/> + <location filename="../../src/UserSettingsPage.cpp" line="+598"/> + <location filename="../../src/UserSettingsPage.h" line="+267"/> <source>Default</source> <translation>默认</translation> </message> @@ -4521,6 +4700,16 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>Hidden events</source> + <translation>隐藏事件</translation> + </message> + <message> + <location line="+2"/> + <source>Ignored users</source> + <translation>已忽略用户</translation> + </message> + <message> + <location line="+2"/> <source>Desktop notifications</source> <translation>桌面通知</translation> </message> @@ -4711,6 +4900,11 @@ Reason: %4</source> </message> <message> <location line="+2"/> + <source>GLOBAL MESSAGE VISIBILITY</source> + <translation>全局消息可见性</translation> + </message> + <message> + <location line="+2"/> <source>NOTIFICATIONS</source> <translation>通知</translation> </message> @@ -4775,7 +4969,7 @@ Reason: %4</source> <translation>定期删除过期的事件</translation> </message> <message> - <location line="+109"/> + <location line="+117"/> <source>Default</source> <translation>默认</translation> </message> @@ -4859,6 +5053,11 @@ This will also enable or disable sending typing notifications to others.</source </message> <message> <location line="+8"/> + <source>Configure whether to show or hide certain events like room joins.</source> + <translation>配置是否显示或隐藏某些事件,如加入聊天室。</translation> + </message> + <message> + <location line="+2"/> <source>Notify about received messages when the client is not currently focused.</source> <translation>当客户端当前未被聚焦时通知收到的消息。</translation> </message> @@ -4895,29 +5094,29 @@ OFF - 方形,ON - 圆形。</translation> <translation>如果其他用户已通过验证,则自动回复他们的密钥请求,即使该设备不应该以其他方式访问这些密钥。</translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <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>验证你自己的设备的密钥。如果它已被缓存,验证你的设备之一将为你的所有其他设备和已验证你的用户标记它为已验证。</translation> </message> <message> - <location line="-76"/> + <location line="-77"/> <source>Show an alert when a message is received. This usually causes the application icon in the task bar to animate in some fashion.</source> <translation>收到消息时显示通知。 这通常会导致任务栏中的应用程序图标以某种方式呈现动画效果。</translation> </message> <message> - <location line="-350"/> + <location line="-366"/> <source>Communities sidebar</source> <translation>社区侧边栏</translation> </message> <message> - <location line="+42"/> + <location line="+46"/> <source>Show message counts for communities and tags</source> <translation>显示社区和标签的消息计数</translation> </message> <message> - <location line="+241"/> + <location line="+251"/> <source>Set the max width of messages in the timeline (in pixels). This can help readability on wide screen when Nheko is maximized</source> <translation>设置时间线中消息的最大宽度(以像素为单位)。 当 Nheko 最大化时,这有助于提高宽屏上的可读性</translation> </message> @@ -4954,7 +5153,7 @@ Warning: If your homeserver does not support this, your rooms will never be mark 警告:如果你的主服务器不支持此功能,你的聊天室将永远不会被标记为已读!</translation> </message> <message> - <location line="+13"/> + <location line="+15"/> <source>Display an identicon instead of a letter when no avatar is set.</source> <translation>未设置头像时显示 Identicon 而不是单个字母。</translation> </message> @@ -5012,7 +5211,7 @@ be blurred.</source> <translation>从加密的在线密钥备份下载消息加密密钥并上传到该备份。</translation> </message> <message> - <location line="+24"/> + <location line="+25"/> <source>The key to decrypt online key backups. If it is cached, you can enable online key backup to store encryption keys securely encrypted on the server.</source> <translation>用于解密在线密钥备份的密钥。如果它已被缓存,你可以启用在线密钥备份以将加密密钥安全地存储在服务器上。</translation> </message> @@ -5046,7 +5245,22 @@ This setting will take effect upon restart.</source> <translation>定期删除事件过期配置中指定的过期事件。由于此操作目前不能在服务端执行,你需要有一个客户端定期运行此操作。</translation> </message> <message> - <location line="+463"/> + <location line="+4"/> + <source>Manage your ignored users.</source> + <translation>管理你已忽略的用户。</translation> + </message> + <message> + <location line="+149"/> + <source>System font</source> + <translation>系统字体</translation> + </message> + <message> + <location line="+5"/> + <source>System emoji font</source> + <translation>系统表情符号字体</translation> + </message> + <message> + <location line="+323"/> <source>Select a file</source> <translation>选择一个文件</translation> </message> @@ -5101,7 +5315,7 @@ This setting will take effect upon restart.</source> <context> <name>UserSettingsPage</name> <message> - <location filename="../qml/pages/UserSettingsPage.qml" line="+189"/> + <location filename="../qml/pages/UserSettingsPage.qml" line="+187"/> <source>CACHED</source> <translation>已缓存</translation> </message> @@ -5131,7 +5345,17 @@ This setting will take effect upon restart.</source> <translation>请求</translation> </message> <message> - <location line="+25"/> + <location line="+8"/> + <source>CONFIGURE</source> + <translation>配置</translation> + </message> + <message> + <location line="+18"/> + <source>MANAGE</source> + <translation>管理</translation> + </message> + <message> + <location line="+35"/> <source>Back</source> <translation>返回</translation> </message> @@ -5214,29 +5438,6 @@ This setting will take effect upon restart.</source> </message> </context> <context> - <name>dialogs::FallbackAuth</name> - <message> - <location filename="../../src/dialogs/FallbackAuth.cpp" line="+37"/> - <source>Open Fallback in Browser</source> - <translation>在浏览器中打开回溯程序</translation> - </message> - <message> - <location line="+1"/> - <source>Cancel</source> - <translation>取消</translation> - </message> - <message> - <location line="+1"/> - <source>Confirm</source> - <translation>确认</translation> - </message> - <message> - <location line="+12"/> - <source>Open the fallback, follow the steps, and confirm after completing them.</source> - <translation>打开回溯程序,按步骤操作,完成后确认。</translation> - </message> -</context> -<context> <name>emoji-catagory</name> <message> <location filename="../../src/GridImagePackModel.cpp" line="-290"/> diff --git a/resources/qml/CommunitiesList.qml b/resources/qml/CommunitiesList.qml index 81f0640e..c9f259e2 100644 --- a/resources/qml/CommunitiesList.qml +++ b/resources/qml/CommunitiesList.qml @@ -3,13 +3,12 @@ // SPDX-License-Identifier: GPL-3.0-or-later import "./components" -import "./dialogs" import Qt.labs.platform 1.1 as Platform -import QtQml 2.12 -import QtQuick 2.12 -import QtQuick.Controls 2.5 -import QtQuick.Layouts 1.3 -import im.nheko 1.0 +import QtQml +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import im.nheko Page { id: communitySidebar @@ -38,6 +37,7 @@ Page { anchors.right: parent.right height: parent.height model: Communities.filtered() + boundsBehavior: Flickable.StopAtBounds ScrollBar.vertical: ScrollBar { id: scrollbar @@ -70,12 +70,13 @@ Page { when: (communityItem.hovered || model.hidden) && !(Communities.currentTagId === model.id) PropertyChanges { - backgroundColor: palette.dark - bubbleBackground: palette.highlight - bubbleText: palette.highlightedText - importantText: palette.brightText - target: communityItem - unimportantText: palette.brightText + communityItem { + backgroundColor: palette.dark + bubbleBackground: palette.highlight + bubbleText: palette.highlightedText + importantText: palette.brightText + unimportantText: palette.brightText + } } }, State { @@ -83,12 +84,13 @@ Page { when: Communities.currentTagId == model.id PropertyChanges { - backgroundColor: palette.highlight - bubbleBackground: palette.highlightedText - bubbleText: palette.highlight - importantText: palette.highlightedText - target: communityItem - unimportantText: palette.highlightedText + communityItem { + backgroundColor: palette.highlight + bubbleBackground: palette.highlightedText + bubbleText: palette.highlight + importantText: palette.highlightedText + unimportantText: palette.highlightedText + } } } ] @@ -122,11 +124,9 @@ Page { ToolTip.delay: Nheko.tooltipDelay ToolTip.text: model.collapsed ? qsTr("Expand") : qsTr("Collapse") ToolTip.visible: hovered - height: fontMetrics.lineSpacing hoverEnabled: true image: model.collapsed ? ":/icons/icons/ui/collapsed.svg" : ":/icons/icons/ui/expanded.svg" visible: !communitySidebar.collapsed && model.collapsible - width: fontMetrics.lineSpacing onClicked: model.collapsed = !model.collapsed } @@ -141,18 +141,18 @@ Page { color: communityItem.backgroundColor displayName: model.displayName enabled: false - height: avatarSize + Layout.preferredHeight: avatarSize roomid: model.id - textColor: model.avatarUrl.startsWith(":/") ? communityItem.unimportantText : communityItem.importantText + textColor: model.avatarUrl?.startsWith(":/") == true ? communityItem.unimportantText : communityItem.importantText url: { - if (model.avatarUrl.startsWith("mxc://")) + if (model.avatarUrl?.startsWith("mxc://") == true) return model.avatarUrl.replace("mxc://", "image://MxcImage/"); - else if (model.avatarUrl.length > 0) + else if ((model.avatarUrl?.length ?? 0) > 0) return model.avatarUrl; else return ""; } - width: avatarSize + Layout.preferredWidth: avatarSize NotificationBubble { anchors.bottom: avatar.bottom diff --git a/resources/qml/Completer.qml b/resources/qml/Completer.qml index 590d5bb8..d8205988 100644 --- a/resources/qml/Completer.qml +++ b/resources/qml/Completer.qml @@ -145,17 +145,16 @@ Control { roleValue: "user" RowLayout { - anchors.centerIn: centerRowContent ? parent : undefined spacing: rowSpacing Avatar { displayName: model.displayName enabled: false - height: popup.avatarHeight + Layout.preferredHeight: popup.avatarHeight + Layout.preferredWidth: popup.avatarWidth url: model.avatarUrl.replace("mxc://", "image://MxcImage/") userid: model.userid - width: popup.avatarWidth } Label { color: model.index == popup.currentIndex ? palette.highlightedText : palette.text @@ -171,7 +170,6 @@ Control { roleValue: "emoji" RowLayout { - anchors.centerIn: parent spacing: rowSpacing @@ -185,11 +183,11 @@ Control { crop: false displayName: model.shortcode enabled: false - height: popup.avatarHeight + Layout.preferredHeight: popup.avatarHeight //userid: model.shortcode url: (model.url ? model.url : "").replace("mxc://", "image://MxcImage/") visible: !model.unicode - width: popup.avatarWidth + Layout.preferredWidth: popup.avatarWidth } Label { Layout.leftMargin: Nheko.paddingSmall @@ -207,7 +205,6 @@ Control { roleValue: "command" RowLayout { - anchors.centerIn: parent spacing: rowSpacing @@ -226,17 +223,16 @@ Control { roleValue: "room" RowLayout { - anchors.centerIn: centerRowContent ? parent : undefined spacing: rowSpacing Avatar { displayName: model.roomName enabled: false - height: popup.avatarHeight + Layout.preferredHeight: popup.avatarHeight roomid: model.roomid url: model.avatarUrl.replace("mxc://", "image://MxcImage/") - width: popup.avatarWidth + Layout.preferredWidth: popup.avatarWidth } Label { color: model.index == popup.currentIndex ? palette.highlightedText : palette.text @@ -251,17 +247,16 @@ Control { roleValue: "roomAliases" RowLayout { - anchors.centerIn: parent spacing: rowSpacing Avatar { displayName: model.roomName enabled: false - height: popup.avatarHeight + Layout.preferredHeight: popup.avatarHeight roomid: model.roomid url: model.avatarUrl.replace("mxc://", "image://MxcImage/") - width: popup.avatarWidth + Layout.preferredWidth: popup.avatarWidth } Label { color: model.index == popup.currentIndex ? palette.highlightedText : palette.text diff --git a/resources/qml/EncryptionIndicator.qml b/resources/qml/EncryptionIndicator.qml index fb9dc7b5..b606a531 100644 --- a/resources/qml/EncryptionIndicator.qml +++ b/resources/qml/EncryptionIndicator.qml @@ -2,10 +2,10 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import QtQuick 2.12 -import QtQuick.Controls 2.1 -import QtQuick.Window 2.15 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import QtQuick.Window +import im.nheko Image { id: stateImg @@ -59,8 +59,6 @@ Image { return sourceUrl + (stateImg.hovered ? unencryptedHoverColor : unencryptedColor); } } - sourceSize.height: height - sourceSize.width: width width: 16 HoverHandler { diff --git a/resources/qml/ForwardCompleter.qml b/resources/qml/ForwardCompleter.qml index 0174e0f6..8ed6017c 100644 --- a/resources/qml/ForwardCompleter.qml +++ b/resources/qml/ForwardCompleter.qml @@ -10,7 +10,7 @@ import im.nheko 1.0 Popup { id: forwardMessagePopup - property var mid + property string mid: "" function setMessageEventId(mid_in) { mid = mid_in; @@ -54,25 +54,9 @@ Popup { Reply { id: replyPreview - property var modelData: room ? room.getDump(mid, "") : {} - - blurhash: modelData.blurhash ?? "" - body: modelData.body ?? "" - encryptionError: modelData.encryptionError ?? "" - eventId: modelData.eventId ?? "" - filename: modelData.filename ?? "" - filesize: modelData.filesize ?? "" - formattedBody: modelData.formattedBody ?? "" - isOnlyEmoji: modelData.isOnlyEmoji ?? false - originalWidth: modelData.originalWidth ?? 0 - proportionalHeight: modelData.proportionalHeight ?? 1 - type: modelData.type ?? MtxEvent.UnknownMessage - typeString: modelData.typeString ?? "" - url: modelData.url ?? "" - userColor: TimelineManager.userColor(modelData.userId, palette.window) - userId: modelData.userId ?? "" - userName: modelData.userName ?? "" - width: parent.width + eventId: mid + userColor: TimelineManager.userColor(replyPreview.userId, palette.window) + maxWidth: parent.width } MatrixTextField { id: roomTextInput @@ -80,7 +64,7 @@ Popup { color: palette.text width: forwardMessagePopup.width - forwardMessagePopup.leftPadding * 2 - Keys.onPressed: { + Keys.onPressed: (event) => { if (event.key == Qt.Key_Up || event.key == Qt.Key_Backtab) { event.accepted = true; completerPopup.up(); @@ -113,7 +97,7 @@ Popup { } Connections { function onCompletionSelected(id) { - room.forwardMessage(messageContextMenu.eventId, id); + room.forwardMessage(forwardMessagePopup.mid, id); forwardMessagePopup.close(); } function onCountChanged() { diff --git a/resources/qml/ImageButton.qml b/resources/qml/ImageButton.qml index ddc0b7d8..783a01d0 100644 --- a/resources/qml/ImageButton.qml +++ b/resources/qml/ImageButton.qml @@ -4,9 +4,9 @@ pragma ComponentBehavior: Bound import "./ui" -import QtQuick 2.3 -import QtQuick.Controls 2.3 -import im.nheko 1.0 // for cursor shape +import QtQuick +import QtQuick.Controls +import im.nheko // for cursor shape AbstractButton { id: button diff --git a/resources/qml/MatrixText.qml b/resources/qml/MatrixText.qml index 94b8bb98..bdc0cb6b 100644 --- a/resources/qml/MatrixText.qml +++ b/resources/qml/MatrixText.qml @@ -2,34 +2,32 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import QtQuick 2.5 -import QtQuick.Controls 2.3 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import im.nheko -TextEdit { +TextArea { id: r property alias cursorShape: cs.cursorShape - //leftInset: 0 - //bottomInset: 0 - //rightInset: 0 - //topInset: 0 - //leftPadding: 0 - //bottomPadding: 0 - //rightPadding: 0 - //topPadding: 0 - //background: null - ToolTip.text: hoveredLink ToolTip.visible: hoveredLink || false + background: null + bottomInset: 0 + bottomPadding: 0 // this always has to be enabled, otherwise you can't click links anymore! //enabled: selectByMouse color: palette.text focus: false + leftInset: 0 + leftPadding: 0 readOnly: true - selectByMouse: !Settings.mobileMode + rightInset: 0 + rightPadding: 0 textFormat: TextEdit.RichText + topInset: 0 + topPadding: 0 wrapMode: Text.Wrap // Setting a tooltip delay makes the hover text empty .-. @@ -39,9 +37,9 @@ TextEdit { } onLinkActivated: Nheko.openLink(link) - //// propagate events up - //onPressAndHold: (event) => event.accepted = false - //onPressed: (event) => event.accepted = (event.button == Qt.LeftButton) + // propagate events up + onPressAndHold: event => event.accepted = false + onPressed: event => event.accepted = (event.button == Qt.LeftButton) NhekoCursorShape { id: cs diff --git a/resources/qml/MatrixTextField.qml b/resources/qml/MatrixTextField.qml index 7209a5aa..4ceadf6c 100644 --- a/resources/qml/MatrixTextField.qml +++ b/resources/qml/MatrixTextField.qml @@ -69,12 +69,10 @@ ColumnLayout { name: "focused" PropertyChanges { - target: labelC - y: 0 + labelC.y: 0 } PropertyChanges { - opacity: 1 - target: input + input.opacity: 1 } } transitions: Transition { @@ -143,7 +141,7 @@ ColumnLayout { Layout.fillWidth: true color: palette.highlight - height: 1 + Layout.preferredHeight: 1 Rectangle { id: blackBar @@ -159,8 +157,7 @@ ColumnLayout { when: input.activeFocus == true PropertyChanges { - target: blackBar - width: blueBar.width + blackBar.width: blueBar.width } } transitions: Transition { diff --git a/resources/qml/MessageInput.qml b/resources/qml/MessageInput.qml index a1d3ac7b..37793751 100644 --- a/resources/qml/MessageInput.qml +++ b/resources/qml/MessageInput.qml @@ -46,12 +46,12 @@ Rectangle { Layout.margins: 8 ToolTip.text: CallManager.isOnCall ? qsTr("Hang up") : (CallManager.isOnCallOnOtherDevice ? qsTr("Already on a call") : qsTr("Place a call")) ToolTip.visible: hovered - height: 22 + Layout.preferredHeight: 22 hoverEnabled: true image: CallManager.isOnCall ? ":/icons/icons/ui/end-call.svg" : ":/icons/icons/ui/place-call.svg" opacity: (CallManager.haveCallInvite || CallManager.isOnCallOnOtherDevice) ? 0.3 : 1 visible: CallManager.callsSupported && showAllButtons - width: 22 + Layout.preferredWidth: 22 onClicked: { if (room) { @@ -74,11 +74,11 @@ Rectangle { Layout.margins: 8 ToolTip.text: qsTr("Send a file") ToolTip.visible: hovered - height: 22 + Layout.preferredHeight: 22 hoverEnabled: true image: ":/icons/icons/ui/attach.svg" visible: showAllButtons - width: 22 + Layout.preferredWidth: 22 onClicked: room.input.openFileSelection() @@ -395,11 +395,11 @@ Rectangle { Layout.margins: 8 ToolTip.text: qsTr("Stickers") ToolTip.visible: hovered - height: 22 + Layout.preferredHeight: 22 hoverEnabled: true image: ":/icons/icons/ui/sticky-note-solid.svg" visible: showAllButtons - width: 22 + Layout.preferredWidth: 22 onClicked: stickerPopup.visible ? stickerPopup.close() : stickerPopup.show(stickerButton, room.roomId, function (row) { room.input.sticker(row); @@ -419,10 +419,10 @@ Rectangle { Layout.margins: 8 ToolTip.text: qsTr("Emoji") ToolTip.visible: hovered - height: 22 + Layout.preferredHeight: 22 hoverEnabled: true image: ":/icons/icons/ui/smile.svg" - width: 22 + Layout.preferredWidth: 22 onClicked: emojiPopup.visible ? emojiPopup.close() : emojiPopup.show(emojiButton, room.roomId, function (plaintext, markdown) { messageInput.insert(messageInput.cursorPosition, markdown); @@ -441,10 +441,10 @@ Rectangle { Layout.rightMargin: 8 ToolTip.text: qsTr("Send") ToolTip.visible: hovered - height: 22 + Layout.preferredHeight: 22 hoverEnabled: true image: ":/icons/icons/ui/send.svg" - width: 22 + Layout.preferredWidth: 22 onClicked: { room.input.send(); diff --git a/resources/qml/MessageView.qml b/resources/qml/MessageView.qml index a0ff0ff1..97a121eb 100644 --- a/resources/qml/MessageView.qml +++ b/resources/qml/MessageView.qml @@ -2,9 +2,6 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import "./components" -import "./delegates" -import "./emoji" import "./ui" import "./dialogs" import Qt.labs.platform 1.1 as Platform @@ -20,12 +17,13 @@ Item { property int availableWidth: width property int padding: Nheko.paddingMedium property string searchString: "" + property Room roommodel: room // HACK: https://bugreports.qt.io/browse/QTBUG-83972, qtwayland cannot auto hide menu Connections { function onHideMenu() { - messageContextMenu.close(); - replyContextMenu.close(); + messageContextMenuC.close(); + replyContextMenuC.close(); } target: MainWindow @@ -51,182 +49,42 @@ Item { //onModelChanged: if (room) room.sendReset() //reuseItems: true boundsBehavior: Flickable.StopAtBounds - displayMarginBeginning: height / 2 - displayMarginEnd: height / 2 + displayMarginBeginning: height / 4 + displayMarginEnd: height / 4 model: (filteredTimeline.filterByThread || filteredTimeline.filterByContent) ? filteredTimeline : room //pixelAligned: true spacing: 2 verticalLayoutDirection: ListView.BottomToTop - delegate: Item { - id: wrapper - - required property string blurhash - required property string body - required property string callType - required property var day - required property string duration - required property int encryptionError - required property string eventId - required property string filename - required property string filesize - required property string formattedBody - required property int index - required property bool isEditable - required property bool isEdited - required property bool isEncrypted - required property bool isOnlyEmoji - required property bool isSender - required property bool isStateEvent - required property int notificationlevel - required property int originalWidth - property var previousMessageDay: (index + 1) >= chat.count ? 0 : chat.model.dataByIndex(index + 1, Room.Day) - property bool previousMessageIsStateEvent: (index + 1) >= chat.count ? true : chat.model.dataByIndex(index + 1, Room.IsStateEvent) - property string previousMessageUserId: (index + 1) >= chat.count ? "" : chat.model.dataByIndex(index + 1, Room.UserId) - required property double proportionalHeight - required property var reactions - required property int relatedEventCacheBuster - required property string replyTo - required property string roomName - required property string roomTopic - property bool scrolledToThis: eventId === room.scrollTarget && (y + height > chat.y + chat.contentY && y < chat.y + chat.height + chat.contentY) - required property int status - required property string threadId - required property string thumbnailUrl - required property var timestamp - required property int trustlevel - required property int type - required property string typeString - required property string url - required property string userId - required property string userName - required property int userPowerlevel - - ListView.delayRemove: true - anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined - height: (section.item?.height ?? 0) + timelinerow.height - width: chat.delegateMaxWidth - - Loader { - id: section - - property var day: wrapper.day - property bool isSender: wrapper.isSender - property bool isStateEvent: wrapper.isStateEvent - property int parentWidth: parent.width - property var previousMessageDay: wrapper.previousMessageDay - property bool previousMessageIsStateEvent: wrapper.previousMessageIsStateEvent - property string previousMessageUserId: wrapper.previousMessageUserId - property date timestamp: wrapper.timestamp - property string userId: wrapper.userId - property string userName: wrapper.userName - property int userPowerlevel: wrapper.userPowerlevel - - active: previousMessageUserId !== userId || previousMessageDay !== day || previousMessageIsStateEvent !== isStateEvent - //asynchronous: true - sourceComponent: sectionHeader - visible: status == Loader.Ready - z: 4 - } - TimelineRow { - id: timelinerow - - blurhash: wrapper.blurhash - body: wrapper.body - callType: wrapper.callType - duration: wrapper.duration - encryptionError: wrapper.encryptionError - eventId: chat.model, wrapper.eventId - filename: wrapper.filename - filesize: wrapper.filesize - formattedBody: wrapper.formattedBody - index: wrapper.index - isEditable: wrapper.isEditable - isEdited: wrapper.isEdited - isEncrypted: wrapper.isEncrypted - isOnlyEmoji: wrapper.isOnlyEmoji - isSender: wrapper.isSender - isStateEvent: wrapper.isStateEvent - notificationlevel: wrapper.notificationlevel - originalWidth: wrapper.originalWidth - proportionalHeight: wrapper.proportionalHeight - reactions: wrapper.reactions - relatedEventCacheBuster: wrapper.relatedEventCacheBuster - replyTo: wrapper.replyTo - roomName: wrapper.roomName - roomTopic: wrapper.roomTopic - status: wrapper.status - threadId: wrapper.threadId - thumbnailUrl: wrapper.thumbnailUrl - timestamp: wrapper.timestamp - trustlevel: wrapper.trustlevel - type: chat.model, wrapper.type - typeString: wrapper.typeString - url: wrapper.url - userId: wrapper.userId - userName: wrapper.userName - width: wrapper.width - y: section.visible && section.active ? section.y + section.height : 0 - - background: Rectangle { - id: scrollHighlight - - color: palette.highlight - enabled: false - opacity: 0 - visible: true - z: 1 - - states: State { - name: "revealed" - when: wrapper.scrolledToThis - } - transitions: Transition { - from: "" - to: "revealed" - - SequentialAnimation { - PropertyAnimation { - duration: 500 - easing.type: Easing.InOutQuad - from: 0 - properties: "opacity" - target: scrollHighlight - to: 1 - } - PropertyAnimation { - duration: 500 - easing.type: Easing.InOutQuad - from: 1 - properties: "opacity" - target: scrollHighlight - to: 0 - } - ScriptAction { - script: room.eventShown() - } - } - } - } + property int lastScrollPos: 0 - onHoveredChanged: { - if (!Settings.mobileMode && hovered) { - if (!messageActions.hovered) { - messageActions.attached = timelinerow; - messageActions.model = timelinerow; - } - } - } + // Fixup the scroll position when the height changes. Without this, the view is kept around the center of the currently visible content, while we usually want to stick to the bottom. + onMovementEnded: lastScrollPos = (contentY+height) + onModelChanged: lastScrollPos = (contentY+height) + onHeightChanged: contentY = (lastScrollPos-height) + + Component { + id: defaultMessageStyle + + TimelineDefaultMessageStyle { + messageActions: messageActionsC + messageContextMenu: messageContextMenuC + replyContextMenu: replyContextMenuC + scrolledToThis: eventId === room.scrollTarget && (y + height > chat.y + chat.contentY && y < chat.y + chat.height + chat.contentY) } - Connections { - function onMovementEnded() { - if (y + height + 2 * chat.spacing > chat.contentY + chat.height && y < chat.contentY + chat.height) - chat.model.currentIndex = index; - } + } + Component { + id: bubbleMessageStyle - target: chat + TimelineBubbleMessageStyle { + messageActions: messageActionsC + messageContextMenu: messageContextMenuC + replyContextMenu: replyContextMenuC + scrolledToThis: eventId === room.scrollTarget && (y + height > chat.y + chat.contentY && y < chat.y + chat.height + chat.contentY) } } + + delegate: Settings.bubbles ? bubbleMessageStyle : defaultMessageStyle footer: Item { anchors.horizontalCenter: parent.horizontalCenter anchors.margins: Nheko.paddingLarge @@ -260,19 +118,19 @@ Item { source: room } Control { - id: messageActions + id: messageActionsC property Item attached: null // use comma to update on scroll - property var attachedPos: chat.contentY, attached ? chat.mapFromItem(attached, attached ? attached.width - width : 0, -height) : null property alias model: row.model hoverEnabled: true padding: Nheko.paddingSmall visible: Settings.buttonsInTimeline && !!attached && (attached.hovered || hovered) - x: attached ? attachedPos.x : 0 - y: attached ? attachedPos.y + Nheko.paddingSmall : 0 z: 10 + parent: chat.contentItem + anchors.bottom: attached?.top + anchors.right: attached?.right background: Rectangle { border.color: palette.buttonText @@ -285,7 +143,7 @@ Item { property var model - spacing: messageActions.padding + spacing: messageActionsC.padding Repeater { model: Settings.recentReactions @@ -325,8 +183,6 @@ Item { visible: !button.showImage } Image { - id: buttonImg - // Workaround, can't get icon.source working for now... anchors.fill: parent fillMode: Image.PreserveAspectFit @@ -351,7 +207,7 @@ Item { hoverEnabled: true image: ":/icons/icons/ui/edit.svg" visible: !!row.model && row.model.isEditable - width: 16 + Layout.preferredWidth: 16 onClicked: { if (row.model.isEditable) @@ -367,7 +223,7 @@ Item { hoverEnabled: true image: ":/icons/icons/ui/smile-add.svg" visible: room ? room.permissions.canSend(MtxEvent.Reaction) : false - width: 16 + Layout.preferredWidth: 16 onClicked: emojiPopup.visible ? emojiPopup.close() : emojiPopup.show(reactButton, room.roomId, function (plaintext, markdown) { var event_id = row.model ? row.model.eventId : ""; @@ -382,7 +238,7 @@ Item { hoverEnabled: true image: (row.model && row.model.threadId) ? ":/icons/icons/ui/thread.svg" : ":/icons/icons/ui/new-thread.svg" visible: room ? room.permissions.canSend(MtxEvent.TextMessage) : false - width: 16 + Layout.preferredWidth: 16 onClicked: room.thread = (row.model.threadId || row.model.eventId) } @@ -393,7 +249,7 @@ Item { hoverEnabled: true image: ":/icons/icons/ui/reply.svg" visible: room ? room.permissions.canSend(MtxEvent.TextMessage) : false - width: 16 + Layout.preferredWidth: 16 onClicked: room.reply = row.model.eventId } @@ -405,7 +261,7 @@ Item { hoverEnabled: true image: ":/icons/icons/ui/go-to.svg" visible: !!row.model && filteredTimeline.filterByContent - width: 16 + Layout.preferredWidth: 16 onClicked: { topBar.searchString = ""; @@ -420,9 +276,9 @@ Item { ToolTip.visible: hovered hoverEnabled: true image: ":/icons/icons/ui/options.svg" - width: 16 + Layout.preferredWidth: 16 - onClicked: messageContextMenu.show(row.model.eventId, row.model.threadId, row.model.type, row.model.isSender, row.model.isEncrypted, row.model.isEditable, "", row.model.body, optionsButton) + onClicked: messageContextMenuC.show(row.model.eventId, row.model.threadId, row.model.type, row.model.isSender, row.model.isEncrypted, row.model.isEditable, "", row.model.body, optionsButton) } } } @@ -504,146 +360,9 @@ Item { room.setCurrentIndex(room.currentIndex); } } - Component { - id: sectionHeader - - Column { - bottomPadding: Settings.bubbles ? (isSender && previousMessageDay == day ? 0 : 2) : 3 - spacing: 8 - topPadding: userName_.visible ? 4 : 0 - visible: (previousMessageUserId !== userId || previousMessageDay !== day || isStateEvent !== previousMessageIsStateEvent) - width: parentWidth - - Label { - id: dateBubble - - anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined - color: palette.text - height: Math.round(fontMetrics.height * 1.4) - horizontalAlignment: Text.AlignHCenter - text: room ? room.formatDateSeparator(timestamp) : "" - verticalAlignment: Text.AlignVCenter - visible: room && previousMessageDay !== day - width: contentWidth * 1.2 - - background: Rectangle { - color: palette.window - radius: parent.height / 2 - } - } - Row { - id: userInfo - - property int remainingWidth: chat.delegateMaxWidth - spacing - messageUserAvatar.width - - height: userName_.height - spacing: 8 - visible: !isStateEvent && (!isSender || !Settings.bubbles) - - Avatar { - id: messageUserAvatar - - ToolTip.delay: Nheko.tooltipDelay - ToolTip.text: userid - ToolTip.visible: messageUserAvatar.hovered - displayName: userName - height: Nheko.avatarSize * (Settings.smallAvatars ? 0.5 : 1) - url: !room ? "" : room.avatarUrl(userId).replace("mxc://", "image://MxcImage/") - userid: userId - width: Nheko.avatarSize * (Settings.smallAvatars ? 0.5 : 1) - - onClicked: room.openUserProfile(userId) - } - Connections { - function onRoomAvatarUrlChanged() { - messageUserAvatar.url = room.avatarUrl(userId).replace("mxc://", "image://MxcImage/"); - } - function onScrollToIndex(index) { - chat.positionViewAtIndex(index, ListView.Center); - } - - target: room - } - - AbstractButton { - id: userNameButton - - PowerlevelIndicator { - id: powerlevelIndicator - anchors.left: parent.left - //anchors.horizontalCenter: parent.horizontalCenter - - powerlevel: userPowerlevel - permissions: room ? room.permissions : null - visible: isAdmin || isModerator - } - - ToolTip.delay: Nheko.tooltipDelay - ToolTip.text: userId - ToolTip.visible: hovered - leftPadding: powerlevelIndicator.visible ? 16 : 0 - leftInset: 0 - rightInset: 0 - rightPadding: 0 - - contentItem: Label { - id: userName_ - - color: TimelineManager.userColor(userId, palette.base) - text: TimelineManager.escapeEmoji(userNameTextMetrics.elidedText) - textFormat: Text.RichText - } - - onClicked: room.openUserProfile(userId) - - TextMetrics { - id: userNameTextMetrics - - elide: Text.ElideRight - elideWidth: userInfo.remainingWidth - Math.min(statusMsg.implicitWidth, userInfo.remainingWidth / 3) - text: userName - } - NhekoCursorShape { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - } - } - Label { - id: statusMsg - - property string userStatus: Presence.userStatus(userId) - - ToolTip.delay: Nheko.tooltipDelay - ToolTip.text: qsTr("%1's status message").arg(userName) - ToolTip.visible: statusMsgHoverHandler.hovered - anchors.baseline: userNameButton.baseline - color: palette.buttonText - elide: Text.ElideRight - font.italic: true - font.pointSize: Math.floor(fontMetrics.font.pointSize * 0.8) - text: userStatus.replace(/\n/g, " ") - textFormat: Text.PlainText - width: Math.min(implicitWidth, userInfo.remainingWidth - userName_.width - parent.spacing) - - HoverHandler { - id: statusMsgHoverHandler - - } - Connections { - function onPresenceChanged(id) { - if (id == userId) - statusMsg.userStatus = Presence.userStatus(userId); - } - - target: Presence - } - } - } - } - } } Platform.Menu { - id: messageContextMenu + id: messageContextMenuC property string eventId property int eventType @@ -691,6 +410,12 @@ Item { } } } + Component { + id: reportDialog + + ReportMessage {} + } + Platform.MenuItem { enabled: visible text: qsTr("Go to &message") @@ -698,22 +423,22 @@ Item { onTriggered: function () { topBar.searchString = ""; - room.showEvent(messageContextMenu.eventId); + room.showEvent(messageContextMenuC.eventId); } } Platform.MenuItem { enabled: visible text: qsTr("&Copy") - visible: messageContextMenu.text + visible: messageContextMenuC.text - onTriggered: Clipboard.text = messageContextMenu.text + onTriggered: Clipboard.text = messageContextMenuC.text } Platform.MenuItem { enabled: visible text: qsTr("Copy &link location") - visible: messageContextMenu.link + visible: messageContextMenuC.link - onTriggered: Clipboard.text = messageContextMenu.link + onTriggered: Clipboard.text = messageContextMenuC.link } Platform.MenuItem { id: reactionOption @@ -722,7 +447,7 @@ Item { visible: room ? room.permissions.canSend(MtxEvent.Reaction) : false onTriggered: emojiPopup.visible ? emojiPopup.close() : emojiPopup.show(null, room.roomId, function (plaintext, markdown) { - room.input.reaction(messageContextMenu.eventId, plaintext); + room.input.reaction(messageContextMenuC.eventId, plaintext); TimelineManager.focusMessageInput(); }) } @@ -730,41 +455,41 @@ Item { text: qsTr("Repl&y") visible: room ? room.permissions.canSend(MtxEvent.TextMessage) : false - onTriggered: room.reply = (messageContextMenu.eventId) + onTriggered: room.reply = (messageContextMenuC.eventId) } Platform.MenuItem { enabled: visible text: qsTr("&Edit") - visible: messageContextMenu.isEditable && (room ? room.permissions.canSend(MtxEvent.TextMessage) : false) + visible: messageContextMenuC.isEditable && (room ? room.permissions.canSend(MtxEvent.TextMessage) : false) - onTriggered: room.edit = (messageContextMenu.eventId) + onTriggered: room.edit = (messageContextMenuC.eventId) } Platform.MenuItem { enabled: visible text: qsTr("&Thread") visible: (room ? room.permissions.canSend(MtxEvent.TextMessage) : false) - onTriggered: room.thread = (messageContextMenu.threadId || messageContextMenu.eventId) + onTriggered: room.thread = (messageContextMenuC.threadId || messageContextMenuC.eventId) } Platform.MenuItem { enabled: visible - text: visible && room.pinnedMessages.includes(messageContextMenu.eventId) ? qsTr("Un&pin") : qsTr("&Pin") + text: visible && room.pinnedMessages.includes(messageContextMenuC.eventId) ? qsTr("Un&pin") : qsTr("&Pin") visible: (room ? room.permissions.canChange(MtxEvent.PinnedEvents) : false) - onTriggered: visible && room.pinnedMessages.includes(messageContextMenu.eventId) ? room.unpin(messageContextMenu.eventId) : room.pin(messageContextMenu.eventId) + onTriggered: visible && room.pinnedMessages.includes(messageContextMenuC.eventId) ? room.unpin(messageContextMenuC.eventId) : room.pin(messageContextMenuC.eventId) } Platform.MenuItem { text: qsTr("&Read receipts") - onTriggered: room.showReadReceipts(messageContextMenu.eventId) + onTriggered: room.showReadReceipts(messageContextMenuC.eventId) } Platform.MenuItem { text: qsTr("&Forward") - visible: messageContextMenu.eventType == MtxEvent.ImageMessage || messageContextMenu.eventType == MtxEvent.VideoMessage || messageContextMenu.eventType == MtxEvent.AudioMessage || messageContextMenu.eventType == MtxEvent.FileMessage || messageContextMenu.eventType == MtxEvent.Sticker || messageContextMenu.eventType == MtxEvent.TextMessage || messageContextMenu.eventType == MtxEvent.LocationMessage || messageContextMenu.eventType == MtxEvent.EmoteMessage || messageContextMenu.eventType == MtxEvent.NoticeMessage + visible: messageContextMenuC.eventType == MtxEvent.ImageMessage || messageContextMenuC.eventType == MtxEvent.VideoMessage || messageContextMenuC.eventType == MtxEvent.AudioMessage || messageContextMenuC.eventType == MtxEvent.FileMessage || messageContextMenuC.eventType == MtxEvent.Sticker || messageContextMenuC.eventType == MtxEvent.TextMessage || messageContextMenuC.eventType == MtxEvent.LocationMessage || messageContextMenuC.eventType == MtxEvent.EmoteMessage || messageContextMenuC.eventType == MtxEvent.NoticeMessage onTriggered: { var forwardMess = forwardCompleterComponent.createObject(timelineRoot); - forwardMess.setMessageEventId(messageContextMenu.eventId); + forwardMess.setMessageEventId(messageContextMenuC.eventId); forwardMess.open(); timelineRoot.destroyOnClose(forwardMess); } @@ -775,23 +500,33 @@ Item { Platform.MenuItem { text: qsTr("View raw message") - onTriggered: room.viewRawMessage(messageContextMenu.eventId) + onTriggered: room.viewRawMessage(messageContextMenuC.eventId) } Platform.MenuItem { enabled: visible text: qsTr("View decrypted raw message") // TODO(Nico): Fix this still being iterated over, when using keyboard to select options - visible: messageContextMenu.isEncrypted + visible: messageContextMenuC.isEncrypted - onTriggered: room.viewDecryptedRawMessage(messageContextMenu.eventId) + onTriggered: room.viewDecryptedRawMessage(messageContextMenuC.eventId) } Platform.MenuItem { text: qsTr("Remo&ve message") - visible: (room ? room.permissions.canRedact() : false) || messageContextMenu.isSender + visible: (room ? room.permissions.canRedact() : false) || messageContextMenuC.isSender onTriggered: function () { var dialog = removeReason.createObject(timelineRoot); - dialog.eventId = messageContextMenu.eventId; + dialog.eventId = messageContextMenuC.eventId; + dialog.show(); + dialog.forceActiveFocus(); + timelineRoot.destroyOnClose(dialog); + } + } + Platform.MenuItem { + text: qsTr("Report message") + enabled: visible + onTriggered: function () { + var dialog = reportDialog.createObject(timelineRoot, {"eventId": messageContextMenu.eventId}); dialog.show(); dialog.forceActiveFocus(); timelineRoot.destroyOnClose(dialog); @@ -800,23 +535,23 @@ Item { Platform.MenuItem { enabled: visible text: qsTr("&Save as") - visible: messageContextMenu.eventType == MtxEvent.ImageMessage || messageContextMenu.eventType == MtxEvent.VideoMessage || messageContextMenu.eventType == MtxEvent.AudioMessage || messageContextMenu.eventType == MtxEvent.FileMessage || messageContextMenu.eventType == MtxEvent.Sticker + visible: messageContextMenuC.eventType == MtxEvent.ImageMessage || messageContextMenuC.eventType == MtxEvent.VideoMessage || messageContextMenuC.eventType == MtxEvent.AudioMessage || messageContextMenuC.eventType == MtxEvent.FileMessage || messageContextMenuC.eventType == MtxEvent.Sticker - onTriggered: room.saveMedia(messageContextMenu.eventId) + onTriggered: room.saveMedia(messageContextMenuC.eventId) } Platform.MenuItem { enabled: visible text: qsTr("&Open in external program") - visible: messageContextMenu.eventType == MtxEvent.ImageMessage || messageContextMenu.eventType == MtxEvent.VideoMessage || messageContextMenu.eventType == MtxEvent.AudioMessage || messageContextMenu.eventType == MtxEvent.FileMessage || messageContextMenu.eventType == MtxEvent.Sticker + visible: messageContextMenuC.eventType == MtxEvent.ImageMessage || messageContextMenuC.eventType == MtxEvent.VideoMessage || messageContextMenuC.eventType == MtxEvent.AudioMessage || messageContextMenuC.eventType == MtxEvent.FileMessage || messageContextMenuC.eventType == MtxEvent.Sticker - onTriggered: room.openMedia(messageContextMenu.eventId) + onTriggered: room.openMedia(messageContextMenuC.eventId) } Platform.MenuItem { enabled: visible text: qsTr("Copy link to eve&nt") - visible: messageContextMenu.eventId + visible: messageContextMenuC.eventId - onTriggered: room.copyLinkToEvent(messageContextMenu.eventId) + onTriggered: room.copyLinkToEvent(messageContextMenuC.eventId) } } Component { @@ -826,7 +561,7 @@ Item { } } Platform.Menu { - id: replyContextMenu + id: replyContextMenuC property string eventId property string link @@ -842,23 +577,23 @@ Item { Platform.MenuItem { enabled: visible text: qsTr("&Copy") - visible: replyContextMenu.text + visible: replyContextMenuC.text - onTriggered: Clipboard.text = replyContextMenu.text + onTriggered: Clipboard.text = replyContextMenuC.text } Platform.MenuItem { enabled: visible text: qsTr("Copy &link location") - visible: replyContextMenu.link + visible: replyContextMenuC.link - onTriggered: Clipboard.text = replyContextMenu.link + onTriggered: Clipboard.text = replyContextMenuC.link } Platform.MenuItem { enabled: visible text: qsTr("&Go to quoted message") visible: true - onTriggered: room.showEvent(replyContextMenu.eventId) + onTriggered: room.showEvent(replyContextMenuC.eventId) } } RoundButton { @@ -884,8 +619,7 @@ Item { name: "" PropertyChanges { - target: toEndButton - width: 0 + toEndButton.width: 0 } }, State { @@ -893,8 +627,7 @@ Item { when: !chat.atYEnd PropertyChanges { - target: toEndButton - width: toEndButton.fullWidth + toEndButton.width: toEndButton.fullWidth } } ] @@ -928,8 +661,6 @@ Item { rightMargin: Nheko.paddingMedium + (fullWidth - width) / 2 } Image { - id: buttonImg - anchors.fill: parent anchors.margins: Nheko.paddingMedium fillMode: Image.PreserveAspectFit diff --git a/resources/qml/PrivacyScreen.qml b/resources/qml/PrivacyScreen.qml index a3539df7..764bdf62 100644 --- a/resources/qml/PrivacyScreen.qml +++ b/resources/qml/PrivacyScreen.qml @@ -50,24 +50,16 @@ Item { name: "Visible" PropertyChanges { - target: screenSaver - visible: true - } - PropertyChanges { - opacity: 1 - target: screenSaver + screenSaver.visible: true + screenSaver.opacity: 1 } }, State { name: "Invisible" PropertyChanges { - opacity: 0 - target: screenSaver - } - PropertyChanges { - target: screenSaver - visible: false + screenSaver.opacity: 0 + screenSaver.visible: false } } ] diff --git a/resources/qml/QuickSwitcher.qml b/resources/qml/QuickSwitcher.qml index 67718ecb..10b9bf25 100644 --- a/resources/qml/QuickSwitcher.qml +++ b/resources/qml/QuickSwitcher.qml @@ -2,10 +2,9 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import im.nheko Popup { id: quickSwitcher diff --git a/resources/qml/Reactions.qml b/resources/qml/Reactions.qml index eff62fc1..5b994145 100644 --- a/resources/qml/Reactions.qml +++ b/resources/qml/Reactions.qml @@ -74,10 +74,10 @@ Flow { anchors.verticalCenter: divider.verticalCenter fillMode: Image.PreserveAspectFit height: textMetrics.height + mipmap: true source: modelData.key.startsWith("mxc://") ? (modelData.key.replace("mxc://", "image://MxcImage/") + "?scale") : "" visible: modelData.key.startsWith("mxc://") width: textMetrics.height - mipmap: true } Rectangle { id: divider diff --git a/resources/qml/ReplyPopup.qml b/resources/qml/ReplyPopup.qml index ce24297c..17ce7ee4 100644 --- a/resources/qml/ReplyPopup.qml +++ b/resources/qml/ReplyPopup.qml @@ -29,24 +29,10 @@ Rectangle { anchors.rightMargin: replyPopup.width < 450 ? 2 * (22 + 16) : 3 * (22 + 16) anchors.top: parent.top anchors.topMargin: Nheko.paddingSmall - blurhash: modelData.blurhash ?? "" - body: modelData.body ?? "" - encryptionError: modelData.encryptionError ?? 0 - eventId: modelData.eventId ?? "" - filename: modelData.filename ?? "" - filesize: modelData.filesize ?? "" - formattedBody: modelData.formattedBody ?? "" - isOnlyEmoji: modelData.isOnlyEmoji ?? false - originalWidth: modelData.originalWidth ?? 0 - proportionalHeight: modelData.proportionalHeight ?? 1 - type: modelData.type ?? MtxEvent.UnknownMessage - typeString: modelData.typeString ?? "" - url: modelData.url ?? "" + eventId: room?.reply ?? "" userColor: TimelineManager.userColor(modelData.userId, palette.window) - userId: modelData.userId ?? "" - userName: modelData.userName ?? "" visible: room && room.reply - width: parent.width + maxWidth: parent.width - anchors.leftMargin - anchors.rightMargin } ImageButton { id: closeReplyButton diff --git a/resources/qml/RoomList.qml b/resources/qml/RoomList.qml index 20e5b95b..350b3846 100644 --- a/resources/qml/RoomList.qml +++ b/resources/qml/RoomList.qml @@ -6,11 +6,11 @@ import "./components" import "./dialogs" import "./ui" import Qt.labs.platform 1.1 as Platform -import QtQml 2.12 -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.3 -import im.nheko 1.0 +import QtQml +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import im.nheko Page { //leftPadding: Nheko.paddingSmall @@ -27,7 +27,7 @@ Page { Rectangle { Layout.fillWidth: true color: Nheko.theme.separator - height: 1 + Layout.preferredHeight: 1 } Pane { Layout.alignment: Qt.AlignBottom @@ -48,10 +48,10 @@ Page { ToolTip.delay: Nheko.tooltipDelay ToolTip.text: qsTr("Start a new chat") ToolTip.visible: hovered - height: 22 + Layout.preferredHeight: 22 + Layout.preferredWidth: 22 hoverEnabled: true image: ":/icons/icons/ui/add-square-button.svg" - width: 22 onClicked: roomJoinCreateMenu.open(parent) @@ -100,11 +100,11 @@ Page { ToolTip.delay: Nheko.tooltipDelay ToolTip.text: qsTr("Room directory") ToolTip.visible: hovered - height: 22 + Layout.preferredHeight: 22 + Layout.preferredWidth: 22 hoverEnabled: true image: ":/icons/icons/ui/room-directory.svg" visible: !collapsed - width: 22 onClicked: { var win = roomDirectoryComponent.createObject(timelineRoot); @@ -118,12 +118,12 @@ Page { ToolTip.delay: Nheko.tooltipDelay ToolTip.text: qsTr("Search rooms (Ctrl+K)") ToolTip.visible: hovered - height: 22 + Layout.preferredHeight: 22 + Layout.preferredWidth: 22 hoverEnabled: true image: ":/icons/icons/ui/search.svg" ripple: false visible: !collapsed - width: 22 onClicked: { var component = Qt.createComponent("qrc:/resources/qml/QuickSwitcher.qml"); @@ -142,12 +142,12 @@ Page { ToolTip.delay: Nheko.tooltipDelay ToolTip.text: qsTr("User settings") ToolTip.visible: hovered - height: 22 + Layout.preferredHeight: 22 + Layout.preferredWidth: 22 hoverEnabled: true image: ":/icons/icons/ui/settings.svg" ripple: false visible: !collapsed - width: 22 onClicked: mainWindow.push(userSettingsPage) } @@ -191,7 +191,7 @@ Page { spacing: Nheko.paddingMedium Avatar { - id: avatar + id: headerAvatar Layout.alignment: Qt.AlignVCenter Layout.preferredHeight: fontMetrics.lineSpacing * 2 @@ -206,10 +206,9 @@ Page { Layout.alignment: Qt.AlignLeft Layout.fillWidth: true - Layout.preferredWidth: parent.width - avatar.width - logoutButton.width - Nheko.paddingMedium * 2 + Layout.preferredWidth: parent.width - headerAvatar.width - logoutButton.width - Nheko.paddingMedium * 2 spacing: 0 visible: !collapsed - width: parent.width - avatar.width - logoutButton.width - Nheko.paddingMedium * 2 ElidedLabel { Layout.alignment: Qt.AlignBottom @@ -267,6 +266,40 @@ Page { onTriggered: statusDialog.show() } + Platform.MenuSeparator { + } + + Platform.MenuItemGroup { + id: onlineStateGroup + } + Platform.MenuItem { + text: qsTr("Automatic online status") + group: onlineStateGroup + checkable: true + checked: Settings.presence == Settings.AutomaticPresence + onTriggered: if (checked) Settings.presence = Settings.AutomaticPresence + } + Platform.MenuItem { + text: qsTr("Online") + group: onlineStateGroup + checkable: true + checked: Settings.presence == Settings.Online + onTriggered: if (checked) Settings.presence = Settings.Online + } + Platform.MenuItem { + text: qsTr("Unavailable") + group: onlineStateGroup + checkable: true + checked: Settings.presence == Settings.Unavailable + onTriggered: if (checked) Settings.presence = Settings.Unavailable + } + Platform.MenuItem { + text: qsTr("Offline") + group: onlineStateGroup + checkable: true + checked: Settings.presence == Settings.Offline + onTriggered: if (checked) Settings.presence = Settings.Offline + } } TapHandler { acceptedButtons: Qt.LeftButton @@ -287,7 +320,7 @@ Page { Rectangle { Layout.fillWidth: true color: Nheko.theme.separator - height: 2 + Layout.preferredHeight: 2 } Rectangle { id: unverifiedStuffBubble @@ -337,10 +370,10 @@ Page { ToolTip.delay: Nheko.tooltipDelay ToolTip.text: qsTr("Close") ToolTip.visible: closeUnverifiedBubble.hovered - height: fontMetrics.font.pixelSize + Layout.preferredHeight: fontMetrics.font.pixelSize hoverEnabled: true image: ":/icons/icons/ui/dismiss.svg" - width: fontMetrics.font.pixelSize + Layout.preferredWidth: fontMetrics.font.pixelSize onClicked: unverifiedStuffBubble.visible = false } @@ -366,7 +399,7 @@ Page { Rectangle { Layout.fillWidth: true color: Nheko.theme.separator - height: 1 + Layout.preferredHeight: 1 visible: unverifiedStuffBubble.visible } } @@ -405,6 +438,7 @@ Page { anchors.right: parent.right height: parent.height model: Rooms + boundsBehavior: Flickable.StopAtBounds //reuseItems: true ScrollBar.vertical: ScrollBar { @@ -450,12 +484,13 @@ Page { when: roomItem.hovered && !((Rooms.currentRoom && roomId == Rooms.currentRoom.roomId) || Rooms.currentRoomPreview.roomid == roomId) PropertyChanges { - backgroundColor: palette.dark - bubbleBackground: palette.highlight - bubbleText: palette.highlightedText - importantText: palette.brightText - target: roomItem - unimportantText: palette.brightText + roomItem { + backgroundColor: palette.dark + bubbleBackground: palette.highlight + bubbleText: palette.highlightedText + importantText: palette.brightText + unimportantText: palette.brightText + } } }, State { @@ -463,12 +498,13 @@ Page { when: (Rooms.currentRoom && roomId == Rooms.currentRoom.roomId) || Rooms.currentRoomPreview.roomid == roomId PropertyChanges { - backgroundColor: palette.highlight - bubbleBackground: palette.highlightedText - bubbleText: palette.highlight - importantText: palette.highlightedText - target: roomItem - unimportantText: palette.highlightedText + roomItem { + backgroundColor: palette.highlight + bubbleBackground: palette.highlightedText + bubbleText: palette.highlight + importantText: palette.highlightedText + unimportantText: palette.highlightedText + } } } ] @@ -516,11 +552,11 @@ Page { Layout.alignment: Qt.AlignVCenter displayName: roomName enabled: false - height: avatarSize roomid: roomId url: avatarUrl.replace("mxc://", "image://MxcImage/") userid: isDirect ? directChatOtherUserId : "" - width: avatarSize + Layout.preferredWidth: avatarSize + Layout.preferredHeight: avatarSize NotificationBubble { id: collapsedNotificationBubble @@ -540,11 +576,10 @@ Page { Layout.alignment: Qt.AlignLeft Layout.minimumWidth: 100 - Layout.preferredWidth: parent.width - avatar.width - height: avatar.height + Layout.preferredWidth: roomItem.width - avatar.width + Layout.preferredHeight: avatar.height spacing: Nheko.paddingSmall visible: !collapsed - width: roomItem.width - avatar.width Item { id: titleRow @@ -728,9 +763,9 @@ Page { } Platform.MenuItem { text: qsTr("Mark as read") + onTriggered: Rooms.getRoomById(roomContextMenu.roomid).markRoomAsRead() } - Platform.MenuItem { text: qsTr("Room settings") diff --git a/resources/qml/Root.qml b/resources/qml/Root.qml index 1e8a6a27..4acf3e73 100644 --- a/resources/qml/Root.qml +++ b/resources/qml/Root.qml @@ -2,17 +2,12 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import "./delegates" -import "./device-verification" import "./dialogs" -import "./emoji" import "./pages" -import "./voip" import "./ui" import Qt.labs.platform 1.1 as Platform import QtQuick import QtQuick.Controls -import QtQuick.Layouts import QtQuick.Window import im.nheko @@ -245,7 +240,7 @@ Pane { } } function onOpenRoomSettingsDialog(settings) { - var component = Qt.createComponent("qrc:/resources/qml/dialogs/RoomSettings.qml"); + var component = Qt.createComponent("qrc:/resources/qml/dialogs/RoomSettingsDialog.qml"); if (component.status == Component.Ready) { var roomSettings = component.createObject(timelineRoot, { "roomSettings": settings @@ -355,7 +350,6 @@ Pane { onAccepted: UIA.continue3pidReceived() } - Connections { function onConfirm3pidToken() { uiaConfirmationLinkDialog.open(); @@ -363,6 +357,18 @@ Pane { function onEmail() { uiaEmailPrompt.show(); } + function onFallbackAuth(fallback) { + var component = Qt.createComponent("qrc:/resources/qml/dialogs/FallbackAuthDialog.qml"); + if (component.status == Component.Ready) { + var dialog = component.createObject(timelineRoot, { + "fallback": fallback + }); + dialog.show(); + destroyOnClose(dialog); + } else { + console.error("Failed to create component: " + component.errorString()); + } + } function onPassword() { console.log("UIA: password needed"); uiaPassPrompt.show(); @@ -385,18 +391,6 @@ Pane { console.error("Failed to create component: " + component.errorString()); } } - function onFallbackAuth(fallback) { - var component = Qt.createComponent("qrc:/resources/qml/dialogs/FallbackAuthDialog.qml"); - if (component.status == Component.Ready) { - var dialog = component.createObject(timelineRoot, { - "fallback": fallback - }); - dialog.show(); - destroyOnClose(dialog); - } else { - console.error("Failed to create component: " + component.errorString()); - } - } target: UIA } diff --git a/resources/qml/SelfVerificationCheck.qml b/resources/qml/SelfVerificationCheck.qml index 1752df0e..42617f07 100644 --- a/resources/qml/SelfVerificationCheck.qml +++ b/resources/qml/SelfVerificationCheck.qml @@ -45,14 +45,14 @@ Item { Label { Layout.fillWidth: true Layout.margins: Nheko.paddingMedium - Layout.maximumWidth: (Overlay.overlay ? Overlay.overlay.width : 400) - Nheko.paddingMedium * 4 + Layout.maximumWidth: (showRecoverKeyDialog.Overlay.overlay ? showRecoverKeyDialog.Overlay.overlay.width : 400) - Nheko.paddingMedium * 4 color: palette.text text: qsTr("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!") wrapMode: Text.Wrap } TextEdit { Layout.alignment: Qt.AlignHCenter - Layout.maximumWidth: (Overlay.overlay ? Overlay.overlay.width : 400) - Nheko.paddingMedium * 4 + Layout.maximumWidth: (showRecoverKeyDialog.Overlay.overlay ? showRecoverKeyDialog.Overlay.overlay.width : 400) - Nheko.paddingMedium * 4 color: palette.text font.bold: true horizontalAlignment: TextEdit.AlignHCenter diff --git a/resources/qml/TimelineBubbleMessageStyle.qml b/resources/qml/TimelineBubbleMessageStyle.qml new file mode 100644 index 00000000..add701a1 --- /dev/null +++ b/resources/qml/TimelineBubbleMessageStyle.qml @@ -0,0 +1,350 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +import QtQuick +import QtQuick.Controls +import QtQuick.Window +import im.nheko + +TimelineEvent { + id: wrapper + ListView.delayRemove: true + width: chat.delegateMaxWidth + height: Math.max((section.item?.height ?? 0) + gridContainer.implicitHeight + reactionRow.implicitHeight + unreadRow.height, 10) + anchors.horizontalCenter: ListView.view.contentItem.horizontalCenter + //room: chatRoot.roommodel + + required property var day + required property bool isSender + required property int index + property var previousMessageDay: (index + 1) >= chat.count ? 0 : chat.model.dataByIndex(index + 1, Room.Day) + property bool previousMessageIsStateEvent: (index + 1) >= chat.count ? true : chat.model.dataByIndex(index + 1, Room.IsStateEvent) + property string previousMessageUserId: (index + 1) >= chat.count ? "" : chat.model.dataByIndex(index + 1, Room.UserId) + + required property date timestamp + required property string userId + required property string userName + required property string threadId + required property int userPowerlevel + required property bool isEdited + required property bool isEncrypted + required property var reactions + required property int status + required property int trustlevel + required property int notificationlevel + required property int type + required property bool isEditable + + required property QtObject messageContextMenu + required property QtObject replyContextMenu + required property Item messageActions + + property int avatarMargin: (wrapper.isStateEvent || Settings.smallAvatars ? 0 : (Nheko.avatarSize + 8)) // align bubble with section header + + property alias hovered: messageHover.hovered + property bool scrolledToThis: false + + mainInset: (threadId ? (4 + Nheko.paddingSmall) : 0) + 4 + replyInset: mainInset + 4 + Nheko.paddingSmall + + property int bubbleMargin: 40 + + maxWidth: chat.delegateMaxWidth - avatarMargin - bubbleMargin + + data: [ + Loader { + id: section + + active: wrapper.previousMessageUserId !== wrapper.userId || wrapper.previousMessageDay !== wrapper.day || wrapper.previousMessageIsStateEvent !== wrapper.isStateEvent + //asynchronous: true + sourceComponent: TimelineSectionHeader { + day: wrapper.day + isSender: wrapper.isSender + isStateEvent: wrapper.isStateEvent + parentWidth: wrapper.width + previousMessageDay: wrapper.previousMessageDay + previousMessageIsStateEvent: wrapper.previousMessageIsStateEvent + previousMessageUserId: wrapper.previousMessageUserId + timestamp: wrapper.timestamp + userId: wrapper.userId + userName: wrapper.userName + userPowerlevel: wrapper.userPowerlevel + } + visible: status == Loader.Ready + z: 4 + }, + Rectangle { + anchors.fill: gridContainer + property color threadColor: TimelineManager.userColor(wrapper.threadId, palette.base) + property color threadBackgroundColor: wrapper.threadId ? Qt.tint(palette.base, Qt.hsla(threadColor.hslHue, 0.7, threadColor.hslLightness, 0.1)) : "transparent" + color: (Settings.messageHoverHighlight && messageHover.hovered) ? palette.alternateBase : threadBackgroundColor + + // this looks better without margins + TapHandler { + acceptedButtons: Qt.RightButton + acceptedDevices: PointerDevice.Mouse | PointerDevice.Stylus | PointerDevice.TouchPad + gesturePolicy: TapHandler.ReleaseWithinBounds + + onSingleTapped: messageContextMenu.show(wrapper.eventId, wrapper.threadId, wrapper.type, wrapper.isSender, wrapper.isEncrypted, wrapper.isEditable, wrapper.main.hoveredLink, wrapper.main.copyText) + } + }, + Rectangle { + id: scrollHighlight + anchors.fill: gridContainer + + color: palette.highlight + enabled: false + opacity: 0 + visible: true + z: 1 + + states: State { + name: "revealed" + when: wrapper.scrolledToThis + } + transitions: Transition { + from: "" + to: "revealed" + + SequentialAnimation { + PropertyAnimation { + duration: 500 + easing.type: Easing.InOutQuad + from: 0 + properties: "opacity" + target: scrollHighlight + to: 1 + } + PropertyAnimation { + duration: 500 + easing.type: Easing.InOutQuad + from: 1 + properties: "opacity" + target: scrollHighlight + to: 0 + } + ScriptAction { + script: wrapper.room.eventShown() + } + } + } + }, + Item { + id: gridContainer + + width: wrapper.width - wrapper.avatarMargin + implicitHeight: messageBubble.implicitHeight + x: wrapper.avatarMargin + y: section.visible && section.active ? section.y + section.height : 0 + + HoverHandler { + id: messageHover + blocking: false + onHoveredChanged: () => { + if (!Settings.mobileMode && hovered) { + if (!messageActions.hovered) { + messageActions.model = wrapper; + messageActions.attached = wrapper; + messageActions.anchors.bottomMargin = -gridContainer.y + //messageActions.anchors.rightMargin = metadata.width + } + } + } + + } + + + AbstractButton { + id: messageBubble + + anchors.left: (wrapper.isStateEvent || wrapper.isSender) ? undefined : parent.left // qmllint disable Quick.anchor-combinations + anchors.right: (wrapper.isStateEvent || !wrapper.isSender) ? undefined : parent.right + anchors.horizontalCenter: wrapper.isStateEvent ? parent.horizontalCenter : undefined + + property color userColor: TimelineManager.userColor(wrapper.main?.userId ?? '', palette.base) + + contentItem: Item { + id: contentPlacementContainer + + property bool fitsMetadata: ((wrapper.main?.width ?? 0) + wrapper.mainInset + metadata.width) < wrapper.maxWidth + + // This doesnt work because of tables. They might have content in the top of the cell, while the background reaches to the bottom. Maybe using the textDocument we could do more? + // property bool fitsMetadataInside: wrapper.main?.positionAt ? (wrapper.main.positionAt(wrapper.main.width, wrapper.main.height - 4) == wrapper.main.positionAt(wrapper.main.width - metadata.width, wrapper.main.height - 4)) : false + property bool fitsMetadataInside: false + + implicitWidth: Math.max((wrapper.reply?.width ?? 0) + wrapper.replyInset, (wrapper.main?.width ?? 0) + wrapper.mainInset + ((fitsMetadata && !fitsMetadataInside) ? metadata.width : 0)) + implicitHeight: contentColumn.implicitHeight + ((fitsMetadata || fitsMetadataInside) ? 0 : metadata.height) + + TimelineMetadata { + id: metadata + + scaling: 0.75 + + anchors.right: parent.right + anchors.bottom: parent.bottom + + visible: !wrapper.isStateEvent + + eventId: wrapper.eventId + status: wrapper.status + trustlevel: wrapper.trustlevel + isEdited: wrapper.isEdited + isEncrypted: wrapper.isEncrypted + threadId: wrapper.threadId + timestamp: wrapper.timestamp + room: wrapper.room + } + + Column { + id: contentColumn + + anchors.left: parent.left + anchors.right: parent.right + + AbstractButton { + id: replyRow + visible: wrapper.reply + + height: replyLine.height + anchors.left: parent.left + anchors.right: parent.right + + property color userColor: TimelineManager.userColor(wrapper.reply?.userId ?? '', palette.base) + + clip: true + + NhekoCursorShape { + anchors.fill: parent + cursorShape: Qt.PointingHandCursor + } + + contentItem: Row { + id: replyRowLay + + spacing: Nheko.paddingSmall + + Rectangle { + id: replyLine + height: Math.min( wrapper.reply?.height, timelineView.height / 10) + Nheko.paddingSmall + replyUserButton.height + color: replyRow.userColor + width: 4 + } + + Column { + spacing: 0 + + id: replyCol + + AbstractButton { + id: replyUserButton + + contentItem: Label { + id: userName_ + text: wrapper.reply?.userName ?? '' + color: replyRow.userColor + textFormat: Text.RichText + width: wrapper.maxWidth + //elideWidth: wrapper.maxWidth + } + onClicked: wrapper.room.openUserProfile(wrapper.reply?.userId) + } + data: [ + replyUserButton, + wrapper.reply, + ] + } + } + + background: Rectangle { + //width: replyRow.implicitContentWidth + color: Qt.tint(palette.base, Qt.hsla(replyRow.userColor.hslHue, 0.5, replyRow.userColor.hslLightness, 0.1)) + } + + onClicked: { + let link = wrapper.reply.hoveredLink + if (link) { + Nheko.openLink(link) + } else { + console.log("Scrolling to "+wrapper.replyTo); + wrapper.room.showEvent(wrapper.replyTo) + } + } + onPressAndHold: wrapper.replyContextMenu.show(wrapper.reply.copyText ?? "", wrapper.reply.linkAt ? wrapper.reply.linkAt(pressX-replyLine.width - Nheko.paddingSmall, pressY - replyUserButton.implicitHeight) : "", wrapper.replyTo) + TapHandler { + acceptedButtons: Qt.RightButton + onSingleTapped: (eventPoint) => wrapper.replyContextMenu.show(wrapper.reply.copyText ?? "", wrapper.reply.linkAt ? wrapper.reply.linkAt(eventPoint.position.x-replyLine.width - Nheko.paddingSmall, eventPoint.position.y - replyUserButton.implicitHeight) : "", wrapper.replyTo) + gesturePolicy: TapHandler.ReleaseWithinBounds + acceptedDevices: PointerDevice.Mouse | PointerDevice.Stylus | PointerDevice.TouchPad + } + } + + data: [replyRow, wrapper.main] + } + + + } + + padding: wrapper.isStateEvent ? 0 : 4 + background: Rectangle { + color: !wrapper.isStateEvent ? Qt.tint(palette.base, Qt.hsla(messageBubble.userColor.hslHue, wrapper.hovered ? 0.8 : 0.5, messageBubble.userColor.hslLightness, 0.2)) : "transparent" + radius: 4 + border.color: Nheko.theme.red + border.width: wrapper.notificationlevel == MtxEvent.Highlight ? 1 : 0 + } + } + + DragHandler { + id: replyDragHandler + yAxis.enabled: false + xAxis.enabled: true + xAxis.minimum: wrapper.avatarMargin - 100 + xAxis.maximum: wrapper.avatarMargin + onActiveChanged: { + if (!replyDragHandler.active) { + if (replyDragHandler.xAxis.minimum <= replyDragHandler.xAxis.activeValue + 1) { + wrapper.room.reply = wrapper.eventId + } + gridContainer.x = wrapper.avatarMargin; + } + } + } + + TapHandler { + onDoubleTapped: wrapper.room.reply = wrapper.eventId + } + + }, + Reactions { + id: reactionRow + + eventId: wrapper.eventId + layoutDirection: (!wrapper.isStateEvent && wrapper.isSender) ? Qt.RightToLeft : Qt.LeftToRight + reactions: wrapper.reactions + width: wrapper.width - wrapper.avatarMargin + x: wrapper.avatarMargin + + anchors { + //left: row.bubbleOnRight ? undefined : row.left + //right: row.bubbleOnRight ? row.right : undefined + top: gridContainer.bottom + topMargin: -4 + } + }, + Rectangle { + id: unreadRow + + color: palette.highlight + height: visible ? 3 : 0 + visible: (wrapper.index > 0 && (wrapper.room.fullyReadEventId == wrapper.eventId)) + + anchors { + left: parent.left + right: parent.right + top: reactionRow.bottom + topMargin: 5 + } + } + ] +} + diff --git a/resources/qml/TimelineDefaultMessageStyle.qml b/resources/qml/TimelineDefaultMessageStyle.qml new file mode 100644 index 00000000..e9b52e93 --- /dev/null +++ b/resources/qml/TimelineDefaultMessageStyle.qml @@ -0,0 +1,339 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +import QtQuick +import QtQuick.Controls +import QtQuick.Window +import im.nheko + +TimelineEvent { + id: wrapper + ListView.delayRemove: true + width: chat.delegateMaxWidth + height: Math.max((section.item?.height ?? 0) + gridContainer.implicitHeight + reactionRow.implicitHeight + unreadRow.height, 10) + anchors.horizontalCenter: ListView.view.contentItem.horizontalCenter + //room: chatRoot.roommodel + + required property var day + required property bool isSender + required property int index + property var previousMessageDay: (index + 1) >= chat.count ? 0 : chat.model.dataByIndex(index + 1, Room.Day) + property bool previousMessageIsStateEvent: (index + 1) >= chat.count ? true : chat.model.dataByIndex(index + 1, Room.IsStateEvent) + property string previousMessageUserId: (index + 1) >= chat.count ? "" : chat.model.dataByIndex(index + 1, Room.UserId) + + required property date timestamp + required property string userId + required property string userName + required property string threadId + required property int userPowerlevel + required property bool isEdited + required property bool isEncrypted + required property var reactions + required property int status + required property int trustlevel + required property int notificationlevel + required property int type + required property bool isEditable + + required property QtObject messageContextMenu + required property QtObject replyContextMenu + required property Item messageActions + + property int avatarMargin: (wrapper.isStateEvent || Settings.smallAvatars ? 0 : (Nheko.avatarSize + 8)) // align bubble with section header + + property alias hovered: messageHover.hovered + property bool scrolledToThis: false + + mainInset: (threadId ? (4 + Nheko.paddingSmall) : 0) + replyInset: mainInset + 4 + Nheko.paddingSmall + + maxWidth: chat.delegateMaxWidth - avatarMargin - metadata.width + + data: [ + Loader { + id: section + + active: wrapper.previousMessageUserId !== wrapper.userId || wrapper.previousMessageDay !== wrapper.day || wrapper.previousMessageIsStateEvent !== wrapper.isStateEvent + //asynchronous: true + sourceComponent: TimelineSectionHeader { + day: wrapper.day + isSender: wrapper.isSender + isStateEvent: wrapper.isStateEvent + parentWidth: wrapper.width + previousMessageDay: wrapper.previousMessageDay + previousMessageIsStateEvent: wrapper.previousMessageIsStateEvent + previousMessageUserId: wrapper.previousMessageUserId + timestamp: wrapper.timestamp + userId: wrapper.userId + userName: wrapper.userName + userPowerlevel: wrapper.userPowerlevel + } + visible: status == Loader.Ready + z: 4 + }, + Rectangle { + anchors.fill: gridContainer + color: (Settings.messageHoverHighlight && messageHover.hovered) ? palette.alternateBase : "transparent" + + // this looks better without margins + TapHandler { + acceptedButtons: Qt.RightButton + acceptedDevices: PointerDevice.Mouse | PointerDevice.Stylus | PointerDevice.TouchPad + gesturePolicy: TapHandler.ReleaseWithinBounds + + onSingleTapped: messageContextMenu.show(wrapper.eventId, wrapper.threadId, wrapper.type, wrapper.isSender, wrapper.isEncrypted, wrapper.isEditable, wrapper.main.hoveredLink, wrapper.main.copyText) + } + }, + Rectangle { + id: scrollHighlight + anchors.fill: gridContainer + + color: palette.highlight + enabled: false + opacity: 0 + visible: true + z: 1 + + states: State { + name: "revealed" + when: wrapper.scrolledToThis + } + transitions: Transition { + from: "" + to: "revealed" + + SequentialAnimation { + PropertyAnimation { + duration: 500 + easing.type: Easing.InOutQuad + from: 0 + properties: "opacity" + target: scrollHighlight + to: 1 + } + PropertyAnimation { + duration: 500 + easing.type: Easing.InOutQuad + from: 1 + properties: "opacity" + target: scrollHighlight + to: 0 + } + ScriptAction { + script: wrapper.room.eventShown() + } + } + } + }, + Rectangle { + anchors.top: gridContainer.top + anchors.left: gridContainer.left + anchors.topMargin: -2 + anchors.leftMargin: -2 + color: "transparent" + border.color: Nheko.theme.red + border.width: wrapper.notificationlevel == MtxEvent.Highlight ? 1 : 0 + radius: 4 + height: contentColumn.implicitHeight + 4 + width: contentColumn.implicitWidth + 4 + }, + Row { + id: gridContainer + + width: wrapper.width - wrapper.avatarMargin + x: wrapper.avatarMargin + y: section.visible && section.active ? section.y + section.height : 0 + spacing: Nheko.paddingSmall + + HoverHandler { + id: messageHover + blocking: false + onHoveredChanged: () => { + if (!Settings.mobileMode && hovered) { + if (!messageActions.hovered) { + messageActions.model = wrapper; + messageActions.attached = wrapper; + messageActions.anchors.bottomMargin = -gridContainer.y + messageActions.anchors.rightMargin = metadata.width + } + } + } + + } + + AbstractButton { + ToolTip.delay: Nheko.tooltipDelay + ToolTip.text: qsTr("Part of a thread") + ToolTip.visible: hovered + height: contentColumn.height + visible: wrapper.threadId + width: 4 + + onClicked: wrapper.room.thread = wrapper.threadId + + Rectangle { + id: threadLine + + anchors.fill: parent + color: TimelineManager.userColor(wrapper.threadId, palette.base) + } + } + + Item { + visible: wrapper.isStateEvent + width: (wrapper.maxWidth - (wrapper.main?.width ?? 0)) / 2 + height: 1 + } + + Column { + id: contentColumn + + AbstractButton { + id: replyRow + visible: wrapper.reply + + height: replyLine.height + + property color userColor: TimelineManager.userColor(wrapper.reply?.userId ?? '', palette.base) + + clip: true + + NhekoCursorShape { + anchors.fill: parent + cursorShape: Qt.PointingHandCursor + } + + contentItem: Row { + id: replyRowLay + + spacing: Nheko.paddingSmall + + Rectangle { + id: replyLine + height: Math.min( wrapper.reply?.height, timelineView.height / 10) + Nheko.paddingSmall + replyUserButton.height + color: replyRow.userColor + width: 4 + } + + Column { + spacing: 0 + + id: replyCol + + AbstractButton { + id: replyUserButton + + contentItem: Label { + id: userName_ + text: wrapper.reply?.userName ?? '' + color: replyRow.userColor + textFormat: Text.RichText + width: wrapper.maxWidth + //elideWidth: wrapper.maxWidth + } + onClicked: wrapper.room.openUserProfile(wrapper.reply?.userId) + } + data: [ + replyUserButton, + wrapper.reply, + ] + } + } + + background: Rectangle { + //width: replyRow.implicitContentWidth + color: Qt.tint(palette.base, Qt.hsla(replyRow.userColor.hslHue, 0.5, replyRow.userColor.hslLightness, 0.1)) + } + + onClicked: { + let link = wrapper.reply.hoveredLink + if (link) { + Nheko.openLink(link) + } else { + console.log("Scrolling to "+wrapper.replyTo); + wrapper.room.showEvent(wrapper.replyTo) + } + } + onPressAndHold: wrapper.replyContextMenu.show(wrapper.reply.copyText ?? "", wrapper.reply.linkAt ? wrapper.reply.linkAt(pressX-replyLine.width - Nheko.paddingSmall, pressY - replyUserButton.implicitHeight) : "", wrapper.replyTo) + TapHandler { + acceptedButtons: Qt.RightButton + onSingleTapped: (eventPoint) => wrapper.replyContextMenu.show(wrapper.reply.copyText ?? "", wrapper.reply.linkAt ? wrapper.reply.linkAt(eventPoint.position.x-replyLine.width - Nheko.paddingSmall, eventPoint.position.y - replyUserButton.implicitHeight) : "", wrapper.replyTo) + gesturePolicy: TapHandler.ReleaseWithinBounds + acceptedDevices: PointerDevice.Mouse | PointerDevice.Stylus | PointerDevice.TouchPad + } + } + + data: [ + replyRow, wrapper.main, + ] + } + + DragHandler { + id: replyDragHandler + yAxis.enabled: false + xAxis.enabled: true + xAxis.minimum: wrapper.avatarMargin - 100 + xAxis.maximum: wrapper.avatarMargin + onActiveChanged: { + if (!replyDragHandler.active) { + if (replyDragHandler.xAxis.minimum <= replyDragHandler.xAxis.activeValue + 1) { + wrapper.room.reply = wrapper.eventId + } + gridContainer.x = wrapper.avatarMargin; + } + } + } + + TapHandler { + onDoubleTapped: wrapper.room.reply = wrapper.eventId + } + }, + TimelineMetadata { + id: metadata + + scaling: 1 + + anchors.right: parent.right + y: section.visible && section.active ? section.y + section.height : 0 + + visible: !wrapper.isStateEvent + + eventId: wrapper.eventId + status: wrapper.status + trustlevel: wrapper.trustlevel + isEdited: wrapper.isEdited + isEncrypted: wrapper.isEncrypted + threadId: wrapper.threadId + timestamp: wrapper.timestamp + room: wrapper.room + }, + Reactions { + id: reactionRow + + eventId: wrapper.eventId + reactions: wrapper.reactions + width: wrapper.width - wrapper.avatarMargin + x: wrapper.avatarMargin + + anchors { + top: gridContainer.bottom + topMargin: -4 + } + }, + Rectangle { + id: unreadRow + + color: palette.highlight + height: visible ? 3 : 0 + visible: (wrapper.index > 0 && (wrapper.room.fullyReadEventId == wrapper.eventId)) + + anchors { + left: parent.left + right: parent.right + top: reactionRow.bottom + topMargin: 5 + } + } + ] +} diff --git a/resources/qml/TimelineEvent.qml b/resources/qml/TimelineEvent.qml new file mode 100644 index 00000000..3cc239c9 --- /dev/null +++ b/resources/qml/TimelineEvent.qml @@ -0,0 +1,263 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +import "./delegates" +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.2 +import QtQuick.Window 2.13 +import im.nheko 1.0 + +EventDelegateChooser { + id: wrapper + + required property bool isStateEvent + + // qmllint disable required + EventDelegateChoice { + roleValues: [MtxEvent.TextMessage, MtxEvent.NoticeMessage, MtxEvent.ElementEffectMessage, MtxEvent.UnknownMessage,] + + TextMessage { + required property string formattedBody + required property int type + required property string userId + required property string userName + + Layout.fillWidth: true + //Layout.maximumWidth: implicitWidth + + color: type == MtxEvent.NoticeMessage ? palette.active.buttonText : palette.active.text + font.italic: type == MtxEvent.NoticeMessage + formatted: formattedBody + keepFullText: true + } + } + EventDelegateChoice { + roleValues: [MtxEvent.EmoteMessage,] + + TextMessage { + required property string formattedBody + required property string userId + required property string userName + + Layout.fillWidth: true + //Layout.maximumWidth: implicitWidth + + color: TimelineManager.userColor(userId, palette.active.base) + font.italic: true + formatted: TimelineManager.escapeEmoji(userName) + " " + formattedBody + keepFullText: true + } + } + EventDelegateChoice { + roleValues: [MtxEvent.CanonicalAlias, MtxEvent.ServerAcl, MtxEvent.Name, MtxEvent.Topic, MtxEvent.Avatar, MtxEvent.PinnedEvents, MtxEvent.ImagePackInRoom, MtxEvent.SpaceParent, MtxEvent.RoomCreate, MtxEvent.PowerLevels, MtxEvent.PolicyRuleUser, MtxEvent.PolicyRuleRoom, MtxEvent.PolicyRuleServer, MtxEvent.RoomJoinRules, MtxEvent.RoomHistoryVisibility, MtxEvent.RoomGuestAccess,] + + TextMessage { + required property string formattedStateEvent + required property string userId + required property string userName + + body: '' + color: palette.active.buttonText + font.italic: true + font.pointSize: Settings.fontSize * 0.8 + formatted: '' + horizontalAlignment: Text.AlignHCenter + isOnlyEmoji: false + keepFullText: true + text: formattedStateEvent + } + } + EventDelegateChoice { + roleValues: [MtxEvent.CallInvite,] + + TextMessage { + required property string callType + required property string userId + required property string userName + + Layout.fillWidth: true + body: formatted + color: palette.active.buttonText + font.italic: true + formatted: { + switch (callType) { + case "voice": + return qsTr("%1 placed a voice call.").arg(TimelineManager.escapeEmoji(userName)); + case "video": + return qsTr("%1 placed a video call.").arg(TimelineManager.escapeEmoji(userName)); + default: + return qsTr("%1 placed a call.").arg(TimelineManager.escapeEmoji(userName)); + } + } + isOnlyEmoji: false + keepFullText: true + } + } + EventDelegateChoice { + roleValues: [MtxEvent.CallAnswer, MtxEvent.CallReject, MtxEvent.CallSelectAnswer, MtxEvent.CallHangUp, MtxEvent.CallCandidates, MtxEvent.CallNegotiate,] + + TextMessage { + required property int type + required property string userId + required property string userName + + Layout.fillWidth: true + body: formatted + color: palette.active.buttonText + font.italic: true + formatted: { + switch (type) { + case MtxEvent.CallAnswer: + return qsTr("%1 answered the call.").arg(TimelineManager.escapeEmoji(userName)); + case MtxEvent.CallReject: + return qsTr("%1 rejected the call.").arg(TimelineManager.escapeEmoji(userName)); + case MtxEvent.CallSelectAnswer: + return qsTr("%1 selected answer.").arg(TimelineManager.escapeEmoji(userName)); + case MtxEvent.CallHangUp: + return qsTr("%1 ended the call.").arg(TimelineManager.escapeEmoji(userName)); + case MtxEvent.CallCandidates: + return qsTr("%1 is negotiating the call...").arg(TimelineManager.escapeEmoji(userName)); + case MtxEvent.CallNegotiate: + return qsTr("%1 is negotiating the call...").arg(TimelineManager.escapeEmoji(userName)); + } + } + isOnlyEmoji: false + keepFullText: true + } + } + EventDelegateChoice { + roleValues: [MtxEvent.ImageMessage, MtxEvent.Sticker,] + + ImageMessage { + required property string userId + required property string userName + + Layout.fillWidth: true + //Layout.maximumWidth: tempWidth + //Layout.maximumHeight: timelineView.height / 8 + containerHeight: timelineView.height + } + } + EventDelegateChoice { + roleValues: [MtxEvent.FileMessage,] + + FileMessage { + required property string userId + required property string userName + + Layout.fillWidth: true + } + } + EventDelegateChoice { + roleValues: [MtxEvent.VideoMessage, MtxEvent.AudioMessage,] + + PlayableMediaMessage { + required property string userId + required property string userName + + Layout.fillWidth: true + } + } + EventDelegateChoice { + roleValues: [MtxEvent.Encrypted,] + + Encrypted { + required property string userId + required property string userName + + Layout.fillWidth: true + } + } + EventDelegateChoice { + roleValues: [MtxEvent.Encryption,] + + EncryptionEnabled { + required property string userId + + Layout.fillWidth: true + } + } + EventDelegateChoice { + roleValues: [MtxEvent.Redacted] + + Redacted { + required property string userId + required property string userName + + Layout.fillWidth: true + } + } + EventDelegateChoice { + roleValues: [MtxEvent.Member] + + ColumnLayout { + id: member + + required property string formattedStateEvent + required property Room room + required property string userId + required property string userName + + NoticeMessage { + Layout.fillWidth: true + body: formatted + formatted: member.formattedStateEvent + isOnlyEmoji: false + isReply: EventDelegateChooser.isReply + isStateEvent: true + keepFullText: true + } + Button { + Layout.alignment: Qt.AlignHCenter + text: qsTr("Allow them in") + visible: member.room.showAcceptKnockButton(member.eventId) + + onClicked: member.room.acceptKnock(member.eventId) + } + } + } + EventDelegateChoice { + roleValues: [MtxEvent.Tombstone] + + ColumnLayout { + id: tombstone + + required property string body + required property string eventId + required property Room room + required property string userId + required property string userName + + NoticeMessage { + Layout.fillWidth: true + body: formatted + formatted: qsTr("This room was replaced for the following reason: %1").arg(tombstone.body) + isOnlyEmoji: false + isReply: EventDelegateChooser.isReply + isStateEvent: true + keepFullText: true + } + Button { + Layout.alignment: Qt.AlignHCenter + text: qsTr("Go to replacement room") + + onClicked: tombstone.room.joinReplacementRoom(tombstone.eventId) + } + } + } + EventDelegateChoice { + roleValues: [] + + MatrixText { + required property string typeString + required property string userId + required property string userName + + Layout.fillWidth: true + text: "Unsupported: " + typeString + } + } + // qmllint enable required +} diff --git a/resources/qml/TimelineMetadata.qml b/resources/qml/TimelineMetadata.qml new file mode 100644 index 00000000..0085b950 --- /dev/null +++ b/resources/qml/TimelineMetadata.qml @@ -0,0 +1,91 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import QtQuick.Window +import im.nheko + +RowLayout { + id: metadata + + property int iconSize: Math.floor(fontMetrics.ascent * scaling) + required property double scaling + + required property string eventId + required property int status + required property int trustlevel + required property bool isEdited + required property bool isEncrypted + required property string threadId + required property date timestamp + required property Room room + + spacing: 2 + + StatusIndicator { + Layout.alignment: Qt.AlignRight | Qt.AlignVCenter + Layout.preferredHeight: parent.iconSize + Layout.preferredWidth: parent.iconSize + eventId: metadata.eventId + status: metadata.status + } + Image { + Layout.alignment: Qt.AlignRight | Qt.AlignVCenter + Layout.preferredHeight: parent.iconSize + Layout.preferredWidth: parent.iconSize + ToolTip.delay: Nheko.tooltipDelay + ToolTip.text: qsTr("Edited") + ToolTip.visible: editHovered.hovered + source: "image://colorimage/:/icons/icons/ui/edit.svg?" + ((metadata.eventId == metadata.room.edit) ? palette.highlight : palette.buttonText) + sourceSize.height: parent.iconSize * Screen.devicePixelRatio + sourceSize.width: parent.iconSize * Screen.devicePixelRatio + visible: metadata.isEdited || metadata.eventId == metadata.room.edit + HoverHandler { + id: editHovered + + } + } + ImageButton { + Layout.alignment: Qt.AlignRight | Qt.AlignVCenter + Layout.preferredHeight: parent.iconSize + Layout.preferredWidth: parent.iconSize + ToolTip.delay: Nheko.tooltipDelay + ToolTip.text: qsTr("Part of a thread") + ToolTip.visible: hovered + buttonTextColor: TimelineManager.userColor(metadata.threadId, palette.base) + image: ":/icons/icons/ui/thread.svg" + visible: metadata.threadId + + onClicked: metadata.room.thread = threadId + } + EncryptionIndicator { + Layout.alignment: Qt.AlignRight | Qt.AlignVCenter + Layout.preferredHeight: parent.iconSize + Layout.preferredWidth: parent.iconSize + encrypted: metadata.isEncrypted + sourceSize.height: parent.iconSize * Screen.devicePixelRatio + sourceSize.width: parent.iconSize * Screen.devicePixelRatio + trust: metadata.trustlevel + visible: metadata.room.isEncrypted + } + Label { + id: ts + + Layout.alignment: Qt.AlignRight | Qt.AlignTop + Layout.preferredWidth: implicitWidth + ToolTip.delay: Nheko.tooltipDelay + ToolTip.text: Qt.formatDateTime(metadata.timestamp, Qt.DefaultLocaleLongDate) + ToolTip.visible: ma.hovered + color: palette.inactive.text + font.pointSize: fontMetrics.font.pointSize * parent.scaling + text: metadata.timestamp.toLocaleTimeString(Locale.ShortFormat) + + HoverHandler { + id: ma + + } + } +} diff --git a/resources/qml/TimelineRow.qml b/resources/qml/TimelineRow.qml deleted file mode 100644 index 16a31a3c..00000000 --- a/resources/qml/TimelineRow.qml +++ /dev/null @@ -1,349 +0,0 @@ -// SPDX-FileCopyrightText: Nheko Contributors -// -// SPDX-License-Identifier: GPL-3.0-or-later - -import "./delegates" -import "./emoji" -import QtQuick 2.15 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.2 -import QtQuick.Window 2.13 -import im.nheko 1.0 - -AbstractButton { - id: r - - required property string blurhash - required property string body - required property string callType - required property int duration - required property int encryptionError - required property string eventId - required property string filename - required property string filesize - required property string formattedBody - required property int index - required property bool isEditable - required property bool isEdited - required property bool isEncrypted - required property bool isOnlyEmoji - required property bool isSender - required property bool isStateEvent - required property int notificationlevel - required property int originalWidth - required property double proportionalHeight - required property var reactions - required property int relatedEventCacheBuster - required property string replyTo - required property string roomName - required property string roomTopic - required property int status - required property string threadId - required property string thumbnailUrl - required property var timestamp - required property int trustlevel - required property int type - required property string typeString - required property string url - required property string userId - required property string userName - - height: row.height + (reactionRow.height > 0 ? reactionRow.height - 2 : 0) + unreadRow.height - hoverEnabled: true - - states: State { - name: "dragging" - when: draghandler.active - } - transitions: Transition { - from: "dragging" - to: "" - - PropertyAnimation { - duration: 100 - easing.type: Easing.InOutQuad - properties: "x" - target: r - to: 0 - } - } - - onClicked: { - let link = contentItem.child.linkAt != undefined && contentItem.child.linkAt(pressX - row.x - msg.x, pressY - row.y - msg.y - contentItem.y); - if (link) { - Nheko.openLink(link); - } - } - onDoubleClicked: room.reply = eventId - onPressAndHold: messageContextMenu.show(eventId, threadId, type, isSender, isEncrypted, isEditable, contentItem.child.hoveredLink, contentItem.child.copyText) - - Rectangle { - anchors.fill: parent - color: (Settings.messageHoverHighlight && hovered) ? palette.alternateBase : "transparent" - - // this looks better without margins - TapHandler { - acceptedButtons: Qt.RightButton - acceptedDevices: PointerDevice.Mouse | PointerDevice.Stylus | PointerDevice.TouchPad - gesturePolicy: TapHandler.ReleaseWithinBounds - - onSingleTapped: messageContextMenu.show(eventId, threadId, type, isSender, isEncrypted, isEditable, contentItem.child.hoveredLink, contentItem.child.copyText) - } - } - DragHandler { - id: draghandler - - xAxis.maximum: 100 - xAxis.minimum: -100 - yAxis.enabled: false - - onActiveChanged: { - if (!active && (x < -70 || x > 70)) - room.reply = eventId; - } - } - AbstractButton { - ToolTip.delay: Nheko.tooltipDelay - ToolTip.text: qsTr("Part of a thread") - ToolTip.visible: hovered - anchors.left: parent.left - anchors.leftMargin: Settings.smallAvatars ? 0 : (Nheko.avatarSize + 8) // align bubble with section header - height: parent.height - visible: threadId - width: 4 - - onClicked: room.thread = threadId - - Rectangle { - id: threadLine - - anchors.fill: parent - color: TimelineManager.userColor(threadId, palette.base) - } - } - Rectangle { - id: row - - property color bgColor: palette.base - property bool bubbleOnRight: isSender && Settings.bubbles - property int maxWidth: (parent.width - (Settings.smallAvatars || isStateEvent ? 0 : Nheko.avatarSize + 8)) * (Settings.bubbles && !isStateEvent ? 0.9 : 1) - property color userColor: TimelineManager.userColor(userId, palette.base) - - anchors.horizontalCenter: isStateEvent ? parent.horizontalCenter : undefined - anchors.left: (isStateEvent || bubbleOnRight) ? undefined : parent.left - anchors.leftMargin: (isStateEvent || Settings.smallAvatars ? 0 : (Nheko.avatarSize + 8)) + (threadId ? 6 : 0) // align bubble with section header - anchors.right: (isStateEvent || !bubbleOnRight) ? undefined : parent.right - border.color: Nheko.theme.red - border.width: r.notificationlevel == MtxEvent.Highlight ? 1 : 0 - color: (Settings.bubbles && !isStateEvent) ? Qt.tint(bgColor, Qt.hsla(userColor.hslHue, 0.5, userColor.hslLightness, 0.2)) : "#00000000" - height: msg.height + msg.anchors.margins * 2 - radius: 4 - width: Settings.bubbles ? Math.min(maxWidth, Math.max(reply.implicitWidth + 8, contentItem.implicitWidth + metadata.width + 20)) : maxWidth - - GridLayout { - id: msg - - columnSpacing: 2 - columns: Settings.bubbles ? 1 : 2 - rowSpacing: 0 - rows: Settings.bubbles ? 3 : 2 - - anchors { - left: parent.left - leftMargin: 4 - margins: (Settings.bubbles && !isStateEvent) ? 4 : 2 - right: parent.right - rightMargin: 4 - top: parent.top - } - - // fancy reply, if this is a reply - Reply { - id: reply - - function fromModel(role) { - return replyTo != "" ? room.dataById(replyTo, role, r.eventId) : null; - } - - Layout.bottomMargin: visible ? 2 : 0 - Layout.column: 0 - Layout.fillWidth: true - Layout.maximumWidth: Settings.bubbles ? Number.MAX_VALUE : implicitWidth - Layout.preferredHeight: height - Layout.row: 0 - blurhash: r.relatedEventCacheBuster, fromModel(Room.Blurhash) ?? "" - body: r.relatedEventCacheBuster, fromModel(Room.Body) ?? "" - callType: r.relatedEventCacheBuster, fromModel(Room.Voip) ?? "" - duration: r.relatedEventCacheBuster, fromModel(Room.Duration) ?? 0 - encryptionError: r.relatedEventCacheBuster, fromModel(Room.EncryptionError) ?? 0 - eventId: fromModel(Room.EventId) ?? "" - filename: r.relatedEventCacheBuster, fromModel(Room.Filename) ?? "" - filesize: r.relatedEventCacheBuster, fromModel(Room.Filesize) ?? "" - formattedBody: r.relatedEventCacheBuster, fromModel(Room.FormattedBody) ?? "" - isOnlyEmoji: r.relatedEventCacheBuster, fromModel(Room.IsOnlyEmoji) ?? false - isStateEvent: r.relatedEventCacheBuster, fromModel(Room.IsStateEvent) ?? false - originalWidth: r.relatedEventCacheBuster, fromModel(Room.OriginalWidth) ?? 0 - proportionalHeight: r.relatedEventCacheBuster, fromModel(Room.ProportionalHeight) ?? 1 - relatedEventCacheBuster: r.relatedEventCacheBuster, fromModel(Room.RelatedEventCacheBuster) ?? 0 - roomName: r.relatedEventCacheBuster, fromModel(Room.RoomName) ?? "" - roomTopic: r.relatedEventCacheBuster, fromModel(Room.RoomTopic) ?? "" - thumbnailUrl: r.relatedEventCacheBuster, fromModel(Room.ThumbnailUrl) ?? "" - type: r.relatedEventCacheBuster, fromModel(Room.Type) ?? MtxEvent.UnknownMessage - typeString: r.relatedEventCacheBuster, fromModel(Room.TypeString) ?? "" - url: r.relatedEventCacheBuster, fromModel(Room.Url) ?? "" - userColor: r.relatedEventCacheBuster, TimelineManager.userColor(userId, palette.base) - userId: r.relatedEventCacheBuster, fromModel(Room.UserId) ?? "" - userName: r.relatedEventCacheBuster, fromModel(Room.UserName) ?? "" - visible: replyTo - } - - // actual message content - MessageDelegate { - id: contentItem - - Layout.column: 0 - Layout.fillWidth: true - Layout.preferredHeight: height - Layout.row: 1 - blurhash: r.blurhash - body: r.body - callType: r.callType - duration: r.duration - encryptionError: r.encryptionError - eventId: r.eventId - filename: r.filename - filesize: r.filesize - formattedBody: r.formattedBody - isOnlyEmoji: r.isOnlyEmoji - isReply: false - isStateEvent: r.isStateEvent - metadataWidth: metadata.width - originalWidth: r.originalWidth - proportionalHeight: r.proportionalHeight - relatedEventCacheBuster: r.relatedEventCacheBuster - roomName: r.roomName - roomTopic: r.roomTopic - thumbnailUrl: r.thumbnailUrl - type: r.type - typeString: r.typeString ?? "" - url: r.url - userId: r.userId - userName: r.userName - } - Row { - id: metadata - - property int iconSize: Math.floor(fontMetrics.ascent * scaling) - property double scaling: Settings.bubbles ? 0.75 : 1 - - Layout.alignment: Qt.AlignTop | Qt.AlignRight - Layout.bottomMargin: -2 - Layout.column: Settings.bubbles ? 0 : 1 - Layout.preferredWidth: implicitWidth - Layout.row: Settings.bubbles ? 2 : 0 - Layout.rowSpan: Settings.bubbles ? 1 : 2 - Layout.topMargin: (contentItem.fitsMetadata && Settings.bubbles) ? -height - Layout.bottomMargin : 0 - spacing: 2 - visible: !isStateEvent - - StatusIndicator { - Layout.alignment: Qt.AlignRight | Qt.AlignTop - anchors.verticalCenter: ts.verticalCenter - eventId: r.eventId - height: parent.iconSize - status: r.status - width: parent.iconSize - } - Image { - Layout.alignment: Qt.AlignRight | Qt.AlignTop - ToolTip.delay: Nheko.tooltipDelay - ToolTip.text: qsTr("Edited") - ToolTip.visible: editHovered.hovered - anchors.verticalCenter: ts.verticalCenter - height: parent.iconSize - source: "image://colorimage/:/icons/icons/ui/edit.svg?" + ((eventId == room.edit) ? palette.highlight : palette.buttonText) - sourceSize.height: parent.iconSize * Screen.devicePixelRatio - sourceSize.width: parent.iconSize * Screen.devicePixelRatio - visible: isEdited || eventId == room.edit - width: parent.iconSize - - HoverHandler { - id: editHovered - - } - } - ImageButton { - Layout.alignment: Qt.AlignRight | Qt.AlignTop - ToolTip.delay: Nheko.tooltipDelay - ToolTip.text: qsTr("Part of a thread") - ToolTip.visible: hovered - anchors.verticalCenter: ts.verticalCenter - buttonTextColor: TimelineManager.userColor(threadId, palette.base) - height: parent.iconSize - image: ":/icons/icons/ui/thread.svg" - visible: threadId - width: parent.iconSize - - onClicked: room.thread = threadId - } - EncryptionIndicator { - Layout.alignment: Qt.AlignRight | Qt.AlignTop - anchors.verticalCenter: ts.verticalCenter - encrypted: isEncrypted - height: parent.iconSize - sourceSize.height: parent.iconSize * Screen.devicePixelRatio - sourceSize.width: parent.iconSize * Screen.devicePixelRatio - trust: trustlevel - visible: room.isEncrypted - width: parent.iconSize - } - Label { - id: ts - - Layout.alignment: Qt.AlignRight | Qt.AlignTop - Layout.preferredWidth: implicitWidth - ToolTip.delay: Nheko.tooltipDelay - ToolTip.text: Qt.formatDateTime(timestamp, Qt.DefaultLocaleLongDate) - ToolTip.visible: ma.hovered - color: palette.inactive.text - font.pointSize: fontMetrics.font.pointSize * parent.scaling - text: timestamp.toLocaleTimeString(Locale.ShortFormat) - - HoverHandler { - id: ma - - } - } - } - } - } - Reactions { - id: reactionRow - - eventId: r.eventId - layoutDirection: row.bubbleOnRight ? Qt.RightToLeft : Qt.LeftToRight - reactions: r.reactions - width: row.maxWidth - - anchors { - left: row.bubbleOnRight ? undefined : row.left - right: row.bubbleOnRight ? row.right : undefined - top: row.bottom - topMargin: -4 - } - } - Rectangle { - id: unreadRow - - color: palette.highlight - height: visible ? 3 : 0 - visible: (r.index > 0 && (room.fullyReadEventId == r.eventId)) - - anchors { - left: parent.left - right: parent.right - top: reactionRow.bottom - topMargin: 5 - } - } -} diff --git a/resources/qml/TimelineSectionHeader.qml b/resources/qml/TimelineSectionHeader.qml new file mode 100644 index 00000000..99fc1ad9 --- /dev/null +++ b/resources/qml/TimelineSectionHeader.qml @@ -0,0 +1,164 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +import QtQuick +import QtQuick.Controls +import QtQuick.Window +import im.nheko + +import "./components" + +Column { + + required property var day + required property bool isSender + required property bool isStateEvent + required property int parentWidth + required property var previousMessageDay + required property bool previousMessageIsStateEvent + required property string previousMessageUserId + required property date timestamp + required property string userId + required property string userName + required property string userPowerlevel + + bottomPadding: Settings.bubbles ? (isSender && previousMessageDay == day ? 0 : 2) : 3 + spacing: 8 + topPadding: userName_.visible ? 4 : 0 + visible: (previousMessageUserId !== userId || previousMessageDay !== day || isStateEvent !== previousMessageIsStateEvent) + width: parentWidth + + Label { + id: dateBubble + + anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined + color: palette.text + height: Math.round(fontMetrics.height * 1.4) + horizontalAlignment: Text.AlignHCenter + text: room ? room.formatDateSeparator(timestamp) : "" + verticalAlignment: Text.AlignVCenter + visible: room && previousMessageDay !== day + width: contentWidth * 1.2 + + background: Rectangle { + color: palette.window + radius: parent.height / 2 + } + } + Row { + id: userInfo + + property int remainingWidth: chat.delegateMaxWidth - spacing - messageUserAvatar.width + + height: userName_.height + spacing: 8 + visible: !isStateEvent && (!isSender || !Settings.bubbles) + + Avatar { + id: messageUserAvatar + + ToolTip.delay: Nheko.tooltipDelay + ToolTip.text: userid + ToolTip.visible: messageUserAvatar.hovered + displayName: userName + height: Nheko.avatarSize * (Settings.smallAvatars ? 0.5 : 1) + url: !room ? "" : room.avatarUrl(userId).replace("mxc://", "image://MxcImage/") + userid: userId + width: Nheko.avatarSize * (Settings.smallAvatars ? 0.5 : 1) + + onClicked: room.openUserProfile(userId) + } + Connections { + function onRoomAvatarUrlChanged() { + messageUserAvatar.url = room.avatarUrl(userId).replace("mxc://", "image://MxcImage/"); + } + function onScrollToIndex(index) { + chat.positionViewAtIndex(index, ListView.Center); + } + + target: room + } + + AbstractButton { + id: userNameButton + + PowerlevelIndicator { + id: powerlevelIndicator + anchors.left: parent.left + anchors.verticalCenter: parent.verticalCenter + + powerlevel: userPowerlevel + height: fontMetrics.ascent + width: height + + sourceSize.width: fontMetrics.lineSpacing + sourceSize.height: fontMetrics.lineSpacing + + permissions: room ? room.permissions : null + visible: isAdmin || isModerator + } + + ToolTip.delay: Nheko.tooltipDelay + ToolTip.text: userId + ToolTip.visible: hovered + leftPadding: powerlevelIndicator.visible ? 16 : 0 + leftInset: 0 + rightInset: 0 + rightPadding: 0 + + contentItem: Label { + id: userName_ + + color: TimelineManager.userColor(userId, palette.base) + text: TimelineManager.escapeEmoji(userNameTextMetrics.elidedText) + textFormat: Text.RichText + } + + onClicked: room.openUserProfile(userId) + + TextMetrics { + id: userNameTextMetrics + + elide: Text.ElideRight + elideWidth: userInfo.remainingWidth - Math.min(statusMsg.implicitWidth, userInfo.remainingWidth / 3) + text: userName + } + NhekoCursorShape { + anchors.fill: parent + cursorShape: Qt.PointingHandCursor + } + } + Label { + id: statusMsg + + property string userStatus: Presence.userStatus(userId) + + ToolTip.delay: Nheko.tooltipDelay + ToolTip.text: qsTr("%1's status message").arg(userName) + ToolTip.visible: statusMsgHoverHandler.hovered + anchors.baseline: userNameButton.baseline + color: palette.buttonText + elide: Text.ElideRight + font.italic: true + font.pointSize: Math.floor(fontMetrics.font.pointSize * 0.8) + text: userStatus.replace(/\n/g, " ") + textFormat: Text.PlainText + width: Math.min(implicitWidth, userInfo.remainingWidth - userName_.width - parent.spacing) + + HoverHandler { + id: statusMsgHoverHandler + + } + Connections { + function onPresenceChanged(id) { + if (id == userId) + statusMsg.userStatus = Presence.userStatus(userId); + } + + target: Presence + } + } + } +} + diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml index bbcf2366..006eb57f 100644 --- a/resources/qml/TimelineView.qml +++ b/resources/qml/TimelineView.qml @@ -3,16 +3,12 @@ // SPDX-License-Identifier: GPL-3.0-or-later import "./components" -import "./delegates" -import "./device-verification" import "./emoji" import "./ui" import "./voip" -import Qt.labs.platform as Platform import QtQuick import QtQuick.Controls import QtQuick.Layouts -import QtQuick.Particles import QtQuick.Window import im.nheko @@ -90,7 +86,7 @@ Item { Rectangle { Layout.fillWidth: true color: Nheko.theme.separator - height: 1 + implicitHeight: 1 z: 3 } Rectangle { @@ -146,7 +142,7 @@ Item { Rectangle { Layout.fillWidth: true color: Nheko.theme.separator - height: 1 + implicitHeight: 1 z: 3 } UploadBox { @@ -191,10 +187,10 @@ Item { Layout.alignment: Qt.AlignHCenter displayName: parent.roomName enabled: false - height: 130 + implicitHeight: 130 roomid: parent.roomId url: parent.avatarUrl.replace("mxc://", "image://MxcImage/") - width: 130 + implicitWidth: 130 } RowLayout { Layout.alignment: Qt.AlignHCenter @@ -296,11 +292,11 @@ Item { Layout.alignment: Qt.AlignHCenter displayName: roomPreview?.inviterDisplayName ?? "" enabled: true - height: 48 + implicitHeight: 48 roomid: preview.roomId url: (roomPreview?.inviterAvatarUrl ?? "").replace("mxc://", "image://MxcImage/") userid: roomPreview?.inviterUserId ?? "" - width: 48 + implicitWidth: 48 onClicked: TimelineManager.openGlobalUserProfile(roomPreview.inviterUserId) } @@ -381,7 +377,10 @@ Item { repeat: false running: false - onTriggered: shouldEffectsRun = false + onTriggered: { + timelineEffects.removeParticles() + shouldEffectsRun = false + } } Connections { function onConfetti() { diff --git a/resources/qml/ToggleButton.qml b/resources/qml/ToggleButton.qml index f3bd5cce..50ed5187 100644 --- a/resources/qml/ToggleButton.qml +++ b/resources/qml/ToggleButton.qml @@ -5,7 +5,6 @@ import QtQuick 2.5 import QtQuick 2.12 import QtQuick.Controls 2.12 -import im.nheko 1.0 Switch { id: toggleButton @@ -46,24 +45,20 @@ Switch { name: "off" PropertyChanges { - border.color: "#767676" - target: track + track.border.color: "#767676" } PropertyChanges { - target: handle - x: 0 + handle.x: 0 } }, State { name: "on" PropertyChanges { - border.color: palette.highlight - target: track + track.border.color: palette.highlight } PropertyChanges { - target: handle - x: indicatorItem.width - handle.width + handle.x: indicatorItem.width - handle.width } } ] diff --git a/resources/qml/TopBar.qml b/resources/qml/TopBar.qml index 699595e6..6d1cc445 100644 --- a/resources/qml/TopBar.qml +++ b/resources/qml/TopBar.qml @@ -56,11 +56,11 @@ Pane { Layout.row: 0 displayName: communityName enabled: false - height: fontMetrics.lineSpacing + implicitHeight: fontMetrics.lineSpacing + implicitWidth: fontMetrics.lineSpacing roomid: communityId url: avatarUrl.replace("mxc://", "image://MxcImage/") visible: roomid && room.parentSpace.isLoaded && ("space:" + room.parentSpace.roomid != Communities.currentTagId) - width: fontMetrics.lineSpacing } Label { id: communityLabel @@ -98,11 +98,11 @@ Pane { Layout.rowSpan: 2 displayName: roomName enabled: false - height: Nheko.avatarSize + implicitHeight: Nheko.avatarSize + implicitWidth: Nheko.avatarSize roomid: roomId url: avatarUrl.replace("mxc://", "image://MxcImage/") userid: isDirect ? directChatOtherUserId : "" - width: Nheko.avatarSize } Label { Layout.column: 2 @@ -125,6 +125,8 @@ Pane { Layout.row: 2 clip: true enabled: false + // don't use the disabled color + color: topBar.palette.text selectByMouse: false text: roomTopic } @@ -285,25 +287,10 @@ Pane { property var e: room ? room.getDump(modelData, "pins") : {} - Layout.fillWidth: true - Layout.preferredHeight: height - blurhash: e.blurhash ?? "" - body: e.body ?? "" - encryptionError: e.encryptionError ?? 0 + maxWidth: pinnedMessages.width + //Layout.preferredHeight: height eventId: e.eventId ?? "" - filename: e.filename ?? "" - filesize: e.filesize ?? "" - formattedBody: e.formattedBody ?? "" - isOnlyEmoji: e.isOnlyEmoji ?? false - keepFullText: true - originalWidth: e.originalWidth ?? 0 - proportionalHeight: e.proportionalHeight ?? 1 - type: e.type ?? MtxEvent.UnknownMessage - typeString: e.typeString ?? "" - url: e.url ?? "" userColor: TimelineManager.userColor(e.userId, palette.window) - userId: e.userId ?? "" - userName: e.userName ?? "" Connections { function onPinnedMessagesChanged() { diff --git a/resources/qml/TypingIndicator.qml b/resources/qml/TypingIndicator.qml index b6c502d8..c681a2f9 100644 --- a/resources/qml/TypingIndicator.qml +++ b/resources/qml/TypingIndicator.qml @@ -5,7 +5,6 @@ import QtQuick 2.9 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.2 -import im.nheko 1.0 Item { Layout.fillWidth: true diff --git a/resources/qml/UploadBox.qml b/resources/qml/UploadBox.qml index 990fa422..1d9415e5 100644 --- a/resources/qml/UploadBox.qml +++ b/resources/qml/UploadBox.qml @@ -2,8 +2,6 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import "./components" -import "./ui" import QtQuick 2.9 import QtQuick.Controls 2.5 import QtQuick.Layouts 1.3 diff --git a/resources/qml/components/AdaptiveLayout.qml b/resources/qml/components/AdaptiveLayout.qml index eea74006..86a0d4b6 100644 --- a/resources/qml/components/AdaptiveLayout.qml +++ b/resources/qml/components/AdaptiveLayout.qml @@ -2,10 +2,9 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import QtQuick 2.12 -import QtQuick.Controls 2.5 -import QtQuick.Layouts 1.12 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import im.nheko Container { //Component.onCompleted: { diff --git a/resources/qml/components/AdaptiveLayoutElement.qml b/resources/qml/components/AdaptiveLayoutElement.qml index 5d003f05..9c8d4622 100644 --- a/resources/qml/components/AdaptiveLayoutElement.qml +++ b/resources/qml/components/AdaptiveLayoutElement.qml @@ -2,9 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import QtQuick 2.12 -import QtQuick.Controls 2.5 -import QtQuick.Layouts 1.12 +import QtQuick Item { property int minimumWidth: 100 diff --git a/resources/qml/components/AvatarListTile.qml b/resources/qml/components/AvatarListTile.qml index dad20e52..75c69098 100644 --- a/resources/qml/components/AvatarListTile.qml +++ b/resources/qml/components/AvatarListTile.qml @@ -3,10 +3,9 @@ // SPDX-License-Identifier: GPL-3.0-or-later import ".." -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import im.nheko 1.0 +import QtQuick +import QtQuick.Layouts +import im.nheko Rectangle { id: tile @@ -36,12 +35,13 @@ Rectangle { when: hovered.hovered && !(index == selectedIndex) PropertyChanges { - target: tile - background: palette.dark - importantText: palette.brightText - unimportantText: palette.brightText - bubbleBackground: palette.highlight - bubbleText: palette.highlightedText + tile { + background: palette.dark + importantText: palette.brightText + unimportantText: palette.brightText + bubbleBackground: palette.highlight + bubbleText: palette.highlightedText + } } }, @@ -50,12 +50,13 @@ Rectangle { when: index == selectedIndex PropertyChanges { - target: tile - background: palette.highlight - importantText: palette.highlightedText - unimportantText: palette.highlightedText - bubbleBackground: palette.highlightedText - bubbleText: palette.highlight + tile { + background: palette.highlight + importantText: palette.highlightedText + unimportantText: palette.highlightedText + bubbleBackground: palette.highlightedText + bubbleText: palette.highlight + } } } @@ -75,8 +76,8 @@ Rectangle { enabled: false Layout.alignment: Qt.AlignVCenter - height: avatarSize - width: avatarSize + implicitHeight: avatarSize + implicitWidth: avatarSize url: tile.avatarUrl.replace("mxc://", "image://MxcImage/") displayName: title crop: tile.crop @@ -88,7 +89,6 @@ Rectangle { Layout.alignment: Qt.AlignLeft Layout.fillWidth: true Layout.minimumWidth: 100 - width: parent.width - avatar.width Layout.preferredWidth: parent.width - avatar.width spacing: Nheko.paddingSmall diff --git a/resources/qml/components/MainWindowDialog.qml b/resources/qml/components/MainWindowDialog.qml index 10c07aae..3372d429 100644 --- a/resources/qml/components/MainWindowDialog.qml +++ b/resources/qml/components/MainWindowDialog.qml @@ -2,11 +2,9 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import Qt.labs.platform 1.1 as P -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.3 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import im.nheko Dialog { default property alias inner: scroll.data diff --git a/resources/qml/components/PowerlevelIndicator.qml b/resources/qml/components/PowerlevelIndicator.qml index 4b826284..6a6d89af 100644 --- a/resources/qml/components/PowerlevelIndicator.qml +++ b/resources/qml/components/PowerlevelIndicator.qml @@ -23,8 +23,6 @@ Image { return "image://colorimage/:/icons/icons/ui/person.svg?"; } - sourceSize.width: 16 - sourceSize.height: 16 source: sourceUrl + (ma.hovered ? palette.highlight : palette.buttonText) ToolTip.visible: ma.hovered ToolTip.text: { diff --git a/resources/qml/components/ReorderableListview.qml b/resources/qml/components/ReorderableListview.qml index 1e8ab7b0..b5d5f5e5 100644 --- a/resources/qml/components/ReorderableListview.qml +++ b/resources/qml/components/ReorderableListview.qml @@ -2,10 +2,8 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import QtQuick 2.15 -import QtQml.Models 2.1 -import im.nheko 1.0 -import ".." +import QtQuick +import QtQml.Models Item { id: root diff --git a/resources/qml/delegates/Encrypted.qml b/resources/qml/delegates/Encrypted.qml index fdfe958e..42a61918 100644 --- a/resources/qml/delegates/Encrypted.qml +++ b/resources/qml/delegates/Encrypted.qml @@ -2,46 +2,42 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import ".." import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import im.nheko 1.0 -Rectangle { +Control { id: r required property int encryptionError required property string eventId - radius: fontMetrics.lineSpacing / 2 + Nheko.paddingMedium - width: parent.width? parent.width : 0 - implicitWidth: encryptedText.implicitWidth+24+Nheko.paddingMedium*3 // Column doesn't provide a useful implicitWidth, should be replaced by ColumnLayout - height: contents.implicitHeight + Nheko.paddingMedium * 2 - color: palette.alternateBase + padding: Nheko.paddingMedium + implicitHeight: contents.implicitHeight + Nheko.paddingMedium * 2 + Layout.maximumWidth: contents.Layout.maximumWidth + padding * 2 + Layout.fillWidth: true - RowLayout { + contentItem: RowLayout { id: contents - anchors.fill: parent - anchors.margins: Nheko.paddingMedium spacing: Nheko.paddingMedium Image { source: "image://colorimage/:/icons/icons/ui/shield-filled-cross.svg?" + Nheko.theme.error Layout.alignment: Qt.AlignVCenter - width: 24 - height: width + Layout.preferredWidth: 24 + Layout.preferredHeight: 24 } - Column { + ColumnLayout { spacing: Nheko.paddingSmall Layout.fillWidth: true - MatrixText { + Label { id: encryptedText text: { - switch (encryptionError) { + switch (r.encryptionError) { case Olm.MissingSession: return qsTr("There is no key to unlock this message. We requested the key automatically, but you can try requesting it again if you are impatient."); case Olm.MissingSessionIndex: @@ -58,12 +54,15 @@ Rectangle { return qsTr("Unknown decryption error"); } } + textFormat: Text.PlainText + wrapMode: Label.WordWrap color: palette.text - width: parent.width + Layout.fillWidth: true + Layout.maximumWidth: implicitWidth + 1 } Button { - visible: encryptionError == Olm.MissingSession || encryptionError == Olm.MissingSessionIndex + visible: r.encryptionError == Olm.MissingSession || encryptionError == Olm.MissingSessionIndex text: qsTr("Request key") onClicked: room.requestKeyForEvent(eventId) } @@ -72,4 +71,9 @@ Rectangle { } + background: Rectangle { + color: palette.alternateBase + radius: fontMetrics.lineSpacing / 2 + 2 * Nheko.paddingMedium + visible: !Settings.bubbles // the bubble in a bubble looks odd + } } diff --git a/resources/qml/delegates/EncryptionEnabled.qml b/resources/qml/delegates/EncryptionEnabled.qml index 0e2b7fc0..40894543 100644 --- a/resources/qml/delegates/EncryptionEnabled.qml +++ b/resources/qml/delegates/EncryptionEnabled.qml @@ -3,27 +3,24 @@ // SPDX-License-Identifier: GPL-3.0-or-later import ".." -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import im.nheko -Rectangle { +Control { id: r - required property string username + required property string userName - radius: fontMetrics.lineSpacing / 2 + Nheko.paddingMedium - width: parent.width ? Math.min(parent.width, 700) : 0 - height: contents.implicitHeight + Nheko.paddingMedium * 2 - color: palette.alternateBase - border.color: Nheko.theme.green - border.width: 2 + padding: Nheko.paddingMedium + //implicitHeight: contents.implicitHeight + padd * 2 + Layout.maximumWidth: contents.Layout.maximumWidth + padding * 2 + Layout.fillWidth: true - RowLayout { + contentItem: RowLayout { id: contents - anchors.fill: parent - anchors.margins: Nheko.paddingMedium spacing: Nheko.paddingMedium Image { @@ -33,26 +30,36 @@ Rectangle { Layout.preferredHeight: 24 } - Column { + ColumnLayout { spacing: Nheko.paddingSmall Layout.fillWidth: true MatrixText { - text: qsTr("%1 enabled end-to-end encryption").arg(r.username) + text: qsTr("%1 enabled end-to-end encryption").arg(r.userName) font.bold: true font.pointSize: 14 color: palette.text - width: parent.width + Layout.fillWidth: true + Layout.maximumWidth: implicitWidth + 1 } - MatrixText { + Label { text: qsTr("Encryption keeps your messages safe by only allowing the people you sent the message to to read it. For extra security, if you want to make sure you are talking to the right people, you can verify them in real life.") - color: palette.text - width: parent.width + textFormat: Text.PlainText + wrapMode: Label.WordWrap + Layout.fillWidth: true + Layout.maximumWidth: implicitWidth + 1 } } } + background: Rectangle { + radius: fontMetrics.lineSpacing / 2 + Nheko.paddingMedium + height: contents.implicitHeight + Nheko.paddingMedium * 2 + color: palette.alternateBase + border.color: Nheko.theme.green + border.width: 2 + } } diff --git a/resources/qml/delegates/FileMessage.qml b/resources/qml/delegates/FileMessage.qml index 82b82c1b..3f31e7ed 100644 --- a/resources/qml/delegates/FileMessage.qml +++ b/resources/qml/delegates/FileMessage.qml @@ -2,34 +2,38 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import QtQuick 2.12 -import QtQuick.Layouts 1.2 -import im.nheko 1.0 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls +import im.nheko + +Control { + id: evRoot -Item { required property string eventId required property string filename required property string filesize - height: rowa.height + (Settings.bubbles? 16: 24) - implicitWidth: rowa.implicitWidth + metadataWidth - property int metadataWidth - property bool fitsMetadata: true + padding: Settings.bubbles? 8 : 12 + //Layout.preferredHeight: rowa.implicitHeight + padding + //Layout.maximumWidth: rowa.Layout.maximumWidth + metadataWidth + padding + property int metadataWidth: 0 + property bool fitsMetadata: false + + Layout.maximumWidth: rowa.Layout.maximumWidth + padding * 2 - RowLayout { + contentItem: RowLayout { id: rowa - anchors.centerIn: parent - width: parent.width - (Settings.bubbles? 16 : 24) - spacing: 15 + spacing: 16 Rectangle { id: button color: palette.light radius: 22 - height: 44 - width: 44 + Layout.preferredHeight: 44 + Layout.preferredWidth: 44 Image { id: img @@ -63,7 +67,8 @@ Item { id: filename_ Layout.fillWidth: true - text: filename + Layout.maximumWidth: implicitWidth + 1 + text: evRoot.filename textFormat: Text.PlainText elide: Text.ElideRight color: palette.text @@ -73,7 +78,8 @@ Item { id: filesize_ Layout.fillWidth: true - text: filesize + Layout.maximumWidth: implicitWidth + 1 + text: evRoot.filesize textFormat: Text.PlainText elide: Text.ElideRight color: palette.text @@ -83,11 +89,9 @@ Item { } - Rectangle { + background: Rectangle { color: palette.alternateBase - z: -1 - radius: 10 - anchors.fill: parent + radius: fontMetrics.lineSpacing / 2 + 2 * Nheko.paddingSmall visible: !Settings.bubbles // the bubble in a bubble looks odd } diff --git a/resources/qml/delegates/ImageMessage.qml b/resources/qml/delegates/ImageMessage.qml index 20d727c3..18ff11d2 100644 --- a/resources/qml/delegates/ImageMessage.qml +++ b/resources/qml/delegates/ImageMessage.qml @@ -2,29 +2,31 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import QtQuick 2.15 -import QtQuick.Window 2.15 -import QtQuick.Controls 2.3 -import im.nheko 1.0 +import QtQuick +import QtQuick.Window +import QtQuick.Controls +import im.nheko AbstractButton { required property int type required property int originalWidth + required property int originalHeight required property double proportionalHeight required property string url required property string blurhash required property string body required property string filename - required property bool isReply required property string eventId - property double divisor: isReply ? 5 : 3 + required property int containerHeight + property double divisor: EventDelegateChooser.isReply ? 10 : 4 - property int tempWidth: originalWidth < 1? 400: originalWidth + EventDelegateChooser.keepAspectRatio: true + EventDelegateChooser.maxWidth: originalWidth + EventDelegateChooser.maxHeight: containerHeight / divisor + EventDelegateChooser.aspectRatio: proportionalHeight - implicitWidth: Math.round(tempWidth*Math.min((timelineView.height/divisor)/(tempWidth*proportionalHeight), 1)) - width: Math.min(parent?.width ?? 2000,implicitWidth) - height: width*proportionalHeight hoverEnabled: true + enabled: !EventDelegateChooser.isReply state: (img.status != Image.Ready || timeline.privacyScreen.active) ? "BlurhashVisible" : "ImageVisible" states: [ @@ -32,38 +34,36 @@ AbstractButton { name: "BlurhashVisible" PropertyChanges { - target: blurhash_ - opacity: (img.status != Image.Ready) || (timeline.privacyScreen.active && blurhash) ? 1 : 0 - visible: (img.status != Image.Ready) || (timeline.privacyScreen.active && blurhash) + blurhash_ { + opacity: (img.status != Image.Ready) || (timeline.privacyScreen.active && blurhash) ? 1 : 0 + visible: (img.status != Image.Ready) || (timeline.privacyScreen.active && blurhash) + } } PropertyChanges { - target: img - opacity: 0 + img.opacity: 0 } PropertyChanges { - target: mxcimage - opacity: 0 + mxcimage.opacity: 0 } }, State { name: "ImageVisible" PropertyChanges { - target: blurhash_ - opacity: 0 - visible: false + blurhash_ { + opacity: 0 + visible: false + } } PropertyChanges { - target: img - opacity: 1 + img.opacity: 1 } PropertyChanges { - target: mxcimage - opacity: 1 + mxcimage.opacity: 1 } } ] @@ -116,6 +116,7 @@ AbstractButton { source: url != "" ? (url.replace("mxc://", "image://MxcImage/") + "?scale") : "" asynchronous: true fillMode: Image.PreserveAspectFit + horizontalAlignment: Image.AlignLeft smooth: true mipmap: true @@ -127,21 +128,23 @@ AbstractButton { id: mxcimage visible: loaded - anchors.fill: parent roomm: room play: !Settings.animateImagesOnHover || parent.hovered eventId: parent.eventId + + anchors.fill: parent } Image { id: blurhash_ - anchors.fill: parent source: blurhash ? ("image://blurhash/" + blurhash) : ("image://colorimage/:/icons/icons/ui/image-failed.svg?" + palette.buttonText) asynchronous: true fillMode: Image.PreserveAspectFit sourceSize.width: parent.width * Screen.devicePixelRatio sourceSize.height: parent.height * Screen.devicePixelRatio + + anchors.fill: parent } onClicked: Settings.openImageExternal ? room.openMedia(eventId) : TimelineManager.openImageOverlay(room, url, eventId, originalWidth, proportionalHeight); @@ -150,6 +153,7 @@ AbstractButton { id: overlay anchors.fill: parent + visible: parent.hovered Rectangle { diff --git a/resources/qml/delegates/MessageDelegate.qml b/resources/qml/delegates/MessageDelegate.qml deleted file mode 100644 index 68f65062..00000000 --- a/resources/qml/delegates/MessageDelegate.qml +++ /dev/null @@ -1,779 +0,0 @@ -// SPDX-FileCopyrightText: Nheko Contributors -// -// SPDX-License-Identifier: GPL-3.0-or-later - -import QtQuick 2.6 -import QtQuick.Controls 2.1 -import QtQuick.Layouts 1.2 -import im.nheko 1.0 - -Item { - id: d - - required property bool isReply - property bool keepFullText: !isReply - property alias child: chooser.child - //implicitWidth: chooser.child?.implicitWidth ?? 0 - required property double proportionalHeight - required property int type - required property string typeString - required property int originalWidth - required property int duration - required property string blurhash - required property string body - required property string formattedBody - required property string eventId - required property string filename - required property string filesize - required property string url - required property string thumbnailUrl - required property bool isOnlyEmoji - required property bool isStateEvent - required property string userId - required property string userName - required property string roomTopic - required property string roomName - required property string callType - required property int encryptionError - required property int relatedEventCacheBuster - property bool fitsMetadata: (chooser.child && chooser.child.fitsMetadata) ? chooser.child.fitsMetadata : false - property int metadataWidth - - implicitWidth: chooser.child?.implicitWidth - - height: chooser.child ? chooser.child.height : Nheko.paddingLarge - - DelegateChooser { - id: chooser - - //role: "type" //< not supported in our custom implementation, have to use roleValue - roleValue: type - //anchors.fill: parent - - width: parent?.width ?? 0 // this should get rid of "cannot read property 'width' of null" - - DelegateChoice { - roleValue: MtxEvent.UnknownEvent - - Placeholder { - typeString: d.typeString - text: "Unretrieved event" - } - - } - - DelegateChoice { - roleValue: MtxEvent.Tombstone - - - ColumnLayout { - width: parent.width - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - Layout.fillWidth: true - formatted: qsTr("This room was replaced for the following reason: %1").arg(d.body) - } - - Button { - Layout.alignment: Qt.AlignHCenter - text: qsTr("Go to replacement room") - onClicked: room.joinReplacementRoom(eventId) - } - - } - } - - DelegateChoice { - roleValue: MtxEvent.TextMessage - - TextMessage { - formatted: d.formattedBody - body: d.body - isOnlyEmoji: d.isOnlyEmoji - isReply: d.isReply - keepFullText: d.keepFullText - metadataWidth: d.metadataWidth - } - - } - - DelegateChoice { - roleValue: MtxEvent.UnknownMessage - - TextMessage { - formatted: d.formattedBody - body: d.body - isOnlyEmoji: d.isOnlyEmoji - isReply: d.isReply - keepFullText: d.keepFullText - metadataWidth: d.metadataWidth - } - - } - - DelegateChoice { - roleValue: MtxEvent.ElementEffectMessage - - TextMessage { - formatted: d.formattedBody - body: d.body - isOnlyEmoji: d.isOnlyEmoji - isReply: d.isReply - keepFullText: d.keepFullText - metadataWidth: d.metadataWidth - } - - } - - DelegateChoice { - roleValue: MtxEvent.NoticeMessage - - NoticeMessage { - formatted: d.formattedBody - body: d.body - isOnlyEmoji: d.isOnlyEmoji - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - metadataWidth: d.metadataWidth - } - - } - - DelegateChoice { - roleValue: MtxEvent.EmoteMessage - - NoticeMessage { - formatted: TimelineManager.escapeEmoji(d.userName) + " " + d.formattedBody - color: TimelineManager.userColor(d.userId, palette.base) - body: d.body - isOnlyEmoji: d.isOnlyEmoji - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - metadataWidth: d.metadataWidth - } - - } - - DelegateChoice { - roleValue: MtxEvent.ImageMessage - - ImageMessage { - type: d.type - originalWidth: d.originalWidth - proportionalHeight: d.proportionalHeight - url: d.url - blurhash: d.blurhash - body: d.body - filename: d.filename - isReply: d.isReply - eventId: d.eventId - metadataWidth: d.metadataWidth - } - - } - - DelegateChoice { - roleValue: MtxEvent.Sticker - - ImageMessage { - type: d.type - originalWidth: d.originalWidth - proportionalHeight: d.proportionalHeight - url: d.url - blurhash: d.blurhash - body: d.body - filename: d.filename - isReply: d.isReply - eventId: d.eventId - metadataWidth: d.metadataWidth - } - - } - - DelegateChoice { - roleValue: MtxEvent.FileMessage - - FileMessage { - eventId: d.eventId - filename: d.filename - filesize: d.filesize - metadataWidth: d.metadataWidth - } - - } - - DelegateChoice { - roleValue: MtxEvent.VideoMessage - - PlayableMediaMessage { - proportionalHeight: d.proportionalHeight - type: d.type - originalWidth: d.originalWidth - thumbnailUrl: d.thumbnailUrl - eventId: d.eventId - url: d.url - body: d.body - filesize: d.filesize - duration: d.duration - metadataWidth: d.metadataWidth - } - - } - - DelegateChoice { - roleValue: MtxEvent.AudioMessage - - PlayableMediaMessage { - proportionalHeight: d.proportionalHeight - type: d.type - originalWidth: d.originalWidth - thumbnailUrl: d.thumbnailUrl - eventId: d.eventId - url: d.url - body: d.body - filesize: d.filesize - duration: d.duration - metadataWidth: d.metadataWidth - } - - } - - DelegateChoice { - roleValue: MtxEvent.Redacted - - Redacted { - metadataWidth: d.metadataWidth - } - } - - DelegateChoice { - roleValue: MtxEvent.Redaction - - Pill { - text: qsTr("%1 removed a message").arg(d.userName) - isStateEvent: d.isStateEvent - } - - } - - DelegateChoice { - roleValue: MtxEvent.Encryption - - EncryptionEnabled { - username: d.userName - } - - } - - DelegateChoice { - roleValue: MtxEvent.Encrypted - - Encrypted { - encryptionError: d.encryptionError - eventId: d.eventId - } - - } - - DelegateChoice { - roleValue: MtxEvent.ServerAcl - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: qsTr("%1 changed which servers are allowed in this room.").arg(d.userName) - } - - } - - DelegateChoice { - roleValue: MtxEvent.Name - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: d.roomName ? qsTr("%2 changed the room name to: %1").arg(d.roomName).arg(d.userName) : qsTr("%1 removed the room name").arg(d.userName) - } - - } - - DelegateChoice { - roleValue: MtxEvent.Topic - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: d.roomTopic ? qsTr("%2 changed the topic to: %1").arg(d.roomTopic).arg(d.userName): qsTr("%1 removed the topic").arg(d.userName) - } - - } - - DelegateChoice { - roleValue: MtxEvent.Avatar - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: qsTr("%1 changed the room avatar").arg(d.userName) - } - - } - - DelegateChoice { - roleValue: MtxEvent.PinnedEvents - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: qsTr("%1 changed the pinned messages.").arg(d.userName) - } - - } - - DelegateChoice { - roleValue: MtxEvent.ImagePackInRoom - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: d.relatedEventCacheBuster, room.formatImagePackEvent(d.eventId) - } - - } - - - DelegateChoice { - roleValue: MtxEvent.CanonicalAlias - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: qsTr("%1 changed the addresses for this room.").arg(d.userName) - } - - } - - DelegateChoice { - roleValue: MtxEvent.SpaceParent - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: qsTr("%1 changed the parent communities for this room.").arg(d.userName) - } - - } - - DelegateChoice { - roleValue: MtxEvent.RoomCreate - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: qsTr("%1 created and configured room: %2").arg(d.userName).arg(room.roomId) - } - - } - - DelegateChoice { - roleValue: MtxEvent.CallInvite - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: { - switch (d.callType) { - case "voice": - return qsTr("%1 placed a voice call.").arg(d.userName); - case "video": - return qsTr("%1 placed a video call.").arg(d.userName); - default: - return qsTr("%1 placed a call.").arg(d.userName); - } - } - } - - } - - DelegateChoice { - roleValue: MtxEvent.CallAnswer - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: qsTr("%1 answered the call.").arg(d.userName) - } - - } - - DelegateChoice { - roleValue: MtxEvent.CallReject - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: qsTr("%1 rejected the call.").arg(d.userName) - } - - } - - DelegateChoice { - roleValue: MtxEvent.CallSelectAnswer - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: qsTr("%1 select answer").arg(d.userName) - // formatted: qsTr("Call answered elsewhere") - } - } - - DelegateChoice { - roleValue: MtxEvent.CallHangUp - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: qsTr("%1 ended the call.").arg(d.userName) - } - - } - - DelegateChoice { - roleValue: MtxEvent.CallCandidates - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: qsTr("%1 is negotiating the call...").arg(d.userName) - } - - } - - DelegateChoice { - roleValue: MtxEvent.CallNegotiate - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: qsTr("%1 is negotiating the call...").arg(d.userName) - } - - } - - DelegateChoice { - roleValue: MtxEvent.PowerLevels - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: d.relatedEventCacheBuster, room.formatPowerLevelEvent(d.eventId) - } - - } - - DelegateChoice { - roleValue: MtxEvent.PolicyRuleUser - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: d.relatedEventCacheBuster, room.formatPolicyRule(d.eventId) - } - - } - - DelegateChoice { - roleValue: MtxEvent.PolicyRuleRoom - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: d.relatedEventCacheBuster, room.formatPolicyRule(d.eventId) - } - - } - - DelegateChoice { - roleValue: MtxEvent.PolicyRuleServer - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: d.relatedEventCacheBuster, room.formatPolicyRule(d.eventId) - } - - } - - DelegateChoice { - roleValue: MtxEvent.RoomJoinRules - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: d.relatedEventCacheBuster, room.formatJoinRuleEvent(d.eventId) - } - - } - - DelegateChoice { - roleValue: MtxEvent.RoomHistoryVisibility - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: d.relatedEventCacheBuster, room.formatHistoryVisibilityEvent(d.eventId) - } - - } - - DelegateChoice { - roleValue: MtxEvent.RoomGuestAccess - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: d.relatedEventCacheBuster, room.formatGuestAccessEvent(d.eventId) - } - - } - - DelegateChoice { - roleValue: MtxEvent.Member - - ColumnLayout { - width: parent?.width ?? 100 - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - Layout.fillWidth: true - formatted: d.relatedEventCacheBuster, room.formatMemberEvent(d.eventId) - } - - Button { - visible: d.relatedEventCacheBuster, room.showAcceptKnockButton(d.eventId) - Layout.alignment: Qt.AlignHCenter - text: qsTr("Allow them in") - onClicked: room.acceptKnock(eventId) - } - - } - - } - - DelegateChoice { - roleValue: MtxEvent.KeyVerificationRequest - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: "KeyVerificationRequest" - } - - } - - DelegateChoice { - roleValue: MtxEvent.KeyVerificationStart - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: "KeyVerificationStart" - } - - } - - DelegateChoice { - roleValue: MtxEvent.KeyVerificationReady - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: "KeyVerificationReady" - } - - } - - DelegateChoice { - roleValue: MtxEvent.KeyVerificationCancel - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: "KeyVerificationCancel" - } - - } - - DelegateChoice { - roleValue: MtxEvent.KeyVerificationKey - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: "KeyVerificationKey" - } - - } - - DelegateChoice { - roleValue: MtxEvent.KeyVerificationMac - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: "KeyVerificationMac" - } - - } - - DelegateChoice { - roleValue: MtxEvent.KeyVerificationDone - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: "KeyVerificationDone" - } - - } - - DelegateChoice { - roleValue: MtxEvent.KeyVerificationDone - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: "KeyVerificationDone" - } - - } - - DelegateChoice { - roleValue: MtxEvent.KeyVerificationAccept - - NoticeMessage { - body: formatted - isOnlyEmoji: false - isReply: d.isReply - keepFullText: d.keepFullText - isStateEvent: d.isStateEvent - formatted: "KeyVerificationAccept" - } - - } - - DelegateChoice { - Placeholder { - typeString: d.typeString - } - - } - - } - -} diff --git a/resources/qml/delegates/Pill.qml b/resources/qml/delegates/Pill.qml index 3f981d4d..c9ca1ed3 100644 --- a/resources/qml/delegates/Pill.qml +++ b/resources/qml/delegates/Pill.qml @@ -4,7 +4,6 @@ import QtQuick 2.5 import QtQuick.Controls 2.1 -import im.nheko 1.0 Label { property bool isStateEvent diff --git a/resources/qml/delegates/PlayableMediaMessage.qml b/resources/qml/delegates/PlayableMediaMessage.qml index fb7bf0cc..2a47d275 100644 --- a/resources/qml/delegates/PlayableMediaMessage.qml +++ b/resources/qml/delegates/PlayableMediaMessage.qml @@ -2,12 +2,10 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import "../" import "../ui/media" import QtMultimedia import QtQuick import QtQuick.Controls -import QtQuick.Layouts import im.nheko Item { @@ -22,7 +20,7 @@ Item { required property string url required property string body required property string filesize - property double divisor: isReply ? 4 : 2 + property double divisor: EventDelegateChooser.isReply ? 10 : 4 property int tempWidth: originalWidth < 1? 400: originalWidth implicitWidth: type == MtxEvent.VideoMessage ? Math.round(tempWidth*Math.min((timelineView.height/divisor)/(tempWidth*proportionalHeight), 1)) : 500 width: Math.min(parent?.width ?? implicitWidth, implicitWidth) @@ -47,7 +45,7 @@ Item { Rectangle { id: videoContainer - color: type == MtxEvent.VideoMessage ? palette.window : "transparent" + color: content.type == MtxEvent.VideoMessage ? palette.window : "transparent" width: parent.width height: parent.height - fileInfoLabel.height @@ -57,14 +55,14 @@ Item { Image { anchors.fill: parent - source: thumbnailUrl ? thumbnailUrl.replace("mxc://", "image://MxcImage/") + "?scale" : "image://colorimage/:/icons/icons/ui/video-file.svg?" + palette.windowText + source: content.thumbnailUrl ? thumbnailUrl.replace("mxc://", "image://MxcImage/") + "?scale" : "image://colorimage/:/icons/icons/ui/video-file.svg?" + palette.windowText asynchronous: true fillMode: Image.PreserveAspectFit VideoOutput { id: videoOutput - visible: type == MtxEvent.VideoMessage + visible: content.type == MtxEvent.VideoMessage clip: true anchors.fill: parent fillMode: VideoOutput.PreserveAspectFit @@ -79,7 +77,7 @@ Item { anchors.left: videoContainer.left anchors.right: videoContainer.right anchors.bottom: videoContainer.bottom - playingVideo: type == MtxEvent.VideoMessage + playingVideo: content.type == MtxEvent.VideoMessage positionValue: mxcmedia.position duration: mediaLoaded ? mxcmedia.duration : content.duration mediaLoaded: mxcmedia.loaded @@ -95,7 +93,7 @@ Item { id: fileInfoLabel anchors.top: videoContainer.bottom - text: body + " [" + filesize + "]" + text: content.body + " [" + filesize + "]" textFormat: Text.RichText elide: Text.ElideRight color: palette.text diff --git a/resources/qml/delegates/Redacted.qml b/resources/qml/delegates/Redacted.qml index 4a9700dc..1bf87f91 100644 --- a/resources/qml/delegates/Redacted.qml +++ b/resources/qml/delegates/Redacted.qml @@ -2,25 +2,22 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import im.nheko 1.0 - -Rectangle{ - - height: redactedLayout.implicitHeight + Nheko.paddingSmall - implicitWidth: redactedLayout.implicitWidth + 2 * Nheko.paddingMedium - width: Math.min(parent.width,implicitWidth+1) - radius: fontMetrics.lineSpacing / 2 + 2 * Nheko.paddingSmall - color: palette.alternateBase - property int metadataWidth - property bool fitsMetadata: parent.width - redactedLayout.width > metadataWidth + 4 - - RowLayout { +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import im.nheko + +Control { + id: msgRoot + + property int metadataWidth: 0 + property bool fitsMetadata: false //parent.width - redactedLayout.width > metadataWidth + 4 + + required property string eventId + required property Room room + + contentItem: RowLayout { id: redactedLayout - anchors.centerIn: parent - width: parent.width - 2 * Nheko.paddingMedium spacing: Nheko.paddingSmall Image { @@ -34,12 +31,11 @@ Rectangle{ id: redactedLabel Layout.margins: 0 Layout.alignment: Qt.AlignVCenter | Qt.AlignRight - Layout.preferredWidth: implicitWidth + Layout.maximumWidth: implicitWidth + 1 Layout.fillWidth: true - property var redactedPair: room.formatRedactedEvent(eventId) + property var redactedPair: msgRoot.room.formatRedactedEvent(msgRoot.eventId) text: redactedPair["first"] wrapMode: Label.WordWrap - color: palette.text ToolTip.text: redactedPair["second"] ToolTip.visible: hh.hovered @@ -48,4 +44,13 @@ Rectangle{ } } } + + padding: Nheko.paddingSmall + + Layout.maximumWidth: redactedLayout.Layout.maximumWidth + padding * 2 + + background: Rectangle { + color: palette.alternateBase + radius: fontMetrics.lineSpacing / 2 + 2 * Nheko.paddingSmall + } } diff --git a/resources/qml/delegates/Reply.qml b/resources/qml/delegates/Reply.qml index 4d4983ac..ff46347f 100644 --- a/resources/qml/delegates/Reply.qml +++ b/resources/qml/delegates/Reply.qml @@ -2,140 +2,98 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import Qt.labs.platform 1.1 as Platform -import QtQuick 2.12 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.2 -import QtQuick.Window 2.13 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import QtQuick.Window +import im.nheko import "../" AbstractButton { id: r property color userColor: "red" - property double proportionalHeight - property int type - property string typeString - property int originalWidth - property string blurhash - property string body - property string formattedBody - property string eventId - property string filename - property string filesize - property string url - property bool isOnlyEmoji - property bool isStateEvent - property string userId - property string userName - property string thumbnailUrl - property string roomTopic - property string roomName - property string callType - property int duration - property int encryptionError - property int relatedEventCacheBuster - property int maxWidth property bool keepFullText: false - height: replyContainer.height - implicitHeight: replyContainer.height - implicitWidth: visible? colorLine.width+Math.max(replyContainer.implicitWidth,userName_.fullTextWidth) : 0 // visible? seems to be causing issues + required property string eventId + + property var room_: room + + property string userId: eventId ? room.dataById(eventId, Room.UserId, "") : "" + property string userName: eventId ? room.dataById(eventId, Room.UserName, "") : "" + implicitHeight: replyContainer.implicitHeight + implicitWidth: replyContainer.implicitWidth + required property int maxWidth NhekoCursorShape { anchors.fill: parent cursorShape: Qt.PointingHandCursor } - Rectangle { - id: colorLine - - anchors.top: replyContainer.top - anchors.bottom: replyContainer.bottom - width: 4 - color: TimelineManager.userColor(userId, palette.base) - } - onClicked: { - let link = reply.child.linkAt != undefined && reply.child.linkAt(pressX-colorLine.width, pressY - userName_.implicitHeight); + 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) + onPressAndHold: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(pressX-colorline.width, pressY - userName_.implicitHeight), r.eventId) - ColumnLayout { - id: replyContainer + contentItem: TimelineEvent { + id: timelineEvent - anchors.left: colorLine.right - width: parent.width - 4 - spacing: 0 + isStateEvent: false + room: r.room_ + eventId: r.eventId + replyTo: "" + mainInset: 4 + Nheko.paddingMedium + maxWidth: r.maxWidth - TapHandler { - acceptedButtons: Qt.RightButton - onSingleTapped: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(eventPoint.position.x, eventPoint.position.y - userName_.implicitHeight), r.eventId) - gesturePolicy: TapHandler.ReleaseWithinBounds - acceptedDevices: PointerDevice.Mouse | PointerDevice.Stylus | PointerDevice.TouchPad - } + //height: replyContainer.implicitHeight + data: Row { + id: replyContainer + + spacing: Nheko.paddingSmall - AbstractButton { - Layout.leftMargin: 4 - Layout.fillWidth: true - contentItem: ElidedLabel { - id: userName_ - fullText: userName - color: r.userColor - textFormat: Text.RichText - width: parent.width - elideWidth: width + Rectangle { + id: colorline + + width: 4 + height: content.height + + color: TimelineManager.userColor(r.userId, palette.base) } - onClicked: room.openUserProfile(userId) - } - MessageDelegate { - Layout.leftMargin: 4 - Layout.preferredHeight: height - id: reply - blurhash: r.blurhash - body: r.body - formattedBody: r.formattedBody - eventId: r.eventId - filename: r.filename - filesize: r.filesize - proportionalHeight: r.proportionalHeight - type: r.type - typeString: r.typeString ?? "" - url: r.url - thumbnailUrl: r.thumbnailUrl - duration: r.duration - originalWidth: r.originalWidth - isOnlyEmoji: r.isOnlyEmoji - isStateEvent: r.isStateEvent - userId: r.userId - userName: r.userName - roomTopic: r.roomTopic - roomName: r.roomName - callType: r.callType - relatedEventCacheBuster: r.relatedEventCacheBuster - encryptionError: r.encryptionError - // This is disabled so that left clicking the reply goes to its location - enabled: false - Layout.fillWidth: true - isReply: true - keepFullText: r.keepFullText - } + Column { + id: content + spacing: 0 + + AbstractButton { + id: usernameBtn + + contentItem: Label { + id: userName_ + text: r.userName + color: r.userColor + textFormat: Text.RichText + width: timelineEvent.main?.width + } + onClicked: room.openUserProfile(r.userId) + } + + data: [ + usernameBtn, timelineEvent.main, + ] + } + } } - Rectangle { + background: Rectangle { id: backgroundItem z: -1 - anchors.fill: replyContainer - property color userColor: TimelineManager.userColor(userId, palette.base) + property color userColor: TimelineManager.userColor(r.userId, palette.base) property color bgColor: palette.base color: Qt.tint(bgColor, Qt.hsla(userColor.hslHue, 0.5, userColor.hslLightness, 0.1)) } diff --git a/resources/qml/delegates/TextMessage.qml b/resources/qml/delegates/TextMessage.qml index 1eb5e2c0..3625aea1 100644 --- a/resources/qml/delegates/TextMessage.qml +++ b/resources/qml/delegates/TextMessage.qml @@ -3,47 +3,44 @@ // SPDX-License-Identifier: GPL-3.0-or-later import ".." -import QtQuick.Controls 2.3 -import im.nheko 1.0 +import im.nheko MatrixText { required property string body required property bool isOnlyEmoji - required property bool isReply + property bool isReply: EventDelegateChooser.isReply required property bool keepFullText required property string formatted + property string copyText: selectedText ? getText(selectionStart, selectionEnd) : body - property int metadataWidth + property int metadataWidth: 100 property bool fitsMetadata: false //positionAt(width,height-4) == positionAt(width-metadataWidth-10, height-4) // table border-collapse doesn't seem to work - text: " - <style type=\"text/css\"> - code { background-color: " + palette.alternateBase + "; white-space: pre-wrap; } - pre { background-color: " + palette.alternateBase + "; white-space: pre-wrap; } + text: ` + <style type="text/css"> + code { background-color: ` + palette.alternateBase + `; white-space: pre-wrap; } + pre { background-color: ` + palette.alternateBase + `; white-space: pre-wrap; } table { border-width: 1px; border-collapse: collapse; border-style: solid; - border-color: " + palette.text + "; - background-color: " + palette.alternateBase + "; + border-color: ` + palette.text + `; + background-color: ` + palette.alternateBase + `; } table th, table td { - padding: " + Math.ceil(fontMetrics.lineSpacing/2) + "px; + padding: ` + Math.ceil(fontMetrics.lineSpacing/2) + `px; } blockquote { margin-left: 1em; } - " + (!Settings.mobileMode ? "span[data-mx-spoiler] { + ` + (!Settings.mobileMode ? `span[data-mx-spoiler] { color: transparent; - background-color: " + palette.text + "; - }" : "") + // TODO(Nico): Figure out how to support mobile - "</style> - " + formatted.replace(/<del>/g, "<s>").replace(/<\/del>/g, "</s>").replace(/<strike>/g, "<s>").replace(/<\/strike>/g, "</s>") - width: parent?.width ?? 0 - height: !keepFullText ? Math.round(Math.min(timelineView.height / 8, implicitHeight)) : implicitHeight - clip: !keepFullText - selectByMouse: !Settings.mobileMode && !isReply - enabled: !Settings.mobileMode + background-color: ` + palette.text + `; + }` : "") + // TODO(Nico): Figure out how to support mobile + `</style> + ` + formatted.replace(/<del>/g, "<s>").replace(/<\/del>/g, "</s>").replace(/<strike>/g, "<s>").replace(/<\/strike>/g, "</s>") + + enabled: !isReply font.pointSize: (Settings.enlargeEmojiOnlyMessages && isOnlyEmoji > 0 && isOnlyEmoji < 4) ? Settings.fontSize * 3 : Settings.fontSize NhekoCursorShape { diff --git a/resources/qml/device-verification/DigitVerification.qml b/resources/qml/device-verification/DigitVerification.qml index 33cc59f4..148b3f65 100644 --- a/resources/qml/device-verification/DigitVerification.qml +++ b/resources/qml/device-verification/DigitVerification.qml @@ -5,7 +5,6 @@ import QtQuick 2.3 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.10 -import im.nheko 1.0 ColumnLayout { property string title: qsTr("Verification Code") diff --git a/resources/qml/device-verification/EmojiElement.qml b/resources/qml/device-verification/EmojiElement.qml index d32f93c1..519b4a8e 100644 --- a/resources/qml/device-verification/EmojiElement.qml +++ b/resources/qml/device-verification/EmojiElement.qml @@ -2,9 +2,9 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import QtQuick 2.3 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.10 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts Rectangle { color: "red" @@ -21,7 +21,7 @@ Rectangle { anchors.bottom: parent.bottom Label { - height: font.pixelSize * 2 + Layout.preferredHeight: font.pixelSize * 2 Layout.alignment: Qt.AlignHCenter text: col.emoji.emoji font.pixelSize: Qt.application.font.pixelSize * 2 diff --git a/resources/qml/device-verification/NewVerificationRequest.qml b/resources/qml/device-verification/NewVerificationRequest.qml index 9a9ab703..6f6de8c7 100644 --- a/resources/qml/device-verification/NewVerificationRequest.qml +++ b/resources/qml/device-verification/NewVerificationRequest.qml @@ -5,7 +5,6 @@ import QtQuick 2.3 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.10 -import im.nheko 1.0 ColumnLayout { property string title: flow.sender ? qsTr("Send Verification Request") : qsTr("Received Verification Request") diff --git a/resources/qml/device-verification/Success.qml b/resources/qml/device-verification/Success.qml index 4b60a5a3..9fe69bdf 100644 --- a/resources/qml/device-verification/Success.qml +++ b/resources/qml/device-verification/Success.qml @@ -5,7 +5,6 @@ import QtQuick 2.3 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.10 -import im.nheko 1.0 ColumnLayout { property string title: qsTr("Successful Verification") diff --git a/resources/qml/dialogs/AliasEditor.qml b/resources/qml/dialogs/AliasEditor.qml index c49ad321..82f12750 100644 --- a/resources/qml/dialogs/AliasEditor.qml +++ b/resources/qml/dialogs/AliasEditor.qml @@ -3,11 +3,10 @@ // SPDX-License-Identifier: GPL-3.0-or-later import ".." -import "../components" -import QtQuick 2.12 -import QtQuick.Controls 2.5 -import QtQuick.Layouts 1.3 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import im.nheko ApplicationWindow { diff --git a/resources/qml/dialogs/AllowedRoomsSettingsDialog.qml b/resources/qml/dialogs/AllowedRoomsSettingsDialog.qml index 89ea5e04..82b5506e 100644 --- a/resources/qml/dialogs/AllowedRoomsSettingsDialog.qml +++ b/resources/qml/dialogs/AllowedRoomsSettingsDialog.qml @@ -3,13 +3,11 @@ // SPDX-License-Identifier: GPL-3.0-or-later import ".." -import "../ui" -import Qt.labs.platform 1.1 as Platform -import QtQuick 2.15 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.2 -import QtQuick.Window 2.13 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import QtQuick.Window +import im.nheko ApplicationWindow { id: allowedDialog diff --git a/resources/qml/dialogs/ConfirmJoinRoomDialog.qml b/resources/qml/dialogs/ConfirmJoinRoomDialog.qml index a3fb9831..eb33cfc3 100644 --- a/resources/qml/dialogs/ConfirmJoinRoomDialog.qml +++ b/resources/qml/dialogs/ConfirmJoinRoomDialog.qml @@ -4,7 +4,6 @@ import ".." import "../ui" -import Qt.labs.platform 1.1 as Platform import QtQuick 2.15 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.2 @@ -39,8 +38,8 @@ ApplicationWindow { url: summary.roomAvatarUrl.replace("mxc://", "image://MxcImage/") roomid: summary.roomid displayName: summary.roomName - height: 130 - width: 130 + Layout.preferredHeight: 130 + Layout.preferredWidth: 130 Layout.alignment: Qt.AlignHCenter } diff --git a/resources/qml/dialogs/CreateDirect.qml b/resources/qml/dialogs/CreateDirect.qml index 75013970..d411c5f2 100644 --- a/resources/qml/dialogs/CreateDirect.qml +++ b/resources/qml/dialogs/CreateDirect.qml @@ -3,12 +3,11 @@ // SPDX-License-Identifier: GPL-3.0-or-later import ".." -import QtQuick 2.15 -import QtQuick.Window 2.13 -import QtQuick.Layouts 1.3 -import QtQuick.Controls 2.3 -import QtQml.Models 2.15 -import im.nheko 1.0 +import QtQuick +import QtQuick.Window +import QtQuick.Layouts +import QtQuick.Controls +import im.nheko ApplicationWindow { id: createDirectRoot diff --git a/resources/qml/dialogs/IgnoredUsers.qml b/resources/qml/dialogs/IgnoredUsers.qml new file mode 100644 index 00000000..6d6585f0 --- /dev/null +++ b/resources/qml/dialogs/IgnoredUsers.qml @@ -0,0 +1,84 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +import QtQml +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import QtQuick.Window +import im.nheko +import "../" + +Window { + id: ignoredUsers + + title: qsTr("Ignored users") + flags: Qt.WindowCloseButtonHint | Qt.WindowTitleHint + height: 650 + width: 420 + minimumHeight: 420 + color: palette.window + + ListView { + id: view + anchors.fill: parent + spacing: Nheko.paddingMedium + footerPositioning: ListView.OverlayFooter + + model: TimelineManager.ignoredUsers + header: ColumnLayout { + Text { + Layout.fillWidth: true + Layout.maximumWidth: view.width + wrapMode: Text.Wrap + color: palette.text + text: qsTr("Ignoring a user hides their messages (they can still see yours!).") + } + + Item { Layout.preferredHeight: Nheko.paddingLarge } + } + delegate: RowLayout { + property var profile: TimelineManager.getGlobalUserProfile(modelData) + + width: view.width + + Avatar { + enabled: false + displayName: profile.displayName + userid: profile.userid + url: profile.avatarUrl.replace("mxc://", "image://MxcImage/") + } + + Text { + Layout.fillWidth: true + Layout.alignment: Qt.AlignLeft + elide: Text.ElideRight + color: palette.text + text: modelData + } + + ImageButton { + Layout.preferredHeight: 24 + Layout.preferredWidth: 24 + image: ":/icons/icons/ui/dismiss.svg" + hoverEnabled: true + ToolTip.visible: hovered + ToolTip.text: qsTr("Stop Ignoring.") + onClicked: profile.ignored = false + } + } + footer: DialogButtonBox { + z: 2 + width: view.width + alignment: Qt.AlignRight + standardButtons: DialogButtonBox.Ok + onAccepted: ignoredUsers.close() + + background: Rectangle { + anchors.fill: parent + color: palette.window + } + } + } +} diff --git a/resources/qml/dialogs/ImagePackEditorDialog.qml b/resources/qml/dialogs/ImagePackEditorDialog.qml index 4cb2c1f6..9416ec97 100644 --- a/resources/qml/dialogs/ImagePackEditorDialog.qml +++ b/resources/qml/dialogs/ImagePackEditorDialog.qml @@ -137,8 +137,8 @@ ApplicationWindow { url: imagePack.avatarUrl.replace("mxc://", "image://MxcImage/") displayName: imagePack.packname roomid: imagePack.statekey - height: 130 - width: 130 + Layout.preferredHeight: 130 + Layout.preferredWidth: 130 crop: false Layout.alignment: Qt.AlignHCenter @@ -238,8 +238,8 @@ ApplicationWindow { url: imagePack.data(imagePack.index(currentImageIndex, 0), SingleImagePackModel.Url).replace("mxc://", "image://MxcImage/") + "?scale" displayName: imagePack.data(imagePack.index(currentImageIndex, 0), SingleImagePackModel.ShortCode) roomid: displayName - height: 130 - width: 130 + Layout.preferredHeight: 130 + Layout.preferredWidth: 130 crop: false Layout.alignment: Qt.AlignHCenter } diff --git a/resources/qml/dialogs/ImagePackSettingsDialog.qml b/resources/qml/dialogs/ImagePackSettingsDialog.qml index b7aab2a6..9f807e65 100644 --- a/resources/qml/dialogs/ImagePackSettingsDialog.qml +++ b/resources/qml/dialogs/ImagePackSettingsDialog.qml @@ -66,7 +66,7 @@ ApplicationWindow { dialog.show(); timelineRoot.destroyOnClose(dialog); } - width: packlistC.width + Layout.preferredWidth: packlistC.width visible: !packlist.containsAccountPack text: qsTr("Create account pack") } @@ -79,7 +79,7 @@ ApplicationWindow { dialog.show(); timelineRoot.destroyOnClose(dialog); } - width: packlistC.width + Layout.preferredWidth: packlistC.width visible: room.permissions.canChange(MtxEvent.ImagePackInRoom) text: qsTr("New room pack") } @@ -146,8 +146,8 @@ ApplicationWindow { url: packinfo.avatarUrl.replace("mxc://", "image://MxcImage/") displayName: packinfo.packName roomid: packinfo.statekey - height: 100 - width: 100 + Layout.preferredHeight: 100 + Layout.preferredWidth: 100 Layout.alignment: Qt.AlignHCenter enabled: false } diff --git a/resources/qml/dialogs/InputDialog.qml b/resources/qml/dialogs/InputDialog.qml index 49becc67..8bd95d09 100644 --- a/resources/qml/dialogs/InputDialog.qml +++ b/resources/qml/dialogs/InputDialog.qml @@ -13,7 +13,7 @@ ApplicationWindow { property alias prompt: promptLabel.text property alias echoMode: statusInput.echoMode - property var onAccepted: undefined + signal accepted(text: string) modality: Qt.NonModal flags: Qt.Dialog @@ -55,8 +55,7 @@ ApplicationWindow { standardButtons: DialogButtonBox.Ok | DialogButtonBox.Cancel onAccepted: { - if (inputDialog.onAccepted) - inputDialog.onAccepted(statusInput.text); + inputDialog.accepted(statusInput.text); inputDialog.close(); } diff --git a/resources/qml/dialogs/InviteDialog.qml b/resources/qml/dialogs/InviteDialog.qml index 58bae7fd..9fc165c7 100644 --- a/resources/qml/dialogs/InviteDialog.qml +++ b/resources/qml/dialogs/InviteDialog.qml @@ -4,10 +4,10 @@ import ".." import "../components" -import QtQuick 2.12 -import QtQuick.Controls 2.12 -import QtQuick.Layouts 1.12 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import im.nheko ApplicationWindow { id: inviteDialogRoot @@ -100,7 +100,7 @@ ApplicationWindow { property bool isValidMxid: text.match("@.+?:.{3,}") backgroundColor: palette.window - placeholderText: qsTr("@joe:matrix.org", "Example user id. The name 'joe' can be localized however you want.") + placeholderText: qsTr("@user:yourserver.example.com", "Example user id. The name 'user' can be localized however you want.") Layout.fillWidth: true onAccepted: { if (isValidMxid) { @@ -180,7 +180,7 @@ ApplicationWindow { Rectangle { Layout.fillHeight: true visible: inviteesList.visible - width: 1 + Layout.preferredWidth: 1 color: Nheko.theme.separator } ListView { diff --git a/resources/qml/dialogs/LeaveRoomDialog.qml b/resources/qml/dialogs/LeaveRoomDialog.qml index 3e78fb3b..c70a4ac0 100644 --- a/resources/qml/dialogs/LeaveRoomDialog.qml +++ b/resources/qml/dialogs/LeaveRoomDialog.qml @@ -3,10 +3,8 @@ // SPDX-License-Identifier: GPL-3.0-or-later import Qt.labs.platform 1.1 as P -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import im.nheko 1.0 -import "../voip" +import QtQuick +import im.nheko P.MessageDialog { id: leaveRoomRoot diff --git a/resources/qml/dialogs/LogoutDialog.qml b/resources/qml/dialogs/LogoutDialog.qml index e0e1f231..e79a3e0d 100644 --- a/resources/qml/dialogs/LogoutDialog.qml +++ b/resources/qml/dialogs/LogoutDialog.qml @@ -3,9 +3,8 @@ // SPDX-License-Identifier: GPL-3.0-or-later import Qt.labs.platform 1.1 as P -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import im.nheko 1.0 +import QtQuick +import im.nheko P.MessageDialog { id: logoutRoot diff --git a/resources/qml/dialogs/PhoneNumberInputDialog.qml b/resources/qml/dialogs/PhoneNumberInputDialog.qml index f1b8eef8..f9bff31c 100644 --- a/resources/qml/dialogs/PhoneNumberInputDialog.qml +++ b/resources/qml/dialogs/PhoneNumberInputDialog.qml @@ -13,7 +13,7 @@ ApplicationWindow { property alias prompt: promptLabel.text property alias echoMode: statusInput.echoMode - property var onAccepted: undefined + signal accepted(countryCode: string, text: string) modality: Qt.NonModal flags: Qt.Dialog @@ -1729,8 +1729,7 @@ ApplicationWindow { footer: DialogButtonBox { standardButtons: DialogButtonBox.Ok | DialogButtonBox.Cancel onAccepted: { - if (inputDialog.onAccepted) - inputDialog.onAccepted(numberPrefix.model.get(numberPrefix.currentIndex).i, statusInput.text); + inputDialog.accepted(numberPrefix.model.get(numberPrefix.currentIndex).i, statusInput.text); inputDialog.close(); } diff --git a/resources/qml/dialogs/PowerLevelEditor.qml b/resources/qml/dialogs/PowerLevelEditor.qml index 9fc9ee15..17b19c25 100644 --- a/resources/qml/dialogs/PowerLevelEditor.qml +++ b/resources/qml/dialogs/PowerLevelEditor.qml @@ -47,7 +47,7 @@ ApplicationWindow { TabBar { id: bar - width: parent.width + Layout.preferredWidth: parent.width NhekoTabButton { text: qsTr("Roles") diff --git a/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml b/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml index 01ec8b61..6a2e74b2 100644 --- a/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml +++ b/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml @@ -3,13 +3,11 @@ // SPDX-License-Identifier: GPL-3.0-or-later import ".." -import "../ui" -import Qt.labs.platform 1.1 as Platform -import QtQuick 2.15 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.2 -import QtQuick.Window 2.13 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import QtQuick.Window +import im.nheko ApplicationWindow { id: applyDialog diff --git a/resources/qml/dialogs/RawMessageDialog.qml b/resources/qml/dialogs/RawMessageDialog.qml index a27d988e..653b136f 100644 --- a/resources/qml/dialogs/RawMessageDialog.qml +++ b/resources/qml/dialogs/RawMessageDialog.qml @@ -2,9 +2,9 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import im.nheko ApplicationWindow { id: rawMessageRoot @@ -32,7 +32,6 @@ ApplicationWindow { font: Nheko.monospaceFont() color: palette.text readOnly: true - selectByMouse: !Settings.mobileMode textFormat: Text.PlainText anchors.fill: parent diff --git a/resources/qml/dialogs/ReadReceipts.qml b/resources/qml/dialogs/ReadReceipts.qml index d65de73c..74a4d1d8 100644 --- a/resources/qml/dialogs/ReadReceipts.qml +++ b/resources/qml/dialogs/ReadReceipts.qml @@ -78,8 +78,8 @@ ApplicationWindow { Avatar { id: avatar - width: Nheko.avatarSize - height: Nheko.avatarSize + Layout.preferredWidth: Nheko.avatarSize + Layout.preferredHeight: Nheko.avatarSize userid: model.mxid url: model.avatarUrl.replace("mxc://", "image://MxcImage/") displayName: model.displayName diff --git a/resources/qml/dialogs/ReportMessage.qml b/resources/qml/dialogs/ReportMessage.qml new file mode 100644 index 00000000..a0b6325c --- /dev/null +++ b/resources/qml/dialogs/ReportMessage.qml @@ -0,0 +1,85 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import im.nheko + +ApplicationWindow { + required property string eventId + + width: 400 + height: gl.implicitHeight + 2 * Nheko.paddingMedium + title: qsTr("Report message") + + GridLayout { + id: gl + + columnSpacing: Nheko.paddingMedium + rowSpacing: Nheko.paddingMedium + columns: 2 + anchors.fill: parent + anchors.margins: Nheko.paddingMedium + + Label { + Layout.columnSpan: 2 + Layout.fillWidth: true + wrapMode: Label.WordWrap + text: qsTr("This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.") + } + + Label { + text: qsTr("Enter your reason for reporting:") + } + + TextField { + id: reason + + Layout.fillWidth: true + } + + Label { + text: qsTr("How bad is the message?") + } + + Slider { + id: score + + from: 0 + to: -100 + stepSize: 25 + snapMode: Slider.SnapAlways + Layout.fillWidth: true + } + + Item {} + + Label { + text: { + if (score.value === 0) + return qsTr("Not bad") + else if (score.value === -25) + return qsTr("Mild") + else if (score.value === -50) + return qsTr("Bad") + else if (score.value === -75) + return qsTr("Serious") + else if (score.value === -100) + return qsTr("Extremely serious") + } + } + + DialogButtonBox { + Layout.columnSpan: 2 + Layout.alignment: Qt.AlignRight + standardButtons: DialogButtonBox.Ok | DialogButtonBox.Cancel + onAccepted: { + room.reportEvent(eventId, reason.text, score.value); + close(); + } + onRejected: close() + } + } +} diff --git a/resources/qml/dialogs/RoomDirectory.qml b/resources/qml/dialogs/RoomDirectory.qml index a6f53d2e..dbf3b459 100644 --- a/resources/qml/dialogs/RoomDirectory.qml +++ b/resources/qml/dialogs/RoomDirectory.qml @@ -57,8 +57,9 @@ ApplicationWindow { Layout.alignment: Qt.AlignVCenter Layout.rightMargin: Nheko.paddingMedium - width: avatarSize - height: avatarSize + Layout.preferredWidth: roomDirDelegate.avatarSize + Layout.preferredHeight: roomDirDelegate.avatarSize + url: model.avatarUrl.replace("mxc://", "image://MxcImage/") roomid: model.roomid displayName: model.name @@ -70,8 +71,7 @@ ApplicationWindow { columns: 2 Layout.alignment: Qt.AlignLeft - width: parent.width - avatar.width - Layout.preferredWidth: parent.width - avatar.width + Layout.preferredWidth: parent.width - roomAvatar.width ElidedLabel { Layout.row: 0 @@ -112,9 +112,17 @@ ApplicationWindow { Layout.row: 1 Layout.column: 1 id: joinRoomButton - enabled: model.canJoin - text: "Join" - onClicked: publicRooms.joinRoom(model.index) + enabled: model.roomid !== "" + text: model.canJoin ? qsTr("Join") : qsTr("Open") + onClicked: { + if (model.canJoin) + publicRooms.joinRoom(model.index); + else + { + Rooms.setCurrentRoom(model.roomid); + roomDirectoryWindow.close(); + } + } } } @@ -184,4 +192,16 @@ ApplicationWindow { } + footer: RowLayout { + spacing: Nheko.paddingMedium + width: parent.width + + Button { + text: qsTr("Close") + onClicked: roomDirectoryWindow.close() + Layout.alignment: Qt.AlignRight + Layout.margins: Nheko.paddingMedium + } + } + } diff --git a/resources/qml/dialogs/RoomMembers.qml b/resources/qml/dialogs/RoomMembers.qml index 64f21381..afb76398 100644 --- a/resources/qml/dialogs/RoomMembers.qml +++ b/resources/qml/dialogs/RoomMembers.qml @@ -37,8 +37,9 @@ ApplicationWindow { Avatar { id: roomAvatar - width: 130 - height: width + Layout.preferredHeight: 130 + Layout.preferredWidth: 130 + roomid: members.roomId displayName: members.roomName Layout.alignment: Qt.AlignHCenter @@ -130,8 +131,8 @@ ApplicationWindow { Avatar { id: avatar - width: Nheko.avatarSize - height: Nheko.avatarSize + Layout.preferredWidth: Nheko.avatarSize + Layout.preferredHeight: Nheko.avatarSize userid: model.mxid url: model.avatarUrl.replace("mxc://", "image://MxcImage/") displayName: model.displayName diff --git a/resources/qml/dialogs/RoomSettings.qml b/resources/qml/dialogs/RoomSettingsDialog.qml index 3b8e1903..9276a9d3 100644 --- a/resources/qml/dialogs/RoomSettings.qml +++ b/resources/qml/dialogs/RoomSettingsDialog.qml @@ -50,8 +50,8 @@ ApplicationWindow { url: roomSettings.roomAvatarUrl.replace("mxc://", "image://MxcImage/") roomid: roomSettings.roomId displayName: roomSettings.roomName - height: 130 - width: 130 + Layout.preferredHeight: 130 + Layout.preferredWidth: 130 Layout.alignment: Qt.AlignHCenter onClicked: TimelineManager.openImageOverlay(null, roomSettings.roomAvatarUrl, "", 0, 0) @@ -208,7 +208,6 @@ ApplicationWindow { : (roomSettings.plainRoomTopic === "" ? ("<i>" + qsTr("No topic set") + "</i>") : roomSettings.roomTopic) wrapMode: TextEdit.WordWrap background: null - selectByMouse: !Settings.mobileMode color: palette.text horizontalAlignment: TextEdit.AlignHCenter onLinkActivated: Nheko.openLink(link) @@ -552,8 +551,8 @@ ApplicationWindow { id: confirmEncryptionDialog title: qsTr("End-to-End Encryption") - text: qsTr("Encryption is currently experimental and things might break unexpectedly. <br> - Please take note that it can't be disabled afterwards.") + text: qsTr(`Encryption is currently experimental and things might break unexpectedly. <br> + Please take note that it can't be disabled afterwards.`) modality: Qt.NonModal onAccepted: { if (roomSettings.isEncryptionEnabled) diff --git a/resources/qml/dialogs/UserProfile.qml b/resources/qml/dialogs/UserProfile.qml index b54b52a4..614ecb56 100644 --- a/resources/qml/dialogs/UserProfile.qml +++ b/resources/qml/dialogs/UserProfile.qml @@ -3,7 +3,6 @@ // SPDX-License-Identifier: GPL-3.0-or-later import ".." -import "../device-verification" import "../ui" import "../components" import QtQuick 2.15 @@ -56,8 +55,8 @@ ApplicationWindow { id: displayAvatar url: profile.avatarUrl.replace("mxc://", "image://MxcImage/") - height: 130 - width: 130 + Layout.preferredHeight: 130 + Layout.preferredWidth: 130 displayName: profile.displayName userid: profile.userid Layout.alignment: Qt.AlignHCenter @@ -292,13 +291,24 @@ ApplicationWindow { ImageButton { Layout.preferredHeight: 24 Layout.preferredWidth: 24 + image: ":/icons/icons/ui/volume-off-indicator.svg" + hoverEnabled: true + ToolTip.visible: hovered + ToolTip.text: profile.ignored ? qsTr("Unignore the user.") : qsTr("Ignore the user.") + buttonTextColor: profile.ignored ? Nheko.theme.red : palette.buttonText + onClicked: profile.ignored = !profile.ignored + visible: !profile.isSelf + } + + ImageButton { + Layout.preferredHeight: 24 + Layout.preferredWidth: 24 image: ":/icons/icons/ui/refresh.svg" hoverEnabled: true ToolTip.visible: hovered ToolTip.text: qsTr("Refresh device list.") onClicked: profile.refreshDevices() } - } TabBar { @@ -487,8 +497,8 @@ ApplicationWindow { Layout.leftMargin: Nheko.paddingMedium property int avatarSize: Math.ceil(fontMetrics.lineSpacing * 1.6) - height: avatarSize - width: avatarSize + Layout.preferredHeight: avatarSize + Layout.preferredWidth: avatarSize url: avatarUrl.replace("mxc://", "image://MxcImage/") roomid: roomId displayName: roomName diff --git a/resources/qml/pages/LoginPage.qml b/resources/qml/pages/LoginPage.qml index 9bf4e97e..86188918 100644 --- a/resources/qml/pages/LoginPage.qml +++ b/resources/qml/pages/LoginPage.qml @@ -45,8 +45,8 @@ Item { Image { Layout.alignment: Qt.AlignHCenter source: "qrc:/logos/login.png" - height: 128 - width: 128 + Layout.preferredHeight: 128 + Layout.preferredWidth: 128 } RowLayout { @@ -56,16 +56,16 @@ Item { MatrixTextField { id: matrixIdLabel label: qsTr("Matrix ID") - placeholderText: qsTr("e.g @joe:matrix.org") + placeholderText: qsTr("e.g @user:yourserver.example.com") onEditingFinished: login.mxid = text - ToolTip.text: qsTr("Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :.\nYou can also put your homeserver address there if your server doesn't support .well-known lookup.\nExample: @user:server.my\nIf Nheko fails to discover your homeserver, it will show you a field to enter the server manually.") + ToolTip.text: qsTr("Your login name. A mxid should start with @ followed by the user ID. After the user ID you need to include your server name after a :.\nYou can also put your homeserver address there if your server doesn't support .well-known lookup.\nExample: @user:yourserver.example.com\nIf Nheko fails to discover your homeserver, it will show you a field to enter the server manually.") Keys.forwardTo: [pwBtn, ssoRepeater] } Spinner { - height: matrixIdLabel.height/2 + Layout.preferredHeight: matrixIdLabel.height/2 Layout.alignment: Qt.AlignBottom visible: running @@ -109,15 +109,15 @@ Item { Layout.fillWidth: true label: qsTr("Homeserver address") - placeholderText: qsTr("server.my:8787") + placeholderText: qsTr("yourserver.example.com:8787") text: login.homeserver onEditingFinished: login.homeserver = text - ToolTip.text: qsTr("The address that can be used to contact you homeserver's client API.\nExample: https://server.my:8787") + ToolTip.text: qsTr("The address that can be used to contact your homeserver's client API.\nExample: https://yourserver.example.com:8787") Keys.forwardTo: [pwBtn, ssoRepeater] } Item { - height: Nheko.avatarSize + Layout.preferredHeight: Nheko.avatarSize Layout.fillWidth: true Spinner { diff --git a/resources/qml/pages/RegisterPage.qml b/resources/qml/pages/RegisterPage.qml index c1bc5310..ad9143f7 100644 --- a/resources/qml/pages/RegisterPage.qml +++ b/resources/qml/pages/RegisterPage.qml @@ -45,8 +45,8 @@ Item { Image { Layout.alignment: Qt.AlignHCenter source: "qrc:/logos/login.png" - height: 128 - width: 128 + Layout.preferredHeight: 128 + Layout.preferredWidth: 128 } RowLayout { @@ -64,7 +64,7 @@ Item { Spinner { - height: hsLabel.height/2 + Layout.preferredHeight: hsLabel.height/2 Layout.alignment: Qt.AlignBottom visible: running @@ -96,7 +96,7 @@ Item { onEditingFinished: regis.checkUsername(text) } Spinner { - height: usernameLabel.height/2 + Layout.preferredHeight: usernameLabel.height/2 Layout.alignment: Qt.AlignBottom visible: running @@ -105,8 +105,6 @@ Item { } Image { - width: usernameLabel.height/2 - height: width Layout.preferredHeight: usernameLabel.height/2 Layout.preferredWidth: usernameLabel.height/2 Layout.alignment: Qt.AlignBottom @@ -168,7 +166,7 @@ Item { } Item { - height: Nheko.avatarSize + Layout.preferredHeight: Nheko.avatarSize Layout.fillWidth: true Spinner { diff --git a/resources/qml/pages/UserSettingsPage.qml b/resources/qml/pages/UserSettingsPage.qml index f23095b6..365366c7 100644 --- a/resources/qml/pages/UserSettingsPage.qml +++ b/resources/qml/pages/UserSettingsPage.qml @@ -4,13 +4,12 @@ pragma ComponentBehavior: Bound import ".." -import "../ui" -import Qt.labs.platform 1.1 as Platform -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.2 -import QtQuick.Window 2.15 -import im.nheko 1.0 +import "../dialogs" +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import QtQuick.Window +import im.nheko Rectangle { id: userSettingsDialog @@ -163,7 +162,6 @@ Rectangle { color: palette.text text: model.value readOnly: true - selectByMouse: !Settings.mobileMode textFormat: Text.PlainText } } @@ -216,6 +214,42 @@ Rectangle { } } DelegateChoice { + roleValue: UserSettingsModel.ConfigureHiddenEvents + Button { + text: qsTr("CONFIGURE") + onClicked: { + var dialog = hiddenEventsDialog.createObject(); + dialog.show(); + destroyOnClose(dialog); + } + + Component { + id: hiddenEventsDialog + + HiddenEventsDialog {} + } + } + } + + DelegateChoice { + roleValue: UserSettingsModel.ManageIgnoredUsers + Button { + text: qsTr("MANAGE") + onClicked: { + var dialog = ignoredUsersDialog.createObject(); + dialog.show(); + destroyOnClose(dialog); + } + + Component { + id: ignoredUsersDialog + + IgnoredUsers {} + } + } + } + + DelegateChoice { Text { text: model.value } diff --git a/resources/qml/pages/WelcomePage.qml b/resources/qml/pages/WelcomePage.qml index 3acdc18f..161785ac 100644 --- a/resources/qml/pages/WelcomePage.qml +++ b/resources/qml/pages/WelcomePage.qml @@ -18,8 +18,8 @@ ColumnLayout { Image { Layout.alignment: Qt.AlignHCenter source: "qrc:/logos/splash.png" - height: 256 - width: 256 + Layout.preferredHeight: 256 + Layout.preferredWidth: 256 } Label { diff --git a/resources/qml/ui/Ripple.qml b/resources/qml/ui/Ripple.qml index 911b88cf..9d871419 100644 --- a/resources/qml/ui/Ripple.qml +++ b/resources/qml/ui/Ripple.qml @@ -3,7 +3,6 @@ // SPDX-License-Identifier: GPL-3.0-or-later import QtQuick -import QtQuick.Controls Item { id: ripple diff --git a/resources/qml/ui/Snackbar.qml b/resources/qml/ui/Snackbar.qml index 0d334079..3c526d8d 100644 --- a/resources/qml/ui/Snackbar.qml +++ b/resources/qml/ui/Snackbar.qml @@ -49,7 +49,7 @@ Popup { contentItem: Label { color: palette.light - width: Math.max(Overlay.overlay? Overlay.overlay.width/2 : 0, 400) + width: Math.max(snackbar.Overlay.overlay? snackbar.Overlay.overlay.width/2 : 0, 400) text: snackbar.currentMessage font.bold: true } diff --git a/resources/qml/ui/TimelineEffects.qml b/resources/qml/ui/TimelineEffects.qml index 72237e31..4960ce32 100644 --- a/resources/qml/ui/TimelineEffects.qml +++ b/resources/qml/ui/TimelineEffects.qml @@ -9,6 +9,7 @@ Item { id: effectRoot readonly property int maxLifespan: Math.max(confettiEmitter.lifeSpan, rainfallEmitter.lifeSpan) required property bool shouldEffectsRun + visible: effectRoot.shouldEffectsRun function pulseConfetti() { @@ -20,11 +21,17 @@ Item { rainfallEmitter.pulse(effectRoot.height * 3.3) } + function removeParticles() + { + particleSystem.reset() + } + ParticleSystem { id: particleSystem - Component.onCompleted: pause(); + Component.onCompleted: stop(); paused: !effectRoot.shouldEffectsRun + running: effectRoot.shouldEffectsRun } Emitter { @@ -89,26 +96,47 @@ Item { enabled: false anchors.horizontalCenter: effectRoot.horizontalCenter y: -60 - emitRate: effectRoot.width / 50 + emitRate: effectRoot.width / 30 lifeSpan: 10000 system: particleSystem velocity: PointDirection { x: 0 - y: 300 + y: 400 xVariation: 0 yVariation: 75 } - ItemParticle { - system: particleSystem - groups: ["rain"] - fade: false - delegate: Rectangle { - width: 2 - height: 30 + 30 * Math.random() - radius: 2 + // causes high CPU load, see: https://bugreports.qt.io/browse/QTBUG-117923 + //ItemParticle { + // system: particleSystem + // groups: ["rain"] + // fade: false + // visible: effectRoot.shouldEffectsRun + // delegate: Rectangle { + // width: 2 + // height: 30 + 30 * Math.random() + // radius: 2 + // color: "#0099ff" + // } + //} + + ImageParticle { + system: particleSystem + groups: ["rain"] + source: "qrc:/confettiparticle.svg" + rotationVelocity: 0 + rotationVelocityVariation: 0 + colorVariation: 0 color: "#0099ff" + entryEffect: ImageParticle.None + xVector: PointDirection { + x: 0.01 + y: 0 + } + yVector: PointDirection { + x: 0 + y: 5 + } } } } -} diff --git a/resources/qml/ui/media/MediaControls.qml b/resources/qml/ui/media/MediaControls.qml index bd5f6ddc..0519a194 100644 --- a/resources/qml/ui/media/MediaControls.qml +++ b/resources/qml/ui/media/MediaControls.qml @@ -198,13 +198,11 @@ Rectangle { when: Settings.mobileMode || volumeButton.hovered || volumeSlider.hovered || volumeSlider.pressed PropertyChanges { - target: volumeSlider - Layout.preferredWidth: 100 + volumeSlider.implicitWidth: 100 } PropertyChanges { - target: volumeSlider - opacity: 1 + volumeSlider.opacity: 1 } } diff --git a/resources/qml/voip/ActiveCallBar.qml b/resources/qml/voip/ActiveCallBar.qml index 45afedab..eb7fce76 100644 --- a/resources/qml/voip/ActiveCallBar.qml +++ b/resources/qml/voip/ActiveCallBar.qml @@ -31,8 +31,8 @@ Rectangle { anchors.leftMargin: 8 Avatar { - width: Nheko.avatarSize - height: Nheko.avatarSize + implicitWidth: Nheko.avatarSize + implicitHeight: Nheko.avatarSize url: CallManager.callPartyAvatarUrl.replace("mxc://", "image://MxcImage/") userid: CallManager.callParty displayName: CallManager.callPartyDisplayName @@ -61,8 +61,7 @@ Rectangle { when: CallManager.callType == Voip.VOICE PropertyChanges { - target: callTypeIcon - source: "qrc:/icons/icons/ui/place-call.svg" + callTypeIcon.source: "qrc:/icons/icons/ui/place-call.svg" } }, @@ -71,8 +70,7 @@ Rectangle { when: CallManager.callType == Voip.VIDEO PropertyChanges { - target: callTypeIcon - source: "qrc:/icons/icons/ui/video.svg" + callTypeIcon.source: "qrc:/icons/icons/ui/video.svg" } }, @@ -81,8 +79,7 @@ Rectangle { when: CallManager.callType == Voip.SCREEN PropertyChanges { - target: callTypeIcon - source: "qrc:/icons/icons/ui/screen-share.svg" + callTypeIcon.source: "qrc:/icons/icons/ui/screen-share.svg" } } @@ -103,8 +100,7 @@ Rectangle { when: CallManager.callState == Voip.OFFERSENT PropertyChanges { - target: callStateLabel - text: qsTr("Calling...") + callStateLabel.text: qsTr("Calling...") } }, @@ -113,8 +109,7 @@ Rectangle { when: CallManager.callState == Voip.CONNECTING PropertyChanges { - target: callStateLabel - text: qsTr("Connecting...") + callStateLabel.text: qsTr("Connecting...") } }, @@ -123,8 +118,7 @@ Rectangle { when: CallManager.callState == Voip.ANSWERSENT PropertyChanges { - target: callStateLabel - text: qsTr("Connecting...") + callStateLabel.text: qsTr("Connecting...") } }, @@ -133,18 +127,15 @@ Rectangle { when: CallManager.callState == Voip.CONNECTED PropertyChanges { - target: callStateLabel - text: "00:00" + callStateLabel.text: "00:00" } PropertyChanges { - target: callTimer - startTime: Math.floor((new Date()).getTime() / 1000) + callTimer.startTime: Math.floor((new Date()).getTime() / 1000) } PropertyChanges { - target: stackLayout - currentIndex: CallManager.callType != Voip.VOICE ? 1 : 0 + stackLayout.currentIndex: CallManager.callType != Voip.VOICE ? 1 : 0 } }, @@ -153,13 +144,16 @@ Rectangle { when: CallManager.callState == Voip.DISCONNECTED PropertyChanges { - target: callStateLabel - text: "" + callStateLabel.text: "" } + // HACK(Nico): Somehow this causes a crash when not using the custom parser for that property change... + //PropertyChanges { + // stackLayout.currentIndex: 0 + //} PropertyChanges { target: stackLayout - currentIndex: 0 + currentIndex: 0 // qmllint disable Quick.property-changes-parsed } } @@ -202,8 +196,8 @@ Rectangle { ImageButton { visible: CallManager.haveLocalPiP - width: 24 - height: 24 + Layout.preferredWidth: 24 + Layout.preferredHeight: 24 buttonTextColor: "#000000" image: ":/icons/icons/ui/picture-in-picture.svg" hoverEnabled: true @@ -215,8 +209,8 @@ Rectangle { ImageButton { Layout.leftMargin: 8 Layout.rightMargin: 16 - width: 24 - height: 24 + Layout.preferredWidth: 24 + Layout.preferredHeight: 24 buttonTextColor: "#000000" image: CallManager.isMicMuted ? ":/icons/icons/ui/microphone-unmute.svg" : ":/icons/icons/ui/microphone-mute.svg" hoverEnabled: true diff --git a/resources/qml/voip/CallInviteBar.qml b/resources/qml/voip/CallInviteBar.qml index d82bd143..c2ce8066 100644 --- a/resources/qml/voip/CallInviteBar.qml +++ b/resources/qml/voip/CallInviteBar.qml @@ -3,10 +3,10 @@ // SPDX-License-Identifier: GPL-3.0-or-later import "../" -import QtQuick 2.9 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.2 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import im.nheko Rectangle { visible: CallManager.haveCallInvite && !Settings.mobileMode @@ -38,8 +38,8 @@ Rectangle { anchors.leftMargin: 8 Avatar { - width: Nheko.avatarSize - height: Nheko.avatarSize + implicitWidth: Nheko.avatarSize + implicitHeight: Nheko.avatarSize url: CallManager.callPartyAvatarUrl.replace("mxc://", "image://MxcImage/") userid: CallManager.callParty displayName: CallManager.callPartyDisplayName @@ -72,8 +72,8 @@ Rectangle { ImageButton { Layout.rightMargin: 16 - width: 20 - height: 20 + Layout.preferredWidth: 20 + Layout.preferredHeight: 20 buttonTextColor: "#000000" image: ":/icons/icons/ui/settings.svg" hoverEnabled: true @@ -82,7 +82,7 @@ Rectangle { onClicked: { var dialog = devicesDialog.createObject(timelineRoot); dialog.open(); - timelineRoot.destroyOnClose(dialog); + timelineRoot.destroyOnClose(dialog); } } diff --git a/resources/qml/voip/ScreenShare.qml b/resources/qml/voip/ScreenShare.qml index 7f8665bc..d3661933 100644 --- a/resources/qml/voip/ScreenShare.qml +++ b/resources/qml/voip/ScreenShare.qml @@ -3,10 +3,10 @@ // SPDX-License-Identifier: GPL-3.0-or-later import "../" -import QtQuick 2.9 -import QtQuick.Controls 2.3 -import QtQuick.Layouts 1.2 -import im.nheko 1.0 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import im.nheko Popup { modal: true diff --git a/resources/qml/voip/VideoCall.qml b/resources/qml/voip/VideoCall.qml index bd160d3e..f083d998 100644 --- a/resources/qml/voip/VideoCall.qml +++ b/resources/qml/voip/VideoCall.qml @@ -2,7 +2,6 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -import QtQuick 2.9 import org.freedesktop.gstreamer.GLVideoItem 1.0 GstGLVideoItem { diff --git a/src/AliasEditModel.cpp b/src/AliasEditModel.cpp index 218c5b36..c6dc35c6 100644 --- a/src/AliasEditModel.cpp +++ b/src/AliasEditModel.cpp @@ -42,7 +42,7 @@ AliasEditingModel::AliasEditingModel(const std::string &rid, QObject *parent) } } - for (const auto &alias : qAsConst(aliases)) { + for (const auto &alias : std::as_const(aliases)) { fetchAliasesStatus(alias.alias); } fetchPublishedAliases(); @@ -148,7 +148,7 @@ void AliasEditingModel::addAlias(QString newAlias) { const auto aliasStr = newAlias.toStdString(); - for (const auto &e : qAsConst(aliases)) { + for (const auto &e : std::as_const(aliases)) { if (e.alias == aliasStr) { return; } diff --git a/src/Cache.cpp b/src/Cache.cpp index 0426f38a..25904e53 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -37,7 +37,7 @@ //! Should be changed when a breaking change occurs in the cache format. //! This will reset client's data. -static const std::string CURRENT_CACHE_FORMAT_VERSION{"2023.03.12"}; +static const std::string CURRENT_CACHE_FORMAT_VERSION{"2023.10.22"}; //! Keys used for the DB static const std::string_view NEXT_BATCH_KEY("next_batch"); @@ -91,10 +91,30 @@ static constexpr auto INBOUND_MEGOLM_SESSIONS_DB("inbound_megolm_sessions"); static constexpr auto OUTBOUND_MEGOLM_SESSIONS_DB("outbound_megolm_sessions"); //! MegolmSessionIndex -> session data about which devices have access to this static constexpr auto MEGOLM_SESSIONS_DATA_DB("megolm_sessions_data_db"); +//! Curve25519 key to session_id and json encoded olm session, separated by null. Dupsorted. +static constexpr auto OLM_SESSIONS_DB("olm_sessions.v3"); + +//! flag to be set, when the db should be compacted on startup +bool needsCompact = false; using CachedReceipts = std::multimap<uint64_t, std::string, std::greater<uint64_t>>; using Receipts = std::map<std::string, std::map<std::string, uint64_t>>; +static std::string +combineOlmSessionKeyFromCurveAndSessionId(std::string_view curve25519, std::string_view session_id) +{ + std::string combined(curve25519.size() + 1 + session_id.size(), '\0'); + combined.replace(0, curve25519.size(), curve25519); + combined.replace(curve25519.size() + 1, session_id.size(), session_id); + return combined; +} +static std::pair<std::string_view, std::string_view> +splitCurve25519AndOlmSessionId(std::string_view input) +{ + auto separator = input.find('\0'); + return std::pair(input.substr(0, separator), input.substr(separator + 1)); +} + namespace { std::unique_ptr<Cache> instance_ = nullptr; } @@ -132,6 +152,49 @@ ro_txn(lmdb::env &env) return RO_txn{txn}; } +static void +compactDatabase(lmdb::env &from, lmdb::env &to) +{ + auto fromTxn = lmdb::txn::begin(from, nullptr, MDB_RDONLY); + auto toTxn = lmdb::txn::begin(to); + + auto rootDb = lmdb::dbi::open(fromTxn); + auto dbNames = lmdb::cursor::open(fromTxn, rootDb); + + std::string_view dbName; + while (dbNames.get(dbName, MDB_cursor_op::MDB_NEXT_NODUP)) { + nhlog::db()->info("Compacting db: {}", dbName); + + auto flags = MDB_CREATE; + + if (dbName.ends_with("/event_order") || dbName.ends_with("/order2msg") || + dbName.ends_with("/pending")) + flags |= MDB_INTEGERKEY; + if (dbName.ends_with("/related") || dbName.ends_with("/states_key") || + dbName == SPACES_CHILDREN_DB || dbName == SPACES_PARENTS_DB) + flags |= MDB_DUPSORT; + + auto dbNameStr = std::string(dbName); + auto fromDb = lmdb::dbi::open(fromTxn, dbNameStr.c_str(), flags); + auto toDb = lmdb::dbi::open(toTxn, dbNameStr.c_str(), flags); + + if (dbName.ends_with("/states_key")) { + lmdb::dbi_set_dupsort(fromTxn, fromDb, Cache::compare_state_key); + lmdb::dbi_set_dupsort(toTxn, toDb, Cache::compare_state_key); + } + + auto fromCursor = lmdb::cursor::open(fromTxn, fromDb); + auto toCursor = lmdb::cursor::open(toTxn, toDb); + + std::string_view key, val; + while (fromCursor.get(key, val, MDB_cursor_op::MDB_NEXT)) { + toCursor.put(key, val, MDB_APPENDDUP); + } + } + + toTxn.commit(); +} + template<class T> bool containsStateUpdates(const T &e) @@ -266,9 +329,13 @@ Cache::setup() nhlog::db()->info("completed state migration"); } - env_ = lmdb::env::create(); - env_.set_mapsize(DB_SIZE); - env_.set_max_dbs(MAX_DBS); + auto openEnv = [](const QString &name) { + auto e = lmdb::env::create(); + e.set_mapsize(DB_SIZE); + e.set_max_dbs(MAX_DBS); + e.open(name.toStdString().c_str(), MDB_NOMETASYNC | MDB_NOSYNC); + return e; + }; if (isInitial) { nhlog::db()->info("initializing LMDB"); @@ -291,7 +358,41 @@ Cache::setup() // corruption is an lmdb or filesystem bug. See // https://github.com/Nheko-Reborn/nheko/issues/1355 // https://github.com/Nheko-Reborn/nheko/issues/1303 - env_.open(cacheDirectory_.toStdString().c_str(), MDB_NOMETASYNC | MDB_NOSYNC); + env_ = openEnv(cacheDirectory_); + + if (needsCompact) { + auto compactDir = QStringLiteral("%1-compacting").arg(cacheDirectory_); + auto toDeleteDir = QStringLiteral("%1-olddb").arg(cacheDirectory_); + if (QFile::exists(cacheDirectory_)) + QDir(compactDir).removeRecursively(); + if (QFile::exists(toDeleteDir)) + QDir(toDeleteDir).removeRecursively(); + if (!QDir().mkpath(compactDir)) { + nhlog::db()->warn( + "Failed to create directory '{}' for database compaction, skipping compaction!", + compactDir.toStdString()); + } else { + // lmdb::env_copy(env_, compactDir.toStdString().c_str(), MDB_CP_COMPACT); + + // create a temporary db + auto temp = openEnv(compactDir); + + // copy data + compactDatabase(env_, temp); + + // close envs + temp.close(); + env_.close(); + + // swap the databases and delete old one + QDir().rename(cacheDirectory_, toDeleteDir); + QDir().rename(compactDir, cacheDirectory_); + QDir(toDeleteDir).removeRecursively(); + + // reopen env + env_ = openEnv(cacheDirectory_); + } + } } catch (const lmdb::error &e) { if (e.code() != MDB_VERSION_MISMATCH && e.code() != MDB_INVALID) { throw std::runtime_error("LMDB initialization failed" + std::string(e.what())); @@ -302,11 +403,11 @@ Cache::setup() QDir stateDir(cacheDirectory_); auto eList = stateDir.entryList(QDir::NoDotAndDotDot); - for (const auto &file : qAsConst(eList)) { + for (const auto &file : std::as_const(eList)) { if (!stateDir.remove(file)) throw std::runtime_error(("Unable to delete file " + file).toStdString().c_str()); } - env_.open(cacheDirectory_.toStdString().c_str()); + env_ = openEnv(cacheDirectory_); } auto txn = lmdb::txn::begin(env_); @@ -328,6 +429,8 @@ Cache::setup() outboundMegolmSessionDb_ = lmdb::dbi::open(txn, OUTBOUND_MEGOLM_SESSIONS_DB, MDB_CREATE); megolmSessionDataDb_ = lmdb::dbi::open(txn, MEGOLM_SESSIONS_DATA_DB, MDB_CREATE); + olmSessionDb_ = lmdb::dbi::open(txn, OLM_SESSIONS_DB, MDB_CREATE); + // What rooms are encrypted encryptedRooms_ = lmdb::dbi::open(txn, ENCRYPTED_ROOMS_DB, MDB_CREATE); eventExpiryBgJob_ = lmdb::dbi::open(txn, EVENT_EXPIRATION_BG_JOB_DB, MDB_CREATE); @@ -991,8 +1094,6 @@ Cache::saveOlmSessions(std::vector<std::pair<std::string, mtx::crypto::OlmSessio auto txn = lmdb::txn::begin(env_); for (const auto &[curve25519, session] : sessions) { - auto db = getOlmSessionsDb(txn, curve25519); - const auto pickled = pickle<SessionObject>(session.get(), pickle_secret_); const auto session_id = mtx::crypto::session_id(session.get()); @@ -1000,7 +1101,9 @@ Cache::saveOlmSessions(std::vector<std::pair<std::string, mtx::crypto::OlmSessio stored_session.pickled_session = pickled; stored_session.last_message_ts = timestamp; - db.put(txn, session_id, nlohmann::json(stored_session).dump()); + olmSessionDb_.put(txn, + combineOlmSessionKeyFromCurveAndSessionId(curve25519, session_id), + nlohmann::json(stored_session).dump()); } txn.commit(); @@ -1014,7 +1117,6 @@ Cache::saveOlmSession(const std::string &curve25519, using namespace mtx::crypto; auto txn = lmdb::txn::begin(env_); - auto db = getOlmSessionsDb(txn, curve25519); const auto pickled = pickle<SessionObject>(session.get(), pickle_secret_); const auto session_id = mtx::crypto::session_id(session.get()); @@ -1023,7 +1125,9 @@ Cache::saveOlmSession(const std::string &curve25519, stored_session.pickled_session = pickled; stored_session.last_message_ts = timestamp; - db.put(txn, session_id, nlohmann::json(stored_session).dump()); + olmSessionDb_.put(txn, + combineOlmSessionKeyFromCurveAndSessionId(curve25519, session_id), + nlohmann::json(stored_session).dump()); txn.commit(); } @@ -1035,10 +1139,10 @@ Cache::getOlmSession(const std::string &curve25519, const std::string &session_i try { auto txn = ro_txn(env_); - auto db = getOlmSessionsDb(txn, curve25519); std::string_view pickled; - bool found = db.get(txn, session_id, pickled); + bool found = olmSessionDb_.get( + txn, combineOlmSessionKeyFromCurveAndSessionId(curve25519, session_id), pickled); if (found) { auto data = nlohmann::json::parse(pickled).get<StoredOlmSession>(); @@ -1057,14 +1161,20 @@ Cache::getLatestOlmSession(const std::string &curve25519) try { auto txn = ro_txn(env_); - auto db = getOlmSessionsDb(txn, curve25519); - std::string_view session_id, pickled_session; + std::string_view key = curve25519, pickled_session; std::optional<StoredOlmSession> currentNewest; - auto cursor = lmdb::cursor::open(txn, db); - while (cursor.get(session_id, pickled_session, MDB_NEXT)) { + auto cursor = lmdb::cursor::open(txn, olmSessionDb_); + bool first = true; + while (cursor.get(key, pickled_session, first ? MDB_SET_RANGE : MDB_NEXT)) { + first = false; + + auto storedCurve = splitCurve25519AndOlmSessionId(key).first; + if (storedCurve != curve25519) + break; + auto data = nlohmann::json::parse(pickled_session).get<StoredOlmSession>(); if (!currentNewest || currentNewest->last_message_ts < data.last_message_ts) currentNewest = data; @@ -1086,14 +1196,21 @@ Cache::getOlmSessions(const std::string &curve25519) try { auto txn = ro_txn(env_); - auto db = getOlmSessionsDb(txn, curve25519); - std::string_view session_id, unused; + std::string_view key = curve25519, value; std::vector<std::string> res; - auto cursor = lmdb::cursor::open(txn, db); - while (cursor.get(session_id, unused, MDB_NEXT)) + auto cursor = lmdb::cursor::open(txn, olmSessionDb_); + + bool first = true; + while (cursor.get(key, value, first ? MDB_SET_RANGE : MDB_NEXT)) { + first = false; + + auto [storedCurve, session_id] = splitCurve25519AndOlmSessionId(key); + if (storedCurve != curve25519) + break; res.emplace_back(session_id); + } cursor.close(); return res; @@ -1603,6 +1720,51 @@ Cache::runMigrations() nhlog::db()->info("Successfully updated states key database format."); return true; }}, + {"2023.10.22", + [this]() { + // migrate olm sessions to a single db + try { + auto txn = lmdb::txn::begin(env_, nullptr); + auto mainDb = lmdb::dbi::open(txn); + auto dbNames = lmdb::cursor::open(txn, mainDb); + bool doCommit = false; + + std::string_view dbName; + while (dbNames.get(dbName, MDB_NEXT)) { + if (!dbName.starts_with("olm_sessions.v2/")) + continue; + + doCommit = true; + auto curveKey = dbName; + curveKey.remove_prefix(std::string_view("olm_sessions.v2/").size()); + + auto oldDb = lmdb::dbi::open(txn, std::string(dbName).c_str()); + auto olmCursor = lmdb::cursor::open(txn, oldDb); + + std::string_view session_id, json; + while (olmCursor.get(session_id, json, MDB_NEXT)) { + olmSessionDb_.put( + txn, + combineOlmSessionKeyFromCurveAndSessionId(curveKey, session_id), + json); + } + olmCursor.close(); + + oldDb.drop(txn, true); + } + dbNames.close(); + + if (doCommit) + txn.commit(); + } catch (const lmdb::error &e) { + nhlog::db()->critical("Failed to convert olm sessions database in migration! {}", + e.what()); + return false; + } + + nhlog::db()->info("Successfully updated olm sessions database format."); + return true; + }}, }; nhlog::db()->info("Running migrations, this may take a while!"); @@ -2961,11 +3123,26 @@ Cache::getRoomName(lmdb::txn &txn, lmdb::dbi &statesdb, lmdb::dbi &membersdb) return localUserId_; }(); + auto second_member = [&members, this]() { + bool first = true; + for (const auto &m : members) { + if (m.first != localUserId_.toStdString()) { + if (first) + first = false; + else + return QString::fromStdString(m.second.name); + } + } + + return localUserId_; + }(); if (total == 2) return first_member; - else if (total > 2) - return tr("%1 and %n other(s)", "", (int)total - 1).arg(first_member); + else if (total == 3) + return tr("%1 and %2", "RoomName").arg(first_member, second_member); + else if (total > 3) + return tr("%1 and %n other(s)", "", (int)total - 2).arg(first_member); return tr("Empty Room"); } @@ -5366,6 +5543,12 @@ from_json(const nlohmann::json &obj, StoredOlmSession &msg) namespace cache { void +setNeedsCompactFlag() +{ + needsCompact = true; +} + +void init(const QString &user_id) { instance_ = std::make_unique<Cache>(user_id); diff --git a/src/Cache.h b/src/Cache.h index 113ee42e..bed4938c 100644 --- a/src/Cache.h +++ b/src/Cache.h @@ -27,6 +27,9 @@ struct Notifications; namespace cache { void +setNeedsCompactFlag(); + +void init(const QString &user_id); std::string diff --git a/src/Cache_p.h b/src/Cache_p.h index 8d51c7c4..e59796ed 100644 --- a/src/Cache_p.h +++ b/src/Cache_p.h @@ -594,11 +594,6 @@ private: const std::set<std::string> &spaces_with_updates, std::set<std::string> rooms_with_updates); - lmdb::dbi getPendingReceiptsDb(lmdb::txn &txn) - { - return lmdb::dbi::open(txn, "pending_receipts", MDB_CREATE); - } - lmdb::dbi getEventsDb(lmdb::txn &txn, const std::string &room_id) { return lmdb::dbi::open(txn, std::string(room_id + "/events").c_str(), MDB_CREATE); @@ -679,16 +674,6 @@ private: return lmdb::dbi::open(txn, "verified", MDB_CREATE); } - //! Retrieves or creates the database that stores the open OLM sessions between our device - //! and the given curve25519 key which represents another device. - //! - //! Each entry is a map from the session_id to the pickled representation of the session. - lmdb::dbi getOlmSessionsDb(lmdb::txn &txn, const std::string &curve25519_key) - { - return lmdb::dbi::open( - txn, std::string("olm_sessions.v2/" + curve25519_key).c_str(), MDB_CREATE); - } - QString getDisplayName(const mtx::events::StateEvent<mtx::events::state::Member> &event) { if (!event.content.display_name.empty()) @@ -718,6 +703,7 @@ private: lmdb::dbi inboundMegolmSessionDb_; lmdb::dbi outboundMegolmSessionDb_; lmdb::dbi megolmSessionDataDb_; + lmdb::dbi olmSessionDb_; lmdb::dbi encryptedRooms_; diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index 06d88303..db5cbbe8 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -6,6 +6,9 @@ #include <QInputDialog> #include <QMessageBox> +#include <algorithm> +#include <unordered_set> + #include <mtx/responses.hpp> #include "AvatarProvider.h" @@ -21,7 +24,6 @@ #include "encryption/DeviceVerificationFlow.h" #include "encryption/Olm.h" #include "ui/RoomSummary.h" -#include "ui/Theme.h" #include "ui/UserProfile.h" #include "voip/CallManager.h" @@ -29,8 +31,6 @@ #include "timeline/TimelineViewManager.h" -#include "blurhash.hpp" - ChatPage *ChatPage::instance_ = nullptr; static constexpr int CHECK_CONNECTIVITY_INTERVAL = 15'000; static constexpr int RETRY_TIMEOUT = 5'000; @@ -404,6 +404,19 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QObject *parent) [](std::function<void()> f) { f(); }, Qt::QueuedConnection); + connect(qobject_cast<QGuiApplication *>(QGuiApplication::instance()), + &QGuiApplication::focusWindowChanged, + this, + [this](QWindow *activeWindow) { + if (activeWindow) { + nhlog::ui()->debug("Stopping inactive timer."); + lastWindowActive = QDateTime(); + } else { + nhlog::ui()->debug("Starting inactive timer."); + lastWindowActive = QDateTime::currentDateTime(); + } + }); + connectCallMessage<mtx::events::voip::CallInvite>(); connectCallMessage<mtx::events::voip::CallCandidates>(); connectCallMessage<mtx::events::voip::CallAnswer>(); @@ -588,6 +601,10 @@ ChatPage::loadStateFromCache() try { olm::client()->load(cache::restoreOlmAccount(), cache::client()->pickleSecret()); + nhlog::db()->info("Removing old cached messages"); + cache::deleteOldData(); + nhlog::db()->info("Message removal done"); + emit initializeEmptyViews(); cache::calculateRoomReadStatus(); @@ -761,6 +778,23 @@ ChatPage::handleSyncResponse(const mtx::responses::Sync &res, const std::string // Ensure that we have enough one-time keys available. ensureOneTimeKeyCount(res.device_one_time_keys_count, res.device_unused_fallback_key_types); + std::optional<mtx::events::account_data::IgnoredUsers> oldIgnoredUsers; + if (auto ignoreEv = std::ranges::find_if( + res.account_data.events, + [](const mtx::events::collections::RoomAccountDataEvents &e) { + return std::holds_alternative< + mtx::events::AccountDataEvent<mtx::events::account_data::IgnoredUsers>>(e); + }); + ignoreEv != res.account_data.events.end()) { + if (auto oldEv = cache::client()->getAccountData(mtx::events::EventType::IgnoredUsers)) + oldIgnoredUsers = + std::get<mtx::events::AccountDataEvent<mtx::events::account_data::IgnoredUsers>>( + *oldEv) + .content; + else + oldIgnoredUsers = mtx::events::account_data::IgnoredUsers{}; + } + // TODO: fine grained error handling try { cache::client()->saveState(res); @@ -770,12 +804,34 @@ ChatPage::handleSyncResponse(const mtx::responses::Sync &res, const std::string emit syncUI(std::move(res)); - // if we process a lot of syncs (1 every 200ms), this means we clean the - // db every 100s - static int syncCounter = 0; - if (syncCounter++ >= 500) { - cache::deleteOldData(); - syncCounter = 0; + // if the ignored users changed, clear timeline of all affected rooms. + if (oldIgnoredUsers) { + if (auto newEv = + cache::client()->getAccountData(mtx::events::EventType::IgnoredUsers)) { + std::vector<mtx::events::account_data::IgnoredUser> changedUsers{}; + std::ranges::set_symmetric_difference( + oldIgnoredUsers->users, + std::get<mtx::events::AccountDataEvent<mtx::events::account_data::IgnoredUsers>>( + *newEv) + .content.users, + std::back_inserter(changedUsers), + {}, + &mtx::events::account_data::IgnoredUser::id, + &mtx::events::account_data::IgnoredUser::id); + + std::unordered_set<std::string> roomsToReload; + for (const auto &user : changedUsers) { + auto commonRooms = cache::client()->getCommonRooms(user.id); + for (const auto &room : commonRooms) + roomsToReload.insert(room.first); + } + + for (const auto &room : roomsToReload) { + if (auto model = + view_manager_->rooms()->getRoomById(QString::fromStdString(room))) + model->clearTimeline(); + } + } } } catch (const lmdb::map_full_error &e) { nhlog::db()->error("lmdb is full: {}", e.what()); @@ -1111,6 +1167,13 @@ ChatPage::currentPresence() const return mtx::presence::unavailable; case UserSettings::Presence::Offline: return mtx::presence::offline; + case UserSettings::Presence::AutomaticPresence: + if (lastWindowActive.isValid() && + lastWindowActive.addSecs(60 * 5) < QDateTime::currentDateTime()) + return mtx::presence::unavailable; + else + return mtx::presence::online; + default: return mtx::presence::online; } @@ -1577,7 +1640,7 @@ ChatPage::handleMatrixUri(QString uri) auto items = uri_.query(QUrl::ComponentFormattingOption::FullyEncoded).split('&', Qt::SkipEmptyParts); - for (QString item : qAsConst(items)) { + for (QString item : std::as_const(items)) { nhlog::ui()->info("item: {}", item.toStdString()); if (item.startsWith(QLatin1String("action="))) { diff --git a/src/ChatPage.h b/src/ChatPage.h index fbf4fbce..1e1da049 100644 --- a/src/ChatPage.h +++ b/src/ChatPage.h @@ -16,13 +16,12 @@ #include <mtx/events/presence.hpp> #include <mtx/secret_storage.hpp> +#include <QDateTime> #include <QMap> #include <QPoint> #include <QSharedPointer> #include <QTimer> -#include "CacheCryptoStructs.h" -#include "CacheStructs.h" #include "ui/RoomSummary.h" class TimelineViewManager; @@ -225,6 +224,9 @@ private: std::unique_ptr<mtx::pushrules::PushRuleEvaluator> pushrules; QDateTime lastSpacesUpdate = QDateTime::currentDateTime(); + + // Stores when our windows lost focus. Invalid when our windows have focus. + QDateTime lastWindowActive; }; template<class Collection> diff --git a/src/InviteesModel.cpp b/src/InviteesModel.cpp index 7b49c234..76f37fad 100644 --- a/src/InviteesModel.cpp +++ b/src/InviteesModel.cpp @@ -18,7 +18,7 @@ InviteesModel::InviteesModel(TimelineModel *room, QObject *parent) void InviteesModel::addUser(QString mxid, QString displayName, QString avatarUrl) { - for (const auto &invitee : qAsConst(invitees_)) + for (const auto &invitee : std::as_const(invitees_)) if (invitee->mxid_ == mxid) return; @@ -79,7 +79,7 @@ InviteesModel::mxids() { QStringList mxidList; mxidList.reserve(invitees_.size()); - for (auto &invitee : qAsConst(invitees_)) + for (auto &invitee : std::as_const(invitees_)) mxidList.push_back(invitee->mxid_); return mxidList; } diff --git a/src/LoginPage.cpp b/src/LoginPage.cpp index 55487502..afc660a8 100644 --- a/src/LoginPage.cpp +++ b/src/LoginPage.cpp @@ -76,13 +76,13 @@ LoginPage::onMatrixIdEntered() try { user = parse<User>(mxid_.toStdString()); } catch (const std::exception &) { - mxidError_ = tr("You have entered an invalid Matrix ID e.g @joe:matrix.org"); + mxidError_ = tr("You have entered an invalid Matrix ID e.g. @user:yourserver.example.com"); emit mxidErrorChanged(); return; } if (user.hostname().empty() || user.localpart().empty()) { - mxidError_ = tr("You have entered an invalid Matrix ID e.g @joe:matrix.org"); + mxidError_ = tr("You have entered an invalid Matrix ID e.g. @user:yourserver.example.com"); emit mxidErrorChanged(); return; } else { @@ -146,7 +146,7 @@ LoginPage::checkHomeserverVersion() try { User user = parse<User>(mxid_.toStdString()); } catch (const std::exception &) { - mxidError_ = tr("You have entered an invalid Matrix ID e.g @joe:matrix.org"); + mxidError_ = tr("You have entered an invalid Matrix ID e.g. @user:yourserver.example.com"); emit mxidErrorChanged(); return; } @@ -273,7 +273,7 @@ LoginPage::onLoginButtonClicked(LoginMethod loginMethod, try { user = parse<User>(userid.toStdString()); } catch (const std::exception &) { - mxidError_ = tr("You have entered an invalid Matrix ID e.g @joe:matrix.org"); + mxidError_ = tr("You have entered an invalid Matrix ID e.g. @user:yourserver.example.com"); emit mxidErrorChanged(); return; } diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index d06171de..1a0b1e96 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -9,42 +9,23 @@ #include <mtx/requests.hpp> #include <mtx/responses/login.hpp> -#include "AliasEditModel.h" #include "BlurhashProvider.h" -#include "Cache.h" #include "Cache_p.h" #include "ChatPage.h" -#include "Clipboard.h" #include "ColorImageProvider.h" -#include "CombinedImagePackModel.h" -#include "CompletionProxyModel.h" #include "Config.h" -#include "EventAccessors.h" -#include "GridImagePackModel.h" -#include "ImagePackListModel.h" -#include "InviteesModel.h" #include "JdenticonProvider.h" #include "Logging.h" #include "MainWindow.h" #include "MatrixClient.h" -#include "MemberList.h" #include "MxcImageProvider.h" -#include "PowerlevelsEditModels.h" -#include "SingleImagePackModel.h" #include "TrayIcon.h" -#include "UserDirectoryModel.h" #include "UserSettingsPage.h" #include "Utils.h" #include "dock/Dock.h" -#include "emoji/Provider.h" #include "encryption/DeviceVerificationFlow.h" -#include "encryption/SelfVerificationStatus.h" -#include "timeline/DelegateChooser.h" -#include "timeline/TimelineFilter.h" #include "timeline/TimelineViewManager.h" -#include "ui/NhekoGlobalObject.h" -#include "ui/RoomSummary.h" -#include "ui/UIA.h" +#include "ui/Theme.h" #include "voip/CallManager.h" #include "voip/WebRTCSession.h" diff --git a/src/MxcImageProvider.cpp b/src/MxcImageProvider.cpp index 47e0344f..8f930c1a 100644 --- a/src/MxcImageProvider.cpp +++ b/src/MxcImageProvider.cpp @@ -38,7 +38,7 @@ MxcImageProvider::MxcImageProvider() QDir::Filter::Writable | QDir::Filter::NoDotAndDotDot | QDir::Filter::Files); auto files = dir.entryInfoList(); - for (const auto &fileInfo : qAsConst(files)) { + for (const auto &fileInfo : std::as_const(files)) { if (fileInfo.fileTime(QFile::FileTime::FileAccessTime) .daysTo(QDateTime::currentDateTime()) > 30) { if (QFile::remove(fileInfo.absoluteFilePath())) diff --git a/src/PowerlevelsEditModels.cpp b/src/PowerlevelsEditModels.cpp index f0fd9194..01337f11 100644 --- a/src/PowerlevelsEditModels.cpp +++ b/src/PowerlevelsEditModels.cpp @@ -83,7 +83,7 @@ std::map<std::string, mtx::events::state::power_level_t, std::less<>> PowerlevelsTypeListModel::toEvents() const { std::map<std::string, mtx::events::state::power_level_t, std::less<>> m; - for (const auto &[key, pl] : qAsConst(types)) + for (const auto &[key, pl] : std::as_const(types)) if (key.find('.') != std::string::npos) m[key] = pl; return m; @@ -91,7 +91,7 @@ PowerlevelsTypeListModel::toEvents() const mtx::events::state::power_level_t PowerlevelsTypeListModel::kick() const { - for (const auto &[key, pl] : qAsConst(types)) + for (const auto &[key, pl] : std::as_const(types)) if (key == "kick") return pl; return powerLevels_.users_default; @@ -99,7 +99,7 @@ PowerlevelsTypeListModel::kick() const mtx::events::state::power_level_t PowerlevelsTypeListModel::invite() const { - for (const auto &[key, pl] : qAsConst(types)) + for (const auto &[key, pl] : std::as_const(types)) if (key == "invite") return pl; return powerLevels_.users_default; @@ -107,7 +107,7 @@ PowerlevelsTypeListModel::invite() const mtx::events::state::power_level_t PowerlevelsTypeListModel::ban() const { - for (const auto &[key, pl] : qAsConst(types)) + for (const auto &[key, pl] : std::as_const(types)) if (key == "ban") return pl; return powerLevels_.users_default; @@ -115,7 +115,7 @@ PowerlevelsTypeListModel::ban() const mtx::events::state::power_level_t PowerlevelsTypeListModel::eventsDefault() const { - for (const auto &[key, pl] : qAsConst(types)) + for (const auto &[key, pl] : std::as_const(types)) if (key == "zdefault_events") return pl; return powerLevels_.users_default; @@ -123,7 +123,7 @@ PowerlevelsTypeListModel::eventsDefault() const mtx::events::state::power_level_t PowerlevelsTypeListModel::stateDefault() const { - for (const auto &[key, pl] : qAsConst(types)) + for (const auto &[key, pl] : std::as_const(types)) if (key == "zdefault_states") return pl; return powerLevels_.users_default; @@ -399,7 +399,7 @@ std::map<std::string, mtx::events::state::power_level_t, std::less<>> PowerlevelsUserListModel::toUsers() const { std::map<std::string, mtx::events::state::power_level_t, std::less<>> m; - for (const auto &[key, pl] : qAsConst(users)) + for (const auto &[key, pl] : std::as_const(users)) if (key.size() > 0 && key.at(0) == '@') m[key] = pl; return m; @@ -407,7 +407,7 @@ PowerlevelsUserListModel::toUsers() const mtx::events::state::power_level_t PowerlevelsUserListModel::usersDefault() const { - for (const auto &[key, pl] : qAsConst(users)) + for (const auto &[key, pl] : std::as_const(users)) if (key == "default") return pl; return powerLevels_.users_default; @@ -635,7 +635,7 @@ PowerlevelEditingModels::updateSpacesModel() void PowerlevelEditingModels::addRole(int pl) { - for (const auto &e : qAsConst(types_.types)) + for (const auto &e : std::as_const(types_.types)) if (pl == int(e.pl)) return; @@ -752,7 +752,7 @@ PowerlevelsSpacesListModel::commit() { std::vector<std::string> spacesToApplyTo; - for (const auto &s : qAsConst(spaces)) + for (const auto &s : std::as_const(spaces)) if (s.apply) spacesToApplyTo.push_back(s.roomid); diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp index 5caa4838..3bc2f161 100644 --- a/src/UserSettingsPage.cpp +++ b/src/UserSettingsPage.cpp @@ -14,7 +14,6 @@ #include <mtx/secret_storage.hpp> #include "Cache.h" -#include "Config.h" #include "JdenticonProvider.h" #include "MainWindow.h" #include "MatrixClient.h" @@ -152,7 +151,7 @@ UserSettings::load(std::optional<QString> profile) collapsedSpaces_.clear(); auto tempSpaces = settings.value(prefix + "user/collapsed_spaces", QList<QVariant>{}).toList(); - for (const auto &e : qAsConst(tempSpaces)) + for (const auto &e : std::as_const(tempSpaces)) collapsedSpaces_.push_back(e.toStringList()); shareKeysWithTrustedUsers_ = @@ -962,7 +961,7 @@ UserSettings::save() QVariantList v; v.reserve(collapsedSpaces_.size()); - for (const auto &e : qAsConst(collapsedSpaces_)) + for (const auto &e : std::as_const(collapsedSpaces_)) v.push_back(e); settings.setValue(prefix + "user/collapsed_spaces", v); @@ -1041,6 +1040,10 @@ UserSettingsModel::data(const QModelIndex &index, int role) const return tr("Limit width of timeline"); case ReadReceipts: return tr("Read receipts"); + case HiddenTimelineEvents: + return tr("Hidden events"); + case IgnoredUsers: + return tr("Ignored users"); case DesktopNotifications: return tr("Desktop notifications"); case AlertOnNotification: @@ -1119,6 +1122,8 @@ UserSettingsModel::data(const QModelIndex &index, int role) const return tr("SIDEBAR"); case TraySection: return tr("TRAY"); + case MessageVisibilitySection: + return tr("GLOBAL MESSAGE VISIBILITY"); case NotificationsSection: return tr("NOTIFICATIONS"); case VoipSection: @@ -1371,6 +1376,8 @@ UserSettingsModel::data(const QModelIndex &index, int role) const return tr( "Show if your message was read.\nStatus is displayed next to timestamps.\nWarning: " "If your homeserver does not support this, your rooms will never be marked as read!"); + case HiddenTimelineEvents: + return tr("Configure whether to show or hide certain events like room joins."); case DesktopNotifications: return tr("Notify about received messages when the client is not currently focused."); case AlertOnNotification: @@ -1438,6 +1445,7 @@ UserSettingsModel::data(const QModelIndex &index, int role) const case TimelineSection: case SidebarSection: case TraySection: + case MessageVisibilitySection: case NotificationsSection: case VoipSection: case EncryptionSection: @@ -1479,6 +1487,8 @@ UserSettingsModel::data(const QModelIndex &index, int role) const return tr("Regularly redact expired events as specified in the event expiration " "configuration. Since this is currently not executed server side, you need " "to have one client running this regularly."); + case IgnoredUsers: + return tr("Manage your ignored users."); } } else if (role == Type) { switch (index.row()) { @@ -1548,6 +1558,7 @@ UserSettingsModel::data(const QModelIndex &index, int role) const case TimelineSection: case SidebarSection: case TraySection: + case MessageVisibilitySection: case NotificationsSection: case VoipSection: case EncryptionSection: @@ -1562,6 +1573,10 @@ UserSettingsModel::data(const QModelIndex &index, int role) const case UserSigningKey: case MasterKey: return KeyStatus; + case HiddenTimelineEvents: + return ConfigureHiddenEvents; + case IgnoredUsers: + return ManageIgnoredUsers; } } else if (role == ValueLowerBound) { switch (index.row()) { diff --git a/src/UserSettingsPage.h b/src/UserSettingsPage.h index 71eb039b..2cf8e5ab 100644 --- a/src/UserSettingsPage.h +++ b/src/UserSettingsPage.h @@ -474,7 +474,6 @@ class UserSettingsModel : public QAbstractListModel ExposeDBusApi, #endif UpdateSpaceVias, - ExpireEvents, AccessibilitySection, ReducedMotion, @@ -506,6 +505,11 @@ class UserSettingsModel : public QAbstractListModel Tray, StartInTray, + MessageVisibilitySection, + ExpireEvents, + HiddenTimelineEvents, + IgnoredUsers, + NotificationsSection, DesktopNotifications, AlertOnNotification, @@ -562,6 +566,8 @@ public: KeyStatus, SessionKeyImportExport, XSignKeysRequestDownload, + ConfigureHiddenEvents, + ManageIgnoredUsers, }; Q_ENUM(Types); diff --git a/src/Utils.cpp b/src/Utils.cpp index 0ea42a27..ec73c901 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -428,7 +428,7 @@ utils::escapeBlacklistedHtml(const QString &rawStr) "blockquote", "/blockquote", "p", "/p", "a", "/a", "ul", "/ul", "ol", "/ol", "sup", "/sup", "sub", "/sub", "li", "/li", "b", "/b", "i", "/i", "u", "/u", "strong", "/strong", - "em", "/em", "strike", "/strike", "code", "/code", "hr", "/hr", + "em", "/em", "strike", "/strike", "code", "/code", "hr", "hr/", "br", "br/", "div", "/div", "table", "/table", "thead", "/thead", "tbody", "/tbody", "tr", "/tr", "th", "/th", "td", "/td", "caption", "/caption", "pre", "/pre", "span", "/span", "img", "/img", diff --git a/src/encryption/Olm.cpp b/src/encryption/Olm.cpp index 8993f715..7fa176b0 100644 --- a/src/encryption/Olm.cpp +++ b/src/encryption/Olm.cpp @@ -719,7 +719,7 @@ try_olm_decryption(const std::string &sender_key, const mtx::events::msg::OlmCip nhlog::crypto()->debug("Updated olm session: {}", mtx::crypto::session_id(session->get())); cache::saveOlmSession( - id, std::move(session.value()), QDateTime::currentMSecsSinceEpoch()); + sender_key, std::move(session.value()), QDateTime::currentMSecsSinceEpoch()); } catch (const mtx::crypto::olm_exception &e) { nhlog::crypto()->debug("failed to decrypt olm message ({}, {}) with {}: {}", msg.type, diff --git a/src/main.cpp b/src/main.cpp index 3984f4ba..36326b13 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,8 +20,8 @@ #include <QStandardPaths> #include <QTranslator> +#include "Cache.h" #include "ChatPage.h" -#include "Config.h" #include "Logging.h" #include "MainWindow.h" #include "MatrixClient.h" @@ -226,6 +226,10 @@ main(int argc, char *argv[]) "The default is 'file,stderr'. types:{file,stderr,none}"), QObject::tr("type")); parser.addOption(logType); + QCommandLineOption compactDb( + QStringList() << QStringLiteral("C") << QStringLiteral("compact"), + QObject::tr("Recompacts the database which might improve performance.")); + parser.addOption(compactDb); // This option is not actually parsed via Qt due to the need to parse it before the app // name is set. It only exists to keep Qt from complaining about the --profile/-p @@ -240,6 +244,9 @@ main(int argc, char *argv[]) parser.process(app); + if (parser.isSet(compactDb)) + cache::setNeedsCompactFlag(); + // This check needs to happen _after_ process(), so that we actually print help for --help when // Nheko is already running. if (app.isSecondary()) { diff --git a/src/notifications/Manager.cpp b/src/notifications/Manager.cpp index a54256ae..ed5c0670 100644 --- a/src/notifications/Manager.cpp +++ b/src/notifications/Manager.cpp @@ -45,7 +45,7 @@ NotificationsManager::removeNotifications(const QString &roomId_, markerPos = std::max(markerPos, cache::getEventIndex(room_id, e.toStdString()).value_or(0)); } - for (const auto &[roomId, eventId] : qAsConst(this->notificationIds)) { + for (const auto &[roomId, eventId] : std::as_const(this->notificationIds)) { if (roomId != roomId_) continue; auto idx = cache::getEventIndex(room_id, eventId.toStdString()); diff --git a/src/notifications/ManagerLinux.cpp b/src/notifications/ManagerLinux.cpp index fc92c9ae..e838bb85 100644 --- a/src/notifications/ManagerLinux.cpp +++ b/src/notifications/ManagerLinux.cpp @@ -36,14 +36,14 @@ NotificationsManager::NotificationsManager(QObject *parent) this) , hasMarkup_{std::invoke([this]() -> bool { auto caps = dbus.call("GetCapabilities").arguments(); - for (const auto &x : qAsConst(caps)) + for (const auto &x : std::as_const(caps)) if (x.toStringList().contains("body-markup")) return true; return false; })} , hasImages_{std::invoke([this]() -> bool { auto caps = dbus.call("GetCapabilities").arguments(); - for (const auto &x : qAsConst(caps)) + for (const auto &x : std::as_const(caps)) if (x.toStringList().contains("body-images")) return true; return false; diff --git a/src/timeline/CommunitiesModel.cpp b/src/timeline/CommunitiesModel.cpp index 3c09d747..e1018f38 100644 --- a/src/timeline/CommunitiesModel.cpp +++ b/src/timeline/CommunitiesModel.cpp @@ -581,7 +581,7 @@ CommunitiesModel::setCurrentTagId(const QString &tagId) if (tagId.startsWith(QLatin1String("tag:"))) { auto tag = tagId.mid(4); - for (const auto &t : qAsConst(tags_)) { + for (const auto &t : std::as_const(tags_)) { if (t == tag) { this->currentTagId_ = tagId; UserSettings::instance()->setCurrentTagId(tagId); diff --git a/src/timeline/DelegateChooser.cpp b/src/timeline/DelegateChooser.cpp index 91b2194b..b95116ec 100644 --- a/src/timeline/DelegateChooser.cpp +++ b/src/timeline/DelegateChooser.cpp @@ -96,7 +96,7 @@ DelegateChooser::clearChoices(QQmlListProperty<DelegateChoice> *p) void DelegateChooser::recalcChild() { - for (const auto choice : qAsConst(choices_)) { + for (const auto choice : std::as_const(choices_)) { const auto &choiceValue = choice->roleValueRef(); if (choiceValue == roleValue_ || (!choiceValue.isValid() && !roleValue_.isValid())) { if (child_) { @@ -134,7 +134,7 @@ DelegateChooser::DelegateIncubator::statusChanged(QQmlIncubator::Status status) } else if (status == QQmlIncubator::Error) { auto errors_ = errors(); - for (const auto &e : qAsConst(errors_)) + for (const auto &e : std::as_const(errors_)) nhlog::ui()->error("Error instantiating delegate: {}", e.toString().toStdString()); } } diff --git a/src/timeline/EventDelegateChooser.cpp b/src/timeline/EventDelegateChooser.cpp new file mode 100644 index 00000000..99a4cf3a --- /dev/null +++ b/src/timeline/EventDelegateChooser.cpp @@ -0,0 +1,360 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "EventDelegateChooser.h" +#include "TimelineModel.h" + +#include "Logging.h" + +#include <QQmlEngine> +#include <QtGlobal> + +#include <ranges> + +// privat qt headers to access required properties +#include <QtQml/private/qqmlincubator_p.h> +#include <QtQml/private/qqmlobjectcreator_p.h> + +QQmlComponent * +EventDelegateChoice::delegate() const +{ + return delegate_; +} + +void +EventDelegateChoice::setDelegate(QQmlComponent *delegate) +{ + if (delegate != delegate_) { + delegate_ = delegate; + emit delegateChanged(); + emit changed(); + } +} + +QList<int> +EventDelegateChoice::roleValues() const +{ + return roleValues_; +} + +void +EventDelegateChoice::setRoleValues(const QList<int> &value) +{ + if (value != roleValues_) { + roleValues_ = value; + emit roleValuesChanged(); + emit changed(); + } +} + +QQmlListProperty<EventDelegateChoice> +EventDelegateChooser::choices() +{ + return QQmlListProperty<EventDelegateChoice>(this, + this, + &EventDelegateChooser::appendChoice, + &EventDelegateChooser::choiceCount, + &EventDelegateChooser::choice, + &EventDelegateChooser::clearChoices); +} + +void +EventDelegateChooser::appendChoice(QQmlListProperty<EventDelegateChoice> *p, EventDelegateChoice *c) +{ + EventDelegateChooser *dc = static_cast<EventDelegateChooser *>(p->object); + dc->choices_.append(c); +} + +qsizetype +EventDelegateChooser::choiceCount(QQmlListProperty<EventDelegateChoice> *p) +{ + return static_cast<EventDelegateChooser *>(p->object)->choices_.count(); +} +EventDelegateChoice * +EventDelegateChooser::choice(QQmlListProperty<EventDelegateChoice> *p, qsizetype index) +{ + return static_cast<EventDelegateChooser *>(p->object)->choices_.at(index); +} +void +EventDelegateChooser::clearChoices(QQmlListProperty<EventDelegateChoice> *p) +{ + static_cast<EventDelegateChooser *>(p->object)->choices_.clear(); +} + +void +EventDelegateChooser::componentComplete() +{ + QQuickItem::componentComplete(); + eventIncubator.reset(eventId_); + replyIncubator.reset(replyId); + // eventIncubator.forceCompletion(); +} + +void +EventDelegateChooser::DelegateIncubator::setInitialState(QObject *obj) +{ + auto item = qobject_cast<QQuickItem *>(obj); + if (!item) + return; + + item->setParentItem(&chooser); + item->setParent(&chooser); + + auto roleNames = chooser.room_->roleNames(); + QHash<QByteArray, int> nameToRole; + for (const auto &[k, v] : roleNames.asKeyValueRange()) { + nameToRole.insert(v, k); + } + + QHash<int, int> roleToPropIdx; + std::vector<QModelRoleData> roles; + // Workaround for https://bugreports.qt.io/browse/QTBUG-98846 + QHash<QString, RequiredPropertyKey> requiredProperties; + for (const auto &[propKey, prop] : + QQmlIncubatorPrivate::get(this)->requiredProperties()->asKeyValueRange()) { + requiredProperties.insert(prop.propertyName, propKey); + } + + // collect required properties + auto mo = obj->metaObject(); + for (int i = 0; i < mo->propertyCount(); i++) { + auto prop = mo->property(i); + // nhlog::ui()->critical("Found prop {}", prop.name()); + // See https://bugreports.qt.io/browse/QTBUG-98846 + if (!prop.isRequired() && !requiredProperties.contains(prop.name())) + continue; + + if (auto role = nameToRole.find(prop.name()); role != nameToRole.end()) { + roleToPropIdx.insert(*role, i); + roles.emplace_back(*role); + + // nhlog::ui()->critical("Found prop {}, idx {}, role {}", prop.name(), i, *role); + } else { + nhlog::ui()->critical("Required property {} not found in model!", prop.name()); + } + } + + // nhlog::ui()->debug("Querying data for id {}", currentId.toStdString()); + chooser.room_->multiData(currentId, forReply ? chooser.eventId_ : QString(), roles); + + Qt::beginPropertyUpdateGroup(); + auto attached = qobject_cast<EventDelegateChooserAttachedType *>( + qmlAttachedPropertiesObject<EventDelegateChooser>(obj)); + Q_ASSERT(attached != nullptr); + attached->setIsReply(this->forReply); + + for (const auto &role : roles) { + const auto &roleName = roleNames[role.role()]; + // nhlog::ui()->critical("Setting role {}, {} to {}", + // role.role(), + // roleName.toStdString(), + // role.data().toString().toStdString()); + + // nhlog::ui()->critical("Setting {}", mo->property(roleToPropIdx[role.role()]).name()); + mo->property(roleToPropIdx[role.role()]).write(obj, role.data()); + + if (const auto &req = requiredProperties.find(roleName); req != requiredProperties.end()) + QQmlIncubatorPrivate::get(this)->requiredProperties()->remove(*req); + } + + Qt::endPropertyUpdateGroup(); + + // setInitialProperties(rolesToSet); + + auto update = + [this, obj, roleToPropIdx = std::move(roleToPropIdx)](const QList<int> &changedRoles) { + if (changedRoles.empty() || changedRoles.contains(TimelineModel::Roles::Type)) { + int type = chooser.room_ + ->dataById(currentId, + TimelineModel::Roles::Type, + forReply ? chooser.eventId_ : QString()) + .toInt(); + if (type != oldType) { + // nhlog::ui()->debug("Type changed!"); + reset(currentId); + return; + } + } + + std::vector<QModelRoleData> rolesToRequest; + + if (changedRoles.empty()) { + for (const auto role : + std::ranges::subrange(roleToPropIdx.keyBegin(), roleToPropIdx.keyEnd())) + rolesToRequest.emplace_back(role); + } else { + for (auto role : changedRoles) { + if (roleToPropIdx.contains(role)) { + rolesToRequest.emplace_back(role); + } + } + } + + if (rolesToRequest.empty()) + return; + + auto mo = obj->metaObject(); + chooser.room_->multiData( + currentId, forReply ? chooser.eventId_ : QString(), rolesToRequest); + + Qt::beginPropertyUpdateGroup(); + for (const auto &role : rolesToRequest) { + mo->property(roleToPropIdx[role.role()]).write(obj, role.data()); + } + Qt::endPropertyUpdateGroup(); + }; + + if (!forReply) { + auto row = chooser.room_->idToIndex(currentId); + auto connection = connect( + chooser.room_, + &QAbstractItemModel::dataChanged, + obj, + [row, update](const QModelIndex &topLeft, + const QModelIndex &bottomRight, + const QList<int> &changedRoles) { + if (row < topLeft.row() || row > bottomRight.row()) + return; + + update(changedRoles); + }, + Qt::QueuedConnection); + connect(&this->chooser, &EventDelegateChooser::destroyed, obj, [connection]() { + QObject::disconnect(connection); + }); + } +} + +void +EventDelegateChooser::DelegateIncubator::reset(QString id) +{ + if (!chooser.room_ || id.isEmpty()) + return; + + // nhlog::ui()->debug("Reset with id {}, reply {}", id.toStdString(), forReply); + + this->currentId = id; + + auto role = + chooser.room_ + ->dataById(id, TimelineModel::Roles::Type, forReply ? chooser.eventId_ : QString()) + .toInt(); + this->oldType = role; + + for (const auto choice : std::as_const(chooser.choices_)) { + const auto &choiceValue = choice->roleValues(); + if (choiceValue.contains(role) || choiceValue.empty()) { + // nhlog::ui()->debug( + // "Instantiating type: {}, c {}", (int)role, choiceValue.contains(role)); + + if (auto child = qobject_cast<QQuickItem *>(object())) { + child->setParentItem(nullptr); + } + + choice->delegate()->create(*this, QQmlEngine::contextForObject(&chooser)); + return; + } + } +} + +void +EventDelegateChooser::DelegateIncubator::statusChanged(QQmlIncubator::Status status) +{ + if (status == QQmlIncubator::Ready) { + auto child = qobject_cast<QQuickItem *>(object()); + if (child == nullptr) { + nhlog::ui()->error("Delegate has to be derived of Item!"); + return; + } + + child->setParentItem(&chooser); + QQmlEngine::setObjectOwnership(child, QQmlEngine::ObjectOwnership::CppOwnership); + + // connect(child, &QQuickItem::parentChanged, child, [child](QQuickItem *) { + // // QTBUG-115687 + // if (child->flags().testFlag(QQuickItem::ItemObservesViewport)) { + // nhlog::ui()->critical("SETTING OBSERVES VIEWPORT"); + // // Re-trigger the parent traversal to get subtreeTransformChangedEnabled turned + // on child->setFlag(QQuickItem::ItemObservesViewport); + // } + // }); + + if (forReply) + emit chooser.replyChanged(); + else + emit chooser.mainChanged(); + + chooser.polish(); + } else if (status == QQmlIncubator::Error) { + auto errors_ = errors(); + for (const auto &e : std::as_const(errors_)) + nhlog::ui()->error("Error instantiating delegate: {}", e.toString().toStdString()); + } +} + +void +EventDelegateChooser::updatePolish() +{ + auto mainChild = qobject_cast<QQuickItem *>(eventIncubator.object()); + auto replyChild = qobject_cast<QQuickItem *>(replyIncubator.object()); + + // nhlog::ui()->trace("POLISHING {}", (void *)this); + + auto layoutItem = [this](QQuickItem *item, int inset) { + if (item) { + QObject::disconnect(item, &QQuickItem::implicitWidthChanged, this, &QQuickItem::polish); + + auto attached = qobject_cast<EventDelegateChooserAttachedType *>( + qmlAttachedPropertiesObject<EventDelegateChooser>(item)); + Q_ASSERT(attached != nullptr); + + int maxWidth = maxWidth_ - inset; + + // in theory we could also reset the width, but that doesn't seem to work nicely for + // text areas because of how they cache it. + if (attached->maxWidth() > 0) + item->setWidth(attached->maxWidth()); + else + item->setWidth(maxWidth); + item->ensurePolished(); + auto width = item->implicitWidth(); + + if (width < 1 || width > maxWidth) + width = maxWidth; + + if (attached->maxWidth() > 0 && width > attached->maxWidth()) + width = attached->maxWidth(); + + if (attached->keepAspectRatio()) { + auto height = width * attached->aspectRatio(); + if (attached->maxHeight() && height > attached->maxHeight()) { + height = attached->maxHeight(); + width = height / attached->aspectRatio(); + } + + item->setHeight(height); + } + + item->setWidth(width); + item->ensurePolished(); + + QObject::connect(item, &QQuickItem::implicitWidthChanged, this, &QQuickItem::polish); + } + }; + + layoutItem(mainChild, mainInset_); + layoutItem(replyChild, replyInset_); +} + +void +EventDelegateChooserAttachedType::polishChooser() +{ + auto p = parent(); + if (p) { + auto chooser = qobject_cast<EventDelegateChooser *>(p->parent()); + if (chooser) { + chooser->polish(); + } + } +} diff --git a/src/timeline/EventDelegateChooser.h b/src/timeline/EventDelegateChooser.h new file mode 100644 index 00000000..df1953ab --- /dev/null +++ b/src/timeline/EventDelegateChooser.h @@ -0,0 +1,276 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include <QAbstractItemModel> +#include <QQmlComponent> +#include <QQmlIncubator> +#include <QQmlListProperty> +#include <QQuickItem> +#include <QtCore/QObject> +#include <QtCore/QVariant> + +#include "TimelineModel.h" + +class EventDelegateChooserAttachedType : public QObject +{ + Q_OBJECT + Q_PROPERTY(bool keepAspectRatio READ keepAspectRatio WRITE setKeepAspectRatio NOTIFY + keepAspectRatioChanged) + Q_PROPERTY(double aspectRatio READ aspectRatio WRITE setAspectRatio NOTIFY aspectRatioChanged) + Q_PROPERTY(int maxWidth READ maxWidth WRITE setMaxWidth NOTIFY maxWidthChanged) + Q_PROPERTY(int maxHeight READ maxHeight WRITE setMaxHeight NOTIFY maxHeightChanged) + Q_PROPERTY(bool isReply READ isReply WRITE setIsReply NOTIFY isReplyChanged) + + QML_ANONYMOUS +public: + EventDelegateChooserAttachedType(QObject *parent) + : QObject(parent) + { + } + + bool keepAspectRatio() const { return keepAspectRatio_; } + void setKeepAspectRatio(bool fill) + { + if (fill != keepAspectRatio_) { + keepAspectRatio_ = fill; + emit keepAspectRatioChanged(); + polishChooser(); + } + } + + double aspectRatio() const { return aspectRatio_; } + void setAspectRatio(double fill) + { + aspectRatio_ = fill; + emit aspectRatioChanged(); + polishChooser(); + } + + int maxWidth() const { return maxWidth_; } + void setMaxWidth(int fill) + { + maxWidth_ = fill; + emit maxWidthChanged(); + polishChooser(); + } + + int maxHeight() const { return maxHeight_; } + void setMaxHeight(int fill) + { + maxHeight_ = fill; + emit maxHeightChanged(); + } + + bool isReply() const { return isReply_; } + void setIsReply(bool fill) + { + if (fill != isReply_) { + isReply_ = fill; + emit isReplyChanged(); + polishChooser(); + } + } + +signals: + void keepAspectRatioChanged(); + void aspectRatioChanged(); + void maxWidthChanged(); + void maxHeightChanged(); + void isReplyChanged(); + +private: + void polishChooser(); + + double aspectRatio_ = 1.; + int maxWidth_ = -1; + int maxHeight_ = -1; + bool keepAspectRatio_ = false; + bool isReply_ = false; +}; + +class EventDelegateChoice : public QObject +{ + Q_OBJECT + QML_ELEMENT + Q_CLASSINFO("DefaultProperty", "delegate") + +public: + Q_PROPERTY(QList<int> roleValues READ roleValues WRITE setRoleValues NOTIFY roleValuesChanged + REQUIRED FINAL) + Q_PROPERTY( + QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged REQUIRED FINAL) + + [[nodiscard]] QQmlComponent *delegate() const; + void setDelegate(QQmlComponent *delegate); + + [[nodiscard]] QList<int> roleValues() const; + void setRoleValues(const QList<int> &value); + +signals: + void delegateChanged(); + void roleValuesChanged(); + void changed(); + +private: + QList<int> roleValues_; + QQmlComponent *delegate_ = nullptr; +}; + +class EventDelegateChooser : public QQuickItem +{ + Q_OBJECT + QML_ELEMENT + Q_CLASSINFO("DefaultProperty", "choices") + + QML_ATTACHED(EventDelegateChooserAttachedType) + + Q_PROPERTY(QQmlListProperty<EventDelegateChoice> choices READ choices CONSTANT FINAL) + Q_PROPERTY(QQuickItem *main READ main NOTIFY mainChanged FINAL) + Q_PROPERTY(QQuickItem *reply READ reply NOTIFY replyChanged FINAL) + Q_PROPERTY(QString eventId READ eventId WRITE setEventId NOTIFY eventIdChanged REQUIRED FINAL) + Q_PROPERTY(QString replyTo READ replyTo WRITE setReplyTo NOTIFY replyToChanged REQUIRED FINAL) + Q_PROPERTY(TimelineModel *room READ room WRITE setRoom NOTIFY roomChanged REQUIRED FINAL) + Q_PROPERTY(bool sameWidth READ sameWidth WRITE setSameWidth NOTIFY sameWidthChanged) + Q_PROPERTY(int maxWidth READ maxWidth WRITE setMaxWidth NOTIFY maxWidthChanged) + Q_PROPERTY(int replyInset READ replyInset WRITE setReplyInset NOTIFY replyInsetChanged) + Q_PROPERTY(int mainInset READ mainInset WRITE setMainInset NOTIFY mainInsetChanged) + +public: + QQmlListProperty<EventDelegateChoice> choices(); + + [[nodiscard]] QQuickItem *main() const + { + return qobject_cast<QQuickItem *>(eventIncubator.object()); + } + [[nodiscard]] QQuickItem *reply() const + { + return qobject_cast<QQuickItem *>(replyIncubator.object()); + } + + bool sameWidth() const { return sameWidth_; } + void setSameWidth(bool width) + { + sameWidth_ = width; + emit sameWidthChanged(); + } + int maxWidth() const { return maxWidth_; } + void setMaxWidth(int width) + { + maxWidth_ = width; + emit maxWidthChanged(); + polish(); + } + + int replyInset() const { return replyInset_; } + void setReplyInset(int width) + { + replyInset_ = width; + emit replyInsetChanged(); + polish(); + } + + int mainInset() const { return mainInset_; } + void setMainInset(int width) + { + mainInset_ = width; + emit mainInsetChanged(); + polish(); + } + + void setRoom(TimelineModel *m) + { + if (m != room_) { + room_ = m; + emit roomChanged(); + + if (isComponentComplete()) { + eventIncubator.reset(eventId_); + replyIncubator.reset(replyId); + } + } + } + [[nodiscard]] TimelineModel *room() { return room_; } + + void setEventId(QString idx) + { + eventId_ = idx; + emit eventIdChanged(); + + if (isComponentComplete()) + eventIncubator.reset(eventId_); + } + [[nodiscard]] QString eventId() const { return eventId_; } + void setReplyTo(QString id) + { + replyId = id; + emit replyToChanged(); + + if (isComponentComplete()) + replyIncubator.reset(replyId); + } + [[nodiscard]] QString replyTo() const { return replyId; } + + void componentComplete() override; + + static EventDelegateChooserAttachedType *qmlAttachedProperties(QObject *object) + { + return new EventDelegateChooserAttachedType(object); + } + + void updatePolish() override; + +signals: + void mainChanged(); + void replyChanged(); + void roomChanged(); + void eventIdChanged(); + void replyToChanged(); + void sameWidthChanged(); + void maxWidthChanged(); + void replyInsetChanged(); + void mainInsetChanged(); + +private: + struct DelegateIncubator final : public QQmlIncubator + { + DelegateIncubator(EventDelegateChooser &parent, bool forReply) + : QQmlIncubator(QQmlIncubator::AsynchronousIfNested) + , chooser(parent) + , forReply(forReply) + { + } + void setInitialState(QObject *object) override; + void statusChanged(QQmlIncubator::Status status) override; + + void reset(QString id); + + EventDelegateChooser &chooser; + bool forReply; + QString currentId; + + QString instantiatedId; + int instantiatedRole = -1; + QAbstractItemModel *instantiatedModel = nullptr; + int oldType = -1; + }; + + QVariant roleValue_; + QList<EventDelegateChoice *> choices_; + DelegateIncubator eventIncubator{*this, false}; + DelegateIncubator replyIncubator{*this, true}; + TimelineModel *room_{nullptr}; + QString eventId_; + QString replyId; + bool sameWidth_ = false; + int maxWidth_ = 400; + int replyInset_ = 0; + int mainInset_ = 0; + + static void appendChoice(QQmlListProperty<EventDelegateChoice> *, EventDelegateChoice *); + static qsizetype choiceCount(QQmlListProperty<EventDelegateChoice> *); + static EventDelegateChoice *choice(QQmlListProperty<EventDelegateChoice> *, qsizetype index); + static void clearChoices(QQmlListProperty<EventDelegateChoice> *); +}; diff --git a/src/timeline/EventStore.cpp b/src/timeline/EventStore.cpp index 63b67474..3db70f77 100644 --- a/src/timeline/EventStore.cpp +++ b/src/timeline/EventStore.cpp @@ -800,7 +800,7 @@ EventStore::enableKeyRequests(bool suppressKeyRequests_) { if (!suppressKeyRequests_) { auto keys = decryptedEvents_.keys(); - for (const auto &key : qAsConst(keys)) + for (const auto &key : std::as_const(keys)) if (key.room == this->room_id_) decryptedEvents_.remove(key); suppressKeyRequests = false; @@ -843,8 +843,8 @@ EventStore::get(const std::string &id, nhlog::net()->error( "Failed to retrieve event with id {}, which was " "requested to show the replyTo for event {}", - relatedTo, - id); + id, + relatedTo); return; } emit eventFetched(id, relatedTo, timeline); diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp index a371e2b4..fcec8e9c 100644 --- a/src/timeline/InputBar.cpp +++ b/src/timeline/InputBar.cpp @@ -491,7 +491,7 @@ InputBar::message(const QString &msg, MarkdownOverride useMarkdown, bool rainbow QString body; bool firstLine = true; auto lines = QStringView(related.quoted_body).split(u'\n'); - for (auto line : qAsConst(lines)) { + for (auto line : std::as_const(lines)) { if (firstLine) { firstLine = false; body = QStringLiteral("> <%1> %2\n").arg(related.quoted_user, line); diff --git a/src/timeline/RoomlistModel.cpp b/src/timeline/RoomlistModel.cpp index 8d8d2977..5ea6f8c8 100644 --- a/src/timeline/RoomlistModel.cpp +++ b/src/timeline/RoomlistModel.cpp @@ -340,7 +340,7 @@ RoomlistModel::addRoom(const QString &room_id, bool suppressInsertNotification) int total_unread_msgs = 0; - for (const auto &room : qAsConst(models)) { + for (const auto &room : std::as_const(models)) { if (!room.isNull() && !room->isSpace()) total_unread_msgs += room->notificationCount(); } @@ -541,7 +541,7 @@ RoomlistModel::sync(const mtx::responses::Sync &sync_) if (auto t = std::get_if<mtx::events::EphemeralEvent<mtx::events::ephemeral::Typing>>( &ev)) { - std::vector<QString> typing; + QStringList typing; typing.reserve(t->content.user_ids.size()); for (const auto &user : t->content.user_ids) { if (user != http::client()->user_id().to_string()) @@ -948,7 +948,7 @@ FilteredRoomlistModel::updateHiddenTagsAndSpaces() hideDMs = false; auto hidden = UserSettings::instance()->hiddenTags(); - for (const auto &t : qAsConst(hidden)) { + for (const auto &t : std::as_const(hidden)) { if (t.startsWith(u"tag:")) hiddenTags.push_back(t.mid(4)); else if (t.startsWith(u"space:")) diff --git a/src/timeline/TimelineFilter.cpp b/src/timeline/TimelineFilter.cpp index 6f2f9e7a..c2d9e31b 100644 --- a/src/timeline/TimelineFilter.cpp +++ b/src/timeline/TimelineFilter.cpp @@ -163,14 +163,20 @@ TimelineFilter::setSource(TimelineModel *s) this->setSourceModel(s); - connect(s, &TimelineModel::currentIndexChanged, this, &TimelineFilter::currentIndexChanged); - connect( - s, &TimelineModel::fetchedMore, this, &TimelineFilter::fetchAgain, Qt::QueuedConnection); - connect(s, - &TimelineModel::dataChanged, - this, - &TimelineFilter::sourceDataChanged, - Qt::QueuedConnection); + if (s) { + connect( + s, &TimelineModel::currentIndexChanged, this, &TimelineFilter::currentIndexChanged); + connect(s, + &TimelineModel::fetchedMore, + this, + &TimelineFilter::fetchAgain, + Qt::QueuedConnection); + connect(s, + &TimelineModel::dataChanged, + this, + &TimelineFilter::sourceDataChanged, + Qt::QueuedConnection); + } // reset the search index a second time just to be safe. incrementalSearchIndex = 0; diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp index b2a036c5..aefdc860 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp @@ -532,6 +532,7 @@ TimelineModel::roleNames() const {IsOnlyEmoji, "isOnlyEmoji"}, {Body, "body"}, {FormattedBody, "formattedBody"}, + {FormattedStateEvent, "formattedStateEvent"}, {IsSender, "isSender"}, {UserId, "userId"}, {UserName, "userName"}, @@ -560,6 +561,7 @@ TimelineModel::roleNames() const {ReplyTo, "replyTo"}, {ThreadId, "threadId"}, {Reactions, "reactions"}, + {Room, "room"}, {RoomId, "roomId"}, {RoomName, "roomName"}, {RoomTopic, "roomTopic"}, @@ -599,12 +601,8 @@ TimelineModel::data(const mtx::events::collections::TimelineEvents &event, int r case UserName: return QVariant(displayName(QString::fromStdString(acc::sender(event)))); case UserPowerlevel: { - return static_cast<qlonglong>(mtx::events::state::PowerLevels{ - cache::client() - ->getStateEvent<mtx::events::state::PowerLevels>(room_id_.toStdString()) - .value_or(mtx::events::StateEvent<mtx::events::state::PowerLevels>{}) - .content} - .user_level(acc::sender(event))); + return static_cast<qlonglong>( + permissions_.powerlevelEvent().user_level(acc::sender(event))); } case Day: { @@ -692,8 +690,90 @@ TimelineModel::data(const mtx::events::collections::TimelineEvents &event, int r formattedBody_.replace(curImg, imgReplacement); } + if (auto effectMessage = + std::get_if<mtx::events::RoomEvent<mtx::events::msg::ElementEffect>>(&event)) { + if (effectMessage->content.msgtype == std::string_view("nic.custom.confetti")) { + formattedBody_.append(QUtf8StringView(u8"🎊")); + } else if (effectMessage->content.msgtype == + std::string_view("io.element.effect.rainfall")) { + formattedBody_.append(QUtf8StringView(u8"🌧️")); + } + } + return QVariant(utils::replaceEmoji(utils::linkifyMessage(formattedBody_))); } + case FormattedStateEvent: { + if (mtx::accessors::is_state_event(event)) { + return std::visit( + [this](const auto &e) { + constexpr auto t = mtx::events::state_content_to_type<decltype(e.content)>; + if constexpr (t == mtx::events::EventType::RoomServerAcl) + return tr("%1 changed which servers are allowed in this room.") + .arg(displayName(QString::fromStdString(e.sender))); + else if constexpr (t == mtx::events::EventType::RoomName) { + if (e.content.name.empty()) + return tr("%1 removed the room name.") + .arg(displayName(QString::fromStdString(e.sender))); + else + return tr("%1 changed the room name to: %2") + .arg(displayName(QString::fromStdString(e.sender))) + .arg(QString::fromStdString(e.content.name).toHtmlEscaped()); + } else if constexpr (t == mtx::events::EventType::RoomTopic) { + if (e.content.topic.empty()) + return tr("%1 removed the topic.") + .arg(displayName(QString::fromStdString(e.sender))); + else + return tr("%1 changed the topic to: %2") + .arg(displayName(QString::fromStdString(e.sender))) + .arg(QString::fromStdString(e.content.topic).toHtmlEscaped()); + } else if constexpr (t == mtx::events::EventType::RoomAvatar) { + if (e.content.url.starts_with("mxc://")) + return tr("%1 changed the room avatar to: %2") + .arg(displayName(QString::fromStdString(e.sender))) + .arg(QStringLiteral("<img height=\"32\" src=\"%1\">") + .arg(QUrl::toPercentEncoding( + QString::fromStdString(e.content.url)))); + else + return tr("%1 removed the room avatar.") + .arg(displayName(QString::fromStdString(e.sender))); + } else if constexpr (t == mtx::events::EventType::RoomPinnedEvents) + return tr("%1 changed the pinned messages.") + .arg(displayName(QString::fromStdString(e.sender))); + else if constexpr (t == mtx::events::EventType::ImagePackInRoom) + formatImagePackEvent(e); + else if constexpr (t == mtx::events::EventType::RoomCanonicalAlias) + return tr("%1 changed the addresses for this room.") + .arg(displayName(QString::fromStdString(e.sender))); + else if constexpr (t == mtx::events::EventType::SpaceParent) + return tr("%1 changed the parent communities for this room.") + .arg(displayName(QString::fromStdString(e.sender))); + else if constexpr (t == mtx::events::EventType::RoomCreate) + return tr("%1 created and configured room: %2") + .arg(displayName(QString::fromStdString(e.sender))) + .arg(room_id_); + else if constexpr (t == mtx::events::EventType::RoomPowerLevels) + return formatPowerLevelEvent(e); + else if constexpr (t == mtx::events::EventType::PolicyRuleRoom) + return formatPolicyRule(QString::fromStdString(e.event_id)); + else if constexpr (t == mtx::events::EventType::PolicyRuleUser) + return formatPolicyRule(QString::fromStdString(e.event_id)); + else if constexpr (t == mtx::events::EventType::PolicyRuleServer) + return formatPolicyRule(QString::fromStdString(e.event_id)); + else if constexpr (t == mtx::events::EventType::RoomHistoryVisibility) + return formatHistoryVisibilityEvent(e); + else if constexpr (t == mtx::events::EventType::RoomGuestAccess) + return formatGuestAccessEvent(e); + else if constexpr (t == mtx::events::EventType::RoomMember) + return formatMemberEvent(e); + + return tr("%1 changed unknown state event %2.") + .arg(displayName(QString::fromStdString(e.sender))) + .arg(QString::fromStdString(to_string(e.type))); + }, + event); + } + return QString(); + } case Url: return QVariant(QString::fromStdString(url(event))); case ThumbnailUrl: @@ -828,6 +908,8 @@ TimelineModel::data(const mtx::events::collections::TimelineEvents &event, int r auto id = relations(event).replaces().value_or(event_id(event)); return QVariant::fromValue(events.reactions(id)); } + case Room: + return QVariant::fromValue(this); case RoomId: return QVariant(room_id_); case RoomName: @@ -907,8 +989,11 @@ TimelineModel::data(const QModelIndex &index, int role) const void TimelineModel::multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const { - if (index.row() < 0 && index.row() >= rowCount()) + if (index.row() < 0 && index.row() >= rowCount()) { + for (QModelRoleData &roleData : roleDataSpan) + roleData.clearData(); return; + } // HACK(Nico): fetchMore likes to break with dynamically sized delegates and reuseItems if (index.row() + 1 == rowCount() && !m_paginationInProgress) @@ -916,8 +1001,35 @@ TimelineModel::multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSp auto event = events.get(rowCount() - index.row() - 1); - if (!event) + if (!event) { + for (QModelRoleData &roleData : roleDataSpan) + roleData.clearData(); return; + } + + for (QModelRoleData &roleData : roleDataSpan) { + roleData.setData(data(*event, roleData.role())); + } +} + +void +TimelineModel::multiData(const QString &id, + const QString &relatedTo, + QModelRoleDataSpan roleDataSpan) const +{ + if (id.isEmpty()) { + for (QModelRoleData &roleData : roleDataSpan) + roleData.clearData(); + return; + } + + auto event = events.get(id.toStdString(), relatedTo.toStdString()); + + if (!event) { + for (QModelRoleData &roleData : roleDataSpan) + roleData.clearData(); + return; + } for (QModelRoleData &roleData : roleDataSpan) { int role = roleData.role(); @@ -1495,6 +1607,14 @@ TimelineModel::redactAllFromUser(const QString &userid, const QString &reason) std::this_thread::sleep_for(std::chrono::milliseconds(50)); } } + +void +TimelineModel::reportEvent(const QString &eventId, const QString &reason, const int score) +{ + http::client()->report_event( + room_id_.toStdString(), eventId.toStdString(), reason.toStdString(), score); +} + void TimelineModel::redactEvent(const QString &id, const QString &reason) { @@ -2196,7 +2316,7 @@ TimelineModel::markSpecialEffectsDone() } QString -TimelineModel::formatTypingUsers(const std::vector<QString> &users, const QColor &bg) +TimelineModel::formatTypingUsers(const QStringList &users, const QColor &bg) { QString temp = tr("%1 and %2 are typing.", @@ -2243,7 +2363,7 @@ TimelineModel::formatTypingUsers(const std::vector<QString> &users, const QColor }; uidWithoutLast.reserve(static_cast<int>(users.size())); - for (size_t i = 0; i + 1 < users.size(); i++) { + for (qsizetype i = 0; i + 1 < users.size(); i++) { uidWithoutLast.append(formatUser(users[i])); } @@ -2288,20 +2408,13 @@ TimelineModel::formatJoinRuleEvent(const QString &id) } QString -TimelineModel::formatGuestAccessEvent(const QString &id) +TimelineModel::formatGuestAccessEvent( + const mtx::events::StateEvent<mtx::events::state::GuestAccess> &event) const { - auto e = events.get(id.toStdString(), ""); - if (!e) - return {}; - - auto event = std::get_if<mtx::events::StateEvent<mtx::events::state::GuestAccess>>(e); - if (!event) - return {}; - - QString user = QString::fromStdString(event->sender); + QString user = QString::fromStdString(event.sender); QString name = utils::replaceEmoji(displayName(user)); - switch (event->content.guest_access) { + switch (event.content.guest_access) { case mtx::events::state::AccessState::CanJoin: return tr("%1 made the room open to guests.").arg(name); case mtx::events::state::AccessState::Forbidden: @@ -2312,21 +2425,13 @@ TimelineModel::formatGuestAccessEvent(const QString &id) } QString -TimelineModel::formatHistoryVisibilityEvent(const QString &id) +TimelineModel::formatHistoryVisibilityEvent( + const mtx::events::StateEvent<mtx::events::state::HistoryVisibility> &event) const { - auto e = events.get(id.toStdString(), ""); - if (!e) - return {}; - - auto event = std::get_if<mtx::events::StateEvent<mtx::events::state::HistoryVisibility>>(e); - - if (!event) - return {}; - - QString user = QString::fromStdString(event->sender); + QString user = QString::fromStdString(event.sender); QString name = utils::replaceEmoji(displayName(user)); - switch (event->content.history_visibility) { + switch (event.content.history_visibility) { case mtx::events::state::Visibility::WorldReadable: return tr("%1 made the room history world readable. Events may be now read by " "non-joined people.") @@ -2344,32 +2449,25 @@ TimelineModel::formatHistoryVisibilityEvent(const QString &id) } QString -TimelineModel::formatPowerLevelEvent(const QString &id) +TimelineModel::formatPowerLevelEvent( + const mtx::events::StateEvent<mtx::events::state::PowerLevels> &event) const { - auto e = events.get(id.toStdString(), ""); - if (!e) - return {}; - - auto event = std::get_if<mtx::events::StateEvent<mtx::events::state::PowerLevels>>(e); - if (!event) - return QString(); - mtx::events::StateEvent<mtx::events::state::PowerLevels> const *prevEvent = nullptr; - if (!event->unsigned_data.replaces_state.empty()) { - auto tempPrevEvent = events.get(event->unsigned_data.replaces_state, event->event_id); + if (!event.unsigned_data.replaces_state.empty()) { + auto tempPrevEvent = events.get(event.unsigned_data.replaces_state, event.event_id); if (tempPrevEvent) { prevEvent = std::get_if<mtx::events::StateEvent<mtx::events::state::PowerLevels>>(tempPrevEvent); } } - QString user = QString::fromStdString(event->sender); + QString user = QString::fromStdString(event.sender); QString sender_name = utils::replaceEmoji(displayName(user)); // Get the rooms levels for redactions and powerlevel changes to determine "Administrator" and // "Moderator" powerlevels. - auto administrator_power_level = event->content.state_level("m.room.power_levels"); - auto moderator_power_level = event->content.redact; - auto default_powerlevel = event->content.users_default; + auto administrator_power_level = event.content.state_level("m.room.power_levels"); + auto moderator_power_level = event.content.redact; + auto default_powerlevel = event.content.users_default; if (!prevEvent) return tr("%1 has changed the room's permissions.").arg(sender_name); @@ -2379,7 +2477,7 @@ TimelineModel::formatPowerLevelEvent(const QString &id) auto numberOfAffected = 0; // We do only compare to people with explicit PL. Usually others are not going to be // affected either way and this is cheaper to iterate over. - for (auto const &[mxid, currentPowerlevel] : event->content.users) { + for (auto const &[mxid, currentPowerlevel] : event.content.users) { if (currentPowerlevel == newPowerlevelSetting && prevEvent->content.user_level(mxid) < newPowerlevelSetting) { numberOfAffected++; @@ -2393,16 +2491,16 @@ TimelineModel::formatPowerLevelEvent(const QString &id) QStringList resultingMessage{}; // These affect only a few people. Therefor we can print who is affected. - if (event->content.kick != prevEvent->content.kick) { + if (event.content.kick != prevEvent->content.kick) { auto default_message = tr("%1 has changed the room's kick powerlevel from %2 to %3.") .arg(sender_name) .arg(prevEvent->content.kick) - .arg(event->content.kick); + .arg(event.content.kick); // We only calculate affected users if we change to a level above the default users PL // to not accidentally have a DoS vector - if (event->content.kick > default_powerlevel) { - auto [affected, number_of_affected] = calc_affected(event->content.kick); + if (event.content.kick > default_powerlevel) { + auto [affected, number_of_affected] = calc_affected(event.content.kick); if (number_of_affected != 0) { auto true_affected_rest = number_of_affected - affected.size(); @@ -2424,16 +2522,16 @@ TimelineModel::formatPowerLevelEvent(const QString &id) } } - if (event->content.redact != prevEvent->content.redact) { + if (event.content.redact != prevEvent->content.redact) { auto default_message = tr("%1 has changed the room's redact powerlevel from %2 to %3.") .arg(sender_name) .arg(prevEvent->content.redact) - .arg(event->content.redact); + .arg(event.content.redact); // We only calculate affected users if we change to a level above the default users PL // to not accidentally have a DoS vector - if (event->content.redact > default_powerlevel) { - auto [affected, number_of_affected] = calc_affected(event->content.redact); + if (event.content.redact > default_powerlevel) { + auto [affected, number_of_affected] = calc_affected(event.content.redact); if (number_of_affected != 0) { auto true_affected_rest = number_of_affected - affected.size(); @@ -2456,16 +2554,16 @@ TimelineModel::formatPowerLevelEvent(const QString &id) } } - if (event->content.ban != prevEvent->content.ban) { + if (event.content.ban != prevEvent->content.ban) { auto default_message = tr("%1 has changed the room's ban powerlevel from %2 to %3.") .arg(sender_name) .arg(prevEvent->content.ban) - .arg(event->content.ban); + .arg(event.content.ban); // We only calculate affected users if we change to a level above the default users PL // to not accidentally have a DoS vector - if (event->content.ban > default_powerlevel) { - auto [affected, number_of_affected] = calc_affected(event->content.ban); + if (event.content.ban > default_powerlevel) { + auto [affected, number_of_affected] = calc_affected(event.content.ban); if (number_of_affected != 0) { auto true_affected_rest = number_of_affected - affected.size(); @@ -2487,17 +2585,17 @@ TimelineModel::formatPowerLevelEvent(const QString &id) } } - if (event->content.state_default != prevEvent->content.state_default) { + if (event.content.state_default != prevEvent->content.state_default) { auto default_message = tr("%1 has changed the room's state_default powerlevel from %2 to %3.") .arg(sender_name) .arg(prevEvent->content.state_default) - .arg(event->content.state_default); + .arg(event.content.state_default); // We only calculate affected users if we change to a level above the default users PL // to not accidentally have a DoS vector - if (event->content.state_default > default_powerlevel) { - auto [affected, number_of_affected] = calc_affected(event->content.kick); + if (event.content.state_default > default_powerlevel) { + auto [affected, number_of_affected] = calc_affected(event.content.kick); if (number_of_affected != 0) { auto true_affected_rest = number_of_affected - affected.size(); @@ -2521,42 +2619,42 @@ TimelineModel::formatPowerLevelEvent(const QString &id) // These affect potentially the whole room. We there for do not calculate who gets affected // by this to prevent huge lists of people. - if (event->content.invite != prevEvent->content.invite) { + if (event.content.invite != prevEvent->content.invite) { resultingMessage.append(tr("%1 has changed the room's invite powerlevel from %2 to %3.") .arg(sender_name, QString::number(prevEvent->content.invite), - QString::number(event->content.invite))); + QString::number(event.content.invite))); } - if (event->content.events_default != prevEvent->content.events_default) { - if ((event->content.events_default > default_powerlevel) && + if (event.content.events_default != prevEvent->content.events_default) { + if ((event.content.events_default > default_powerlevel) && prevEvent->content.events_default <= default_powerlevel) { resultingMessage.append( tr("%1 has changed the room's events_default powerlevel from %2 to %3. New " "users can now not send any events.") .arg(sender_name, QString::number(prevEvent->content.events_default), - QString::number(event->content.events_default))); - } else if ((event->content.events_default < prevEvent->content.events_default) && - (event->content.events_default < default_powerlevel) && + QString::number(event.content.events_default))); + } else if ((event.content.events_default < prevEvent->content.events_default) && + (event.content.events_default < default_powerlevel) && (prevEvent->content.events_default > default_powerlevel)) { resultingMessage.append( tr("%1 has changed the room's events_default powerlevel from %2 to %3. New " "users can now send events that are not otherwise restricted.") .arg(sender_name, QString::number(prevEvent->content.events_default), - QString::number(event->content.events_default))); + QString::number(event.content.events_default))); } else { resultingMessage.append( tr("%1 has changed the room's events_default powerlevel from %2 to %3.") .arg(sender_name, QString::number(prevEvent->content.events_default), - QString::number(event->content.events_default))); + QString::number(event.content.events_default))); } } // Compare if a Powerlevel of a user changed - for (auto const &[mxid, powerlevel] : event->content.users) { + for (auto const &[mxid, powerlevel] : event.content.users) { auto nameOfChangedUser = utils::replaceEmoji(displayName(QString::fromStdString(mxid))); if (prevEvent->content.user_level(mxid) != powerlevel) { if (powerlevel >= administrator_power_level) { @@ -2581,7 +2679,7 @@ TimelineModel::formatPowerLevelEvent(const QString &id) } // Handle added/removed/changed event type - for (auto const &[event_type, powerlevel] : event->content.events) { + for (auto const &[event_type, powerlevel] : event.content.events) { auto prev_not_present = prevEvent->content.events.find(event_type) == prevEvent->content.events.end(); @@ -2620,26 +2718,19 @@ TimelineModel::formatPowerLevelEvent(const QString &id) } QString -TimelineModel::formatImagePackEvent(const QString &id) +TimelineModel::formatImagePackEvent( + const mtx::events::StateEvent<mtx::events::msc2545::ImagePack> &event) const { - auto e = events.get(id.toStdString(), ""); - if (!e) - return {}; - - auto event = std::get_if<mtx::events::StateEvent<mtx::events::msc2545::ImagePack>>(e); - if (!event) - return {}; - mtx::events::StateEvent<mtx::events::msc2545::ImagePack> const *prevEvent = nullptr; - if (!event->unsigned_data.replaces_state.empty()) { - auto tempPrevEvent = events.get(event->unsigned_data.replaces_state, event->event_id); + if (!event.unsigned_data.replaces_state.empty()) { + auto tempPrevEvent = events.get(event.unsigned_data.replaces_state, event.event_id); if (tempPrevEvent) { prevEvent = std::get_if<mtx::events::StateEvent<mtx::events::msc2545::ImagePack>>(tempPrevEvent); } } - const auto &newImages = event->content.images; + const auto &newImages = event.content.images; const auto oldImages = prevEvent ? prevEvent->content.images : decltype(newImages){}; auto ascent = QFontMetrics(UserSettings::instance()->font()).ascent(); @@ -2662,12 +2753,12 @@ TimelineModel::formatImagePackEvent(const QString &id) auto added = calcChange(newImages, oldImages); auto removed = calcChange(oldImages, newImages); - auto sender = utils::replaceEmoji(displayName(QString::fromStdString(event->sender))); + auto sender = utils::replaceEmoji(displayName(QString::fromStdString(event.sender))); const auto packId = [&event]() -> QString { - if (event->content.pack && !event->content.pack->display_name.empty()) { - return event->content.pack->display_name.c_str(); - } else if (!event->state_key.empty()) { - return event->state_key.c_str(); + if (event.content.pack && !event.content.pack->display_name.empty()) { + return event.content.pack->display_name.c_str(); + } else if (!event.state_key.empty()) { + return event.state_key.c_str(); } return tr("(empty)"); }(); @@ -2692,7 +2783,7 @@ TimelineModel::formatImagePackEvent(const QString &id) } QString -TimelineModel::formatPolicyRule(const QString &id) +TimelineModel::formatPolicyRule(const QString &id) const { auto idStr = id.toStdString(); auto e = events.get(idStr, ""); @@ -2893,34 +2984,27 @@ TimelineModel::joinReplacementRoom(const QString &id) } QString -TimelineModel::formatMemberEvent(const QString &id) +TimelineModel::formatMemberEvent( + const mtx::events::StateEvent<mtx::events::state::Member> &event) const { - auto e = events.get(id.toStdString(), ""); - if (!e) - return {}; - - auto event = std::get_if<mtx::events::StateEvent<mtx::events::state::Member>>(e); - if (!event) - return {}; - mtx::events::StateEvent<mtx::events::state::Member> const *prevEvent = nullptr; - if (!event->unsigned_data.replaces_state.empty()) { - auto tempPrevEvent = events.get(event->unsigned_data.replaces_state, event->event_id); + if (!event.unsigned_data.replaces_state.empty()) { + auto tempPrevEvent = events.get(event.unsigned_data.replaces_state, event.event_id); if (tempPrevEvent) { prevEvent = std::get_if<mtx::events::StateEvent<mtx::events::state::Member>>(tempPrevEvent); } } - QString user = QString::fromStdString(event->state_key); + QString user = QString::fromStdString(event.state_key); QString name = utils::replaceEmoji(displayName(user)); QString rendered; - QString sender = QString::fromStdString(event->sender); + QString sender = QString::fromStdString(event.sender); QString senderName = utils::replaceEmoji(displayName(sender)); // see table https://matrix.org/docs/spec/client_server/latest#m-room-member using namespace mtx::events::state; - switch (event->content.membership) { + switch (event.content.membership) { case Membership::Invite: rendered = tr("%1 invited %2.").arg(senderName, name); break; @@ -2929,9 +3013,8 @@ TimelineModel::formatMemberEvent(const QString &id) QString oldName = utils::replaceEmoji( QString::fromStdString(prevEvent->content.display_name).toHtmlEscaped()); - bool displayNameChanged = - prevEvent->content.display_name != event->content.display_name; - bool avatarChanged = prevEvent->content.avatar_url != event->content.avatar_url; + bool displayNameChanged = prevEvent->content.display_name != event.content.display_name; + bool avatarChanged = prevEvent->content.avatar_url != event.content.avatar_url; if (displayNameChanged && avatarChanged) rendered = tr("%1 has changed their avatar and changed their " @@ -2946,30 +3029,30 @@ TimelineModel::formatMemberEvent(const QString &id) // the case of nothing changed but join follows join shouldn't happen, so // just show it as join } else { - if (event->content.join_authorised_via_users_server.empty()) + if (event.content.join_authorised_via_users_server.empty()) rendered = tr("%1 joined.").arg(name); else rendered = tr("%1 joined via authorisation from %2's server.") .arg(name, - QString::fromStdString(event->content.join_authorised_via_users_server)); + QString::fromStdString(event.content.join_authorised_via_users_server)); } break; case Membership::Leave: if (!prevEvent || prevEvent->content.membership == Membership::Join) { - if (event->state_key == event->sender) + if (event.state_key == event.sender) rendered = tr("%1 left the room.").arg(name); else rendered = tr("%2 kicked %1.").arg(name, senderName); } else if (prevEvent->content.membership == Membership::Invite) { - if (event->state_key == event->sender) + if (event.state_key == event.sender) rendered = tr("%1 rejected their invite.").arg(name); else rendered = tr("%2 revoked the invite to %1.").arg(name, senderName); } else if (prevEvent->content.membership == Membership::Ban) { rendered = tr("%2 unbanned %1.").arg(name, senderName); } else if (prevEvent->content.membership == Membership::Knock) { - if (event->state_key == event->sender) + if (event.state_key == event.sender) rendered = tr("%1 redacted their knock.").arg(name); else rendered = tr("%2 rejected the knock from %1.").arg(name, senderName); @@ -2988,8 +3071,8 @@ TimelineModel::formatMemberEvent(const QString &id) break; } - if (event->content.reason != "") { - rendered += " " + tr("Reason: %1").arg(QString::fromStdString(event->content.reason)); + if (event.content.reason != "") { + rendered += " " + tr("Reason: %1").arg(QString::fromStdString(event.content.reason)); } return rendered; diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h index fccc99eb..b9a48327 100644 --- a/src/timeline/TimelineModel.h +++ b/src/timeline/TimelineModel.h @@ -18,8 +18,6 @@ #include "CacheStructs.h" #include "EventStore.h" #include "InputBar.h" -#include "InviteesModel.h" -#include "MemberList.h" #include "Permissions.h" #include "ReadReceiptsModel.h" #include "ui/RoomSummary.h" @@ -199,8 +197,8 @@ class TimelineModel final : public QAbstractListModel QML_UNCREATABLE("") Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) - Q_PROPERTY(std::vector<QString> typingUsers READ typingUsers WRITE updateTypingUsers NOTIFY - typingUsersChanged) + Q_PROPERTY( + QStringList typingUsers READ typingUsers WRITE updateTypingUsers NOTIFY typingUsersChanged) Q_PROPERTY(QString scrollTarget READ scrollTarget NOTIFY scrollTargetChanged) Q_PROPERTY(QString reply READ reply WRITE setReply NOTIFY replyChanged RESET resetReply) Q_PROPERTY(QString edit READ edit WRITE setEdit NOTIFY editChanged RESET resetEdit) @@ -238,6 +236,7 @@ public: IsOnlyEmoji, Body, FormattedBody, + FormattedStateEvent, IsSender, UserId, UserName, @@ -266,6 +265,7 @@ public: ReplyTo, ThreadId, Reactions, + Room, RoomId, RoomName, RoomTopic, @@ -286,6 +286,8 @@ public: int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; void multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const override; + void + multiData(const QString &id, const QString &relatedTo, QModelRoleDataSpan roleDataSpan) const; QVariant data(const mtx::events::collections::TimelineEvents &event, int role) const; Q_INVOKABLE QVariant dataById(const QString &id, int role, const QString &relatedTo); Q_INVOKABLE QVariant dataByIndex(int i, int role = Qt::DisplayRole) const @@ -302,17 +304,22 @@ public: Q_INVOKABLE QString displayName(const QString &id) const; Q_INVOKABLE QString avatarUrl(const QString &id) const; Q_INVOKABLE QString formatDateSeparator(QDate date) const; - Q_INVOKABLE QString formatTypingUsers(const std::vector<QString> &users, const QColor &bg); + Q_INVOKABLE QString formatTypingUsers(const QStringList &users, const QColor &bg); Q_INVOKABLE bool showAcceptKnockButton(const QString &id); Q_INVOKABLE void acceptKnock(const QString &id); Q_INVOKABLE void joinReplacementRoom(const QString &id); - Q_INVOKABLE QString formatMemberEvent(const QString &id); + Q_INVOKABLE QString + formatMemberEvent(const mtx::events::StateEvent<mtx::events::state::Member> &event) const; Q_INVOKABLE QString formatJoinRuleEvent(const QString &id); - Q_INVOKABLE QString formatHistoryVisibilityEvent(const QString &id); - Q_INVOKABLE QString formatGuestAccessEvent(const QString &id); - Q_INVOKABLE QString formatPowerLevelEvent(const QString &id); - Q_INVOKABLE QString formatImagePackEvent(const QString &id); - Q_INVOKABLE QString formatPolicyRule(const QString &id); + QString formatHistoryVisibilityEvent( + const mtx::events::StateEvent<mtx::events::state::HistoryVisibility> &event) const; + QString + formatGuestAccessEvent(const mtx::events::StateEvent<mtx::events::state::GuestAccess> &) const; + QString formatPowerLevelEvent( + const mtx::events::StateEvent<mtx::events::state::PowerLevels> &event) const; + QString formatImagePackEvent( + const mtx::events::StateEvent<mtx::events::msc2545::ImagePack> &event) const; + Q_INVOKABLE QString formatPolicyRule(const QString &id) const; Q_INVOKABLE QVariantMap formatRedactedEvent(const QString &id); Q_INVOKABLE void viewRawMessage(const QString &id); @@ -324,6 +331,8 @@ public: Q_INVOKABLE void showReadReceipts(const QString &id); Q_INVOKABLE void redactEvent(const QString &id, const QString &reason = ""); Q_INVOKABLE void redactAllFromUser(const QString &userid, const QString &reason = ""); + Q_INVOKABLE void + reportEvent(const QString &eventId, const QString &reason = {}, const int score = -50); Q_INVOKABLE int idToIndex(const QString &id) const; Q_INVOKABLE QString indexToId(int index) const; Q_INVOKABLE void openMedia(const QString &eventId); @@ -396,14 +405,14 @@ public slots: void lastReadIdOnWindowFocus(); void checkAfterFetch(); QVariantMap getDump(const QString &eventId, const QString &relatedTo) const; - void updateTypingUsers(const std::vector<QString> &users) + void updateTypingUsers(const QStringList &users) { if (this->typingUsers_ != users) { this->typingUsers_ = users; emit typingUsersChanged(typingUsers_); } } - std::vector<QString> typingUsers() const { return typingUsers_; } + QStringList typingUsers() const { return typingUsers_; } bool paginationInProgress() const { return m_paginationInProgress; } QString reply() const { return reply_; } void setReply(const QString &newReply); @@ -461,7 +470,7 @@ signals: void redactionFailed(QString id); void mediaCached(QString mxcUrl, QString cacheUrl); void newEncryptedImage(mtx::crypto::EncryptedFile encryptionInfo); - void typingUsersChanged(std::vector<QString> users); + void typingUsersChanged(QStringList users); void replyChanged(QString reply); void editChanged(QString reply); void threadChanged(QString id); @@ -519,7 +528,7 @@ private: QString currentId, currentReadId; QString reply_, edit_, thread_; QString textBeforeEdit, replyBeforeEdit; - std::vector<QString> typingUsers_; + QStringList typingUsers_; TimelineViewManager *manager_; diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp index b8bd679b..e2616c14 100644 --- a/src/timeline/TimelineViewManager.cpp +++ b/src/timeline/TimelineViewManager.cpp @@ -12,6 +12,7 @@ #include <QString> #include "Cache.h" +#include "Cache_p.h" #include "ChatPage.h" #include "CombinedImagePackModel.h" #include "CommandCompleter.h" @@ -210,6 +211,7 @@ TimelineViewManager::sync(const mtx::responses::Sync &sync_) this->rooms_->sync(sync_); this->communities_->sync(sync_); this->presenceEmitter->sync(sync_.presence); + this->processIgnoredUsers(sync_.account_data); if (isInitialSync_) { this->isInitialSync_ = false; @@ -560,3 +562,41 @@ TimelineViewManager::fixImageRendering(QQuickTextDocument *t, QQuickItem *i) QObject::connect(t->textDocument(), SIGNAL(imagesLoaded()), i, SLOT(updateWholeDocument())); } } + +using IgnoredUsers = mtx::events::EphemeralEvent<mtx::events::account_data::IgnoredUsers>; + +static QVector<QString> +convertIgnoredToQt(const IgnoredUsers &ev) +{ + QVector<QString> users; + for (const mtx::events::account_data::IgnoredUser &user : ev.content.users) { + users.push_back(QString::fromStdString(user.id)); + } + + return users; +} + +QVector<QString> +TimelineViewManager::getIgnoredUsers() +{ + const auto cache = cache::client()->getAccountData(mtx::events::EventType::IgnoredUsers); + if (!cache) { + return {}; + } + + return convertIgnoredToQt(std::get<IgnoredUsers>(*cache)); +} + +void +TimelineViewManager::processIgnoredUsers(const mtx::responses::AccountData &data) +{ + for (const mtx::events::collections::RoomAccountDataEvents::variant &ev : data.events) { + if (!std::holds_alternative<IgnoredUsers>(ev)) { + continue; + } + const auto &ignoredEv = std::get<IgnoredUsers>(ev); + + emit this->ignoredUsersChanged(convertIgnoredToQt(ignoredEv)); + break; + } +} \ No newline at end of file diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h index f3bd04a2..b4e176cd 100644 --- a/src/timeline/TimelineViewManager.h +++ b/src/timeline/TimelineViewManager.h @@ -11,7 +11,8 @@ #include <mtx/common.hpp> #include <mtx/responses/messages.hpp> -#include "ReadReceiptsModel.h" +#include "InviteesModel.h" +#include "MemberList.h" #include "timeline/CommunitiesModel.h" #include "timeline/PresenceEmitter.h" #include "timeline/RoomlistModel.h" @@ -39,6 +40,7 @@ class TimelineViewManager final : public QObject Q_PROPERTY( bool isInitialSync MEMBER isInitialSync_ READ isInitialSync NOTIFY initialSyncChanged) Q_PROPERTY(bool isConnected READ isConnected NOTIFY isConnectedChanged) + Q_PROPERTY(QVector<QString> ignoredUsers READ getIgnoredUsers NOTIFY ignoredUsersChanged) public: TimelineViewManager(CallManager *callManager, ChatPage *parent = nullptr); @@ -62,6 +64,10 @@ public: return instance_; } + static TimelineViewManager *instance() { return TimelineViewManager::instance_; } + + QVector<QString> getIgnoredUsers(); + void sync(const mtx::responses::Sync &sync_); VerificationManager *verificationManager() { return verificationManager_; } @@ -113,6 +119,7 @@ signals: QString url, double originalWidth, double proportionalHeight); + void ignoredUsersChanged(const QVector<QString> &ignoredUsers); public slots: void updateReadReceipts(const QString &room_id, const std::vector<QString> &event_ids); @@ -154,4 +161,6 @@ private: QHash<QPair<QString, quint64>, QColor> userColors; inline static TimelineViewManager *instance_ = nullptr; + + void processIgnoredUsers(const mtx::responses::AccountData &data); }; diff --git a/src/ui/MxcAnimatedImage.cpp b/src/ui/MxcAnimatedImage.cpp index 14f5dbd8..ffe54c71 100644 --- a/src/ui/MxcAnimatedImage.cpp +++ b/src/ui/MxcAnimatedImage.cpp @@ -102,10 +102,12 @@ MxcAnimatedImage::startDownload() if (buffer.bytesAvailable() < 4LL * 1024 * 1024 * 1024) // cache images smaller than 4MB in RAM movie.setCacheMode(QMovie::CacheAll); - if (play_) + if (play_ && movie.frameCount() > 1) movie.start(); - else + else { movie.jumpToFrame(0); + movie.setPaused(true); + } emit loadedChanged(); update(); }); @@ -173,6 +175,9 @@ MxcAnimatedImage::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeD if (!imageDirty) return oldNode; + if (clipRect().isEmpty()) + return oldNode; + imageDirty = false; QSGImageNode *n = static_cast<QSGImageNode *>(oldNode); if (!n) { diff --git a/src/ui/MxcAnimatedImage.h b/src/ui/MxcAnimatedImage.h index c9f89764..1f2c0b74 100644 --- a/src/ui/MxcAnimatedImage.h +++ b/src/ui/MxcAnimatedImage.h @@ -29,6 +29,7 @@ public: connect(this, &MxcAnimatedImage::roomChanged, &MxcAnimatedImage::startDownload); connect(&movie, &QMovie::frameChanged, this, &MxcAnimatedImage::newFrame); setFlag(QQuickItem::ItemHasContents); + setFlag(QQuickItem::ItemObservesViewport); // setAcceptHoverEvents(true); } @@ -55,7 +56,12 @@ public: { if (play_ != newPlay) { play_ = newPlay; - movie.setPaused(!play_); + if (movie.frameCount() > 1) + movie.setPaused(!play_); + else { + movie.jumpToFrame(0); + movie.setPaused(true); + } emit playChanged(); } } @@ -77,7 +83,8 @@ private slots: { currentFrame = frame; imageDirty = true; - update(); + if (!clipRect().isEmpty()) + update(); } private: diff --git a/src/ui/NhekoDropArea.cpp b/src/ui/NhekoDropArea.cpp index 63c9aa6f..348ef5d8 100644 --- a/src/ui/NhekoDropArea.cpp +++ b/src/ui/NhekoDropArea.cpp @@ -38,6 +38,7 @@ NhekoDropArea::dropEvent(QDropEvent *event) auto model = ChatPage::instance()->timelineManager()->rooms()->getRoomById(roomid_); if (model) { model->input()->insertMimeData(event->mimeData()); + ChatPage::instance()->timelineManager()->focusMessageInput(); } } } diff --git a/src/ui/RoomSettings.cpp b/src/ui/RoomSettings.cpp index 769f2c8d..5f4184b3 100644 --- a/src/ui/RoomSettings.cpp +++ b/src/ui/RoomSettings.cpp @@ -728,7 +728,7 @@ RoomSettingsAllowedRoomsModel::RoomSettingsAllowedRoomsModel(RoomSettings *paren this->listedRoomIds = QStringList(parentSpaces.begin(), parentSpaces.end()); - for (const auto &e : qAsConst(this->allowedRoomIds)) { + for (const auto &e : std::as_const(this->allowedRoomIds)) { if (!this->parentSpaces.count(e)) this->listedRoomIds.push_back(e); } diff --git a/src/ui/UserProfile.cpp b/src/ui/UserProfile.cpp index 80def409..338f3658 100644 --- a/src/ui/UserProfile.cpp +++ b/src/ui/UserProfile.cpp @@ -11,11 +11,11 @@ #include "Cache_p.h" #include "ChatPage.h" #include "Logging.h" +#include "MainWindow.h" +#include "MatrixClient.h" #include "UserProfile.h" #include "Utils.h" -#include "encryption/DeviceVerificationFlow.h" #include "encryption/VerificationManager.h" -#include "mtx/responses/crypto.hpp" #include "timeline/TimelineModel.h" #include "timeline/TimelineViewManager.h" #include "ui/UIA.h" @@ -64,6 +64,19 @@ UserProfile::UserProfile(const QString &roomid, new RoomInfoModel(cache::client()->getCommonRooms(userid.toStdString()), this); else sharedRooms_ = new RoomInfoModel({}, this); + + connect(ChatPage::instance(), &ChatPage::syncUI, this, [this](const mtx::responses::Sync &res) { + if (auto ignoreEv = std::ranges::find_if( + res.account_data.events, + [](const mtx::events::collections::RoomAccountDataEvents &e) { + return std::holds_alternative< + mtx::events::AccountDataEvent<mtx::events::account_data::IgnoredUsers>>(e); + }); + ignoreEv != res.account_data.events.end()) { + // doesn't matter much if it was actually us + emit ignoredChanged(); + } + }); } QHash<int, QByteArray> @@ -224,6 +237,49 @@ UserProfile::refreshDevices() fetchDeviceList(this->userid_); } +bool +UserProfile::ignored() const +{ + auto old = TimelineViewManager::instance()->getIgnoredUsers(); + return old.contains(userid_); +} + +void +UserProfile::setIgnored(bool ignore) +{ + auto old = TimelineViewManager::instance()->getIgnoredUsers(); + if (ignore) { + if (old.contains(userid_)) { + emit ignoredChanged(); + return; + } + old.append(userid_); + } else { + if (!old.contains(userid_)) { + emit ignoredChanged(); + return; + } + old.removeAll(userid_); + } + + std::vector<mtx::events::account_data::IgnoredUser> content; + for (const QString &item : std::as_const(old)) { + content.push_back({item.toStdString()}); + } + + mtx::events::account_data::IgnoredUsers payload{.users{content}}; + + auto userid = userid_; + + http::client()->put_account_data(payload, [userid](mtx::http::RequestErr e) { + if (e) { + MainWindow::instance()->showNotification( + tr("Failed to ignore \"%1\": %2") + .arg(userid, QString::fromStdString(e->matrix_error.error))); + } + }); +} + void UserProfile::fetchDeviceList(const QString &userID) { @@ -345,10 +401,6 @@ UserProfile::banUser() ChatPage::instance()->banUser(roomid_, this->userid_, QLatin1String("")); } -// void ignoreUser(){ - -// } - void UserProfile::kickUser() { diff --git a/src/ui/UserProfile.h b/src/ui/UserProfile.h index d8e06aa1..bc5b6a35 100644 --- a/src/ui/UserProfile.h +++ b/src/ui/UserProfile.h @@ -157,6 +157,7 @@ class UserProfile final : public QObject Q_PROPERTY(int userVerified READ getUserStatus NOTIFY userStatusChanged) Q_PROPERTY(bool isLoading READ isLoading NOTIFY loadingChanged) Q_PROPERTY(bool userVerificationEnabled READ userVerificationEnabled NOTIFY userStatusChanged) + Q_PROPERTY(bool ignored READ ignored WRITE setIgnored NOTIFY ignoredChanged) Q_PROPERTY(bool isSelf READ isSelf CONSTANT) Q_PROPERTY(TimelineModel *room READ room CONSTANT) public: @@ -184,7 +185,6 @@ public: Q_INVOKABLE void refreshDevices(); Q_INVOKABLE void banUser(); Q_INVOKABLE void signOutDevice(const QString &deviceID); - // Q_INVOKABLE void ignoreUser(); Q_INVOKABLE void kickUser(); Q_INVOKABLE void startChat(); Q_INVOKABLE void startChat(bool encryptionEnabled); @@ -193,6 +193,9 @@ public: Q_INVOKABLE void changeAvatar(); Q_INVOKABLE void openGlobalProfile(); + void setIgnored(bool ignored); + bool ignored() const; + signals: void userStatusChanged(); void loadingChanged(); @@ -201,6 +204,7 @@ signals: void displayError(const QString &errorMessage); void globalUsernameRetrieved(const QString &globalUser); void devicesChanged(); + void ignoredChanged(); // internal void verificationStatiChanged(); diff --git a/src/voip/CallManager.cpp b/src/voip/CallManager.cpp index 5479ba31..46679e71 100644 --- a/src/voip/CallManager.cpp +++ b/src/voip/CallManager.cpp @@ -92,7 +92,8 @@ CallManager::CallManager(QObject *parent) if (QGuiApplication::platformName() != QStringLiteral("wayland")) { // Selected by default screenShareType_ = ScreenShareType::X11; - std::swap(screenShareTypes_[0], screenShareTypes_[1]); + if (screenShareTypes_.size() >= 2) + std::swap(screenShareTypes_[0], screenShareTypes_[1]); } } #endif |