Compare commits

...

13 Commits

Author SHA1 Message Date
Tobias Fella
565fe1975b Remove duplicated corrosion 2025-03-22 17:55:30 +01:00
Tobias Fella
635b77d03e Add licenses 2025-03-22 17:45:08 +01:00
Tobias Fella
4d7b788160 Fix rust flatpak 2025-03-22 17:38:41 +01:00
Tobias Fella
9e24c855b6 Add corrosion 2025-03-22 17:28:34 +01:00
Tobias Fella
18bea02fa0 WIP 2025-03-22 17:17:39 +01:00
Tobias Fella
073e756364 Port to Integral 2025-03-22 17:10:33 +01:00
l10n daemon script
f153e57fdb GIT_SILENT Sync po/docbooks with svn 2025-03-12 01:39:11 +00:00
l10n daemon script
bac93e778e GIT_SILENT Sync po/docbooks with svn 2025-03-11 01:37:29 +00:00
James Graham
2aeed10429 Message attached property
Create Message attached property to propagate parameters like room, timeline, index and maxContentWidth down to the message content avoiding lots of boilerplate
2025-03-10 18:28:42 +00:00
l10n daemon script
ea6ad902a7 GIT_SILENT Sync po/docbooks with svn 2025-03-10 01:41:40 +00:00
James Graham
f9c53ee3b0 ThreePIDModel Updates
There is no need for NeochatConnection to depend on ThreePIdModel and also this means it's not in memory when not needed.

Also a little cleanup to make sure only a single job can run at a time.
2025-03-09 12:31:14 +00:00
l10n daemon script
3f0843647c GIT_SILENT Sync po/docbooks with svn 2025-03-09 01:36:22 +00:00
Albert Astals Cid
a50df870e7 GIT_SILENT Upgrade release service version to 25.07.70. 2025-03-08 19:26:23 +01:00
134 changed files with 11480 additions and 6607 deletions

View File

@@ -22,7 +22,20 @@
"--talk-name=org.freedesktop.secrets",
"--own-name=org.kde.StatusNotifierItem-2-2"
],
"sdk-extensions": [
"org.freedesktop.Sdk.Extension.rust-stable"
],
"build-options": {
"append-path": "/usr/lib/sdk/rust-stable/bin",
"env": {
"RUST_BACKTRACE": "1",
"CARGO_NET_OFFLINE": "true",
"RUSTFLAGS": "--remap-path-prefix =../"
}
},
"modules": [
"flatpak/corrosion.json",
{
"name": "kirigamiaddons",
"config-opts": [
@@ -50,25 +63,6 @@
}
]
},
{
"name": "olm",
"buildsystem": "cmake-ninja",
"config-opts": [
"-DOLM_TESTS=OFF"
],
"sources": [
{
"type": "git",
"url": "https://gitlab.matrix.org/matrix-org/olm.git",
"tag": "3.2.16",
"x-checker-data": {
"type": "git",
"tag-pattern": "^([\\d.]+)$"
},
"commit": "7e0c8277032e40308987257b711b38af8d77cc69"
}
]
},
{
"name": "libsecret",
"buildsystem": "meson",
@@ -117,20 +111,15 @@
]
},
{
"name": "libQuotient",
"name": "integral",
"buildsystem": "cmake-ninja",
"sources": [
"flatpak/generated-sources.json",
{
"type": "git",
"url": "https://github.com/quotient-im/libQuotient.git",
"branch": "dev",
"disable-submodules": true
"url": "https://invent.kde.org/tfella/integral.git",
"branch": "master"
}
],
"config-opts": [
"-DBUILD_WITH_QT6=ON",
"-DQuotient_ENABLE_E2EE=ON",
"-DBUILD_TESTING=OFF"
]
},
{

View File

@@ -8,14 +8,14 @@ include:
- /gitlab-templates/json-validation.yml
- /gitlab-templates/xml-lint.yml
- /gitlab-templates/yaml-lint.yml
- /gitlab-templates/android-qt6.yml
- /gitlab-templates/linux-qt6.yml
- /gitlab-templates/linux-qt6-next.yml
- /gitlab-templates/windows-qt6.yml
# - /gitlab-templates/android-qt6.yml
# - /gitlab-templates/linux-qt6.yml
# - /gitlab-templates/linux-qt6-next.yml
# - /gitlab-templates/windows-qt6.yml
# - /gitlab-templates/freebsd-qt6.yml
- /gitlab-templates/flatpak.yml
- /gitlab-templates/snap-snapcraft-lxd.yml
- /gitlab-templates/craft-android-qt6-apks.yml
- /gitlab-templates/craft-appimage-qt6.yml
- /gitlab-templates/craft-windows-x86-64-qt6.yml
- /gitlab-templates/craft-windows-appx-qt6.yml
# - /gitlab-templates/snap-snapcraft-lxd.yml
# - /gitlab-templates/craft-android-qt6-apks.yml
# - /gitlab-templates/craft-appimage-qt6.yml
# - /gitlab-templates/craft-windows-x86-64-qt6.yml
# - /gitlab-templates/craft-windows-appx-qt6.yml

View File

@@ -8,7 +8,7 @@ cmake_minimum_required(VERSION 3.16)
# KDE Applications version, managed by release script.
set(RELEASE_SERVICE_VERSION_MAJOR "25")
set(RELEASE_SERVICE_VERSION_MINOR "03")
set(RELEASE_SERVICE_VERSION_MINOR "07")
set(RELEASE_SERVICE_VERSION_MICRO "70")
set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
@@ -49,8 +49,6 @@ if(NEOCHAT_FLATPAK)
include(cmake/Flatpak.cmake)
endif()
set(QUOTIENT_FORCE_NAMESPACED_INCLUDES TRUE)
ecm_setup_version(${PROJECT_VERSION}
VARIABLE_PREFIX NEOCHAT
VERSION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/neochat-version.h
@@ -107,13 +105,7 @@ if (NOT ANDROID AND NOT WIN32 AND NOT APPLE AND NOT HAIKU)
find_package(KF6DBusAddons ${KF_MIN_VERSION} REQUIRED)
endif()
find_package(QuotientQt6 0.9)
set_package_properties(QuotientQt6 PROPERTIES
TYPE REQUIRED
DESCRIPTION "Qt wrapper around Matrix API"
URL "https://github.com/quotient-im/libQuotient/"
PURPOSE "Talk with matrix server"
)
find_package(Integral 0.1 REQUIRED)
find_package(cmark)
set_package_properties(cmark PROPERTIES

View File

@@ -12,6 +12,7 @@
#include "models/messagecontentmodel.h"
#include "neochatconnection.h"
#include "testutils.h"
using namespace Quotient;
@@ -32,7 +33,7 @@ private Q_SLOTS:
void MessageContentModelTest::initTestCase()
{
connection = Connection::makeMockConnection(u"@bob:kde.org"_s);
connection = new NeoChatConnection;
}
void MessageContentModelTest::missingEvent()

30
flatpak/corrosion.json Normal file
View File

@@ -0,0 +1,30 @@
{
"build-options": {
"env": {
"CARGO_HOME": "/run/build/corrosion/cargo"
}
},
"buildsystem": "cmake-ninja",
"cleanup": [
"/app"
],
"config-opts": [
"-DCORROSION_INSTALL_EXECUTABLE=OFF",
"-DCORROSION_BUILD_TESTS=OFF",
"-DCORROSION_DEV_MODE=OFF"
],
"name": "corrosion",
"sources": [
{
"sha256": "843334a9f0f5efbc225dccfa88031fe0f2ec6fd787ca1e7d55ed27b2c25d9c97",
"type": "archive",
"url": "https://github.com/corrosion-rs/corrosion/archive/refs/tags/v0.5.1.tar.gz",
"x-checker-data": {
"type": "anitya",
"project-id": 242799,
"stable-only": true,
"url-template": "https://github.com/corrosion-rs/corrosion/archive/refs/tags/v0.5.1.tar.gz"
}
}
]
}

View File

@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: Jonah Brüchert <jbb@kaidan.im>
SPDX-License-Identifier: CC0-1.0

View File

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: None
SPDX-License-Identifier: CC0-1.0

16
flatpak/regenerate-sources.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/usr/bin/env bash
# SPDX-FileCopyrightText: Jonah Brüchert <jbb@kaidan.im>
# SPDX-License-Identifier: CC0-1.0
set -e
export GIT_CLONE_ARGS="--depth 1 --single-branch"
export FLATPAK_DIR="$(readlink -f $(dirname $0))"
cd ${FLATPAK_DIR}
if [ ! -d flatpak-builder-tools ]; then
git clone ${GIT_CLONE_ARGS} https://github.com/flatpak/flatpak-builder-tools
else
git -C flatpak-builder-tools pull
fi
./flatpak-builder-tools/cargo/flatpak-cargo-generator.py -o generated-sources.json ../../integral/src/sdk/Cargo.lock

View File

@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"PO-Revision-Date: 2025-03-02 10:41+0400\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-08 21:40+0400\n"
"Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n"
"Language-Team: ar\n"
"Language: ar\n"
@@ -1040,7 +1040,7 @@ msgstr "التسجيل معطل على هذا الخادم."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "يحمّل"
@@ -1070,7 +1070,7 @@ msgid "Loading…"
msgstr "يحمّل..."
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1700,7 +1700,7 @@ msgstr "صورك التعبيرية"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "يحمّل الرد"
@@ -1966,7 +1966,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 دعاك"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1974,18 +1974,18 @@ msgid ""
msgstr ""
"الملف كبير للغاية بحيث لا يمكن تحميله.<br />راسل مدير خادوم ماتركس للدعم."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "لم يُضبط خادوم هوية بعد"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "فشل إنشاء غرفة: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "فشل إنشاء فضاء: %1"
@@ -2125,13 +2125,13 @@ msgstr "تَثَبّت من هذا الجهاز"
#, kde-format
msgctxt "@title"
msgid "Verification Request Sent"
msgstr ""
msgstr "أُرسل طلب التحقق"
#: src/qml/AccountMenu.qml:94
#, kde-format
msgctxt "@info:label"
msgid "To proceed, accept the verification request on another device."
msgstr ""
msgstr "للمتابعة، اقبل طلب التحقق على جهاز آخر."
#: src/qml/AccountMenu.qml:106 src/settings/AccountsPage.qml:88
#, kde-format
@@ -5849,86 +5849,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "حدد المعامل لإضافته"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "أخفِ"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "شارك"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "أزِل"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "أكمل"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "ألغِ"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "رمز البلد لرقم الهاتف الجديد"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "عنوان بريد إلكتروني جديد:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "رقم الهاتف الجديد:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "لقد أرسلنا لك رسالة بالبريد الإلكتروني"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "لقد أرسلنا لك رسالة نصية"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. يرجى اتباع التعليمات هناك ثم انقر فوق الزر أدناه"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "البريد الإلكتروني الذي أدخلته غير صالح"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "رقم الهاتف الذي أدخلته غير صالح"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "أدخلت كلمة سر خاطئة"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5937,7 +5937,7 @@ msgstr ""
"لم يتحقق من البريد الإلكتروني. الرجاء الذهاب إلى البريد الإلكتروني واتباع "
"التعليمات هناك ثم انقر فوق الزر أدناه"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5946,25 +5946,25 @@ msgstr ""
"لم يتحقق من رقم الهاتف. الرجاء الذهاب إلى الرسالة النصية واتباع التعليمات "
"هناك ثم انقر فوق الزر أدناه"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "أضف"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "عُد"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. يرجى اتباع التعليمات هناك ثم انقر فوق الزر أعلاه"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5973,7 +5973,7 @@ msgstr ""
"لم يتحقق من البريد الإلكتروني. الرجاء الذهاب إلى البريد الإلكتروني واتباع "
"التعليمات هناك ثم انقر فوق الزر أعلاه"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5982,55 +5982,55 @@ msgstr ""
"لم يتحقق من رقم الهاتف. الرجاء الذهاب إلى الرسالة النصية واتباع التعليمات "
"هناك ثم انقر فوق الزر أعلاه"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "بدأ %1 عملية تَثَبّت لمستخدم"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "أكد التحرير"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "أرسل رسالة في الموضوع"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "انسخ إلى الحافظة"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "كبّر"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr "هذه الرسالة مشفرة ولم يشارك المرسل المفتاح مع هذا الجهاز."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "اجلب أحداث أكثر"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "نزّل"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6038,13 +6038,13 @@ msgctxt ""
msgid "Open File"
msgstr "افتح الملف"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6073,47 +6073,47 @@ msgstr "وقت تسجيل الوصول: %1"
msgid "Check-out time: %1"
msgstr "وقت تسجيل الخروج: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "أظهر الصورة"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "أرسل إلى كِيدِي Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "أزل المعاينة"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "صغر المعاينة"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "وسع المعاينة"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "يحمل معاينة الرابط"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "افتحه خارجيا"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
@@ -6124,13 +6124,13 @@ msgstr[3] "بالاعتماد على أصوات %1 مستخدمين"
msgstr[4] "بالاعتماد على أصوات %1 مستخدماً"
msgstr[5] "بالاعتماد على أصوات %1 مستخدم"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(انتهى)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6142,7 +6142,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "آخر قراءة: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6161,24 +6161,24 @@ msgstr "هذه هي بداية الدردشة. ولا توجد رسائل قدي
msgid "Pl. %1"
msgstr "المنصة %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "فيديو"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "أظهر الفيديو"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "الصوت"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "كبّر"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2023-12-12 01:02+0100\n"
"Last-Translator: Enol P. <enolp@softastur.org>\n"
"Language-Team: Asturian <alministradores@softastur.org>\n"
@@ -1027,7 +1027,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr ""
@@ -1057,7 +1057,7 @@ msgid "Loading…"
msgstr ""
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1687,7 +1687,7 @@ msgstr ""
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr ""
@@ -1939,25 +1939,25 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr ""
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr ""
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr ""
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr ""
@@ -5780,180 +5780,180 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr ""
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr ""
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr ""
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr ""
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr ""
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr ""
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr ""
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr ""
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr ""
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr ""
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr ""
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr ""
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr ""
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -5961,13 +5961,13 @@ msgctxt ""
msgid "Open File"
msgstr ""
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr ""
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -5996,60 +5996,60 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr ""
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr ""
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr ""
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] ""
msgstr[1] ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr ""
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6061,7 +6061,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr ""
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6080,24 +6080,24 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr ""
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr ""
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr ""
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr ""

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2022-07-22 12:13+0400\n"
"Last-Translator: Kheyyam <xxmn77@gmail.com>\n"
"Language-Team: Azerbaijani <kde-i18n-doc@kde.org>\n"
@@ -1140,7 +1140,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading"
@@ -1173,7 +1173,7 @@ msgid "Loading…"
msgstr "Yüklənir..."
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1897,7 +1897,7 @@ msgstr "Xüsusi Emoji"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading reply"
@@ -2211,26 +2211,26 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1,sizi otağa dəvət etdi"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr ""
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
msgid "Room creation failed: %1"
msgstr "Otaq yaradıla bilmədi: \"%1\""
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
msgid "Space creation failed: %1"
@@ -6441,47 +6441,47 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, fuzzy, kde-format
#| msgid "Share"
msgctxt "@action:button"
msgid "Share"
msgstr "Paylaşmaq"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button"
msgid "Remove"
msgstr "Silmək"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, fuzzy, kde-format
#| msgid "Compact"
msgctxt "@action:button"
msgid "Complete"
msgstr "Yığcam"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, fuzzy, kde-format
#| msgid "Cancel"
msgctxt "@action:button"
msgid "Cancel"
msgstr "İmtina"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgctxt "their refers to a singular user"
#| msgid "cleared their display name"
@@ -6489,68 +6489,68 @@ msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "onların görünən adı silindi"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Members"
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Üzvlər"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, fuzzy, kde-format
#| msgid "Send a message…"
msgid "We've sent you a text message"
msgstr "İsmarıcı göndərin..."
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, fuzzy, kde-format
#| msgid "Wrong password entered"
msgid "Incorrect password entered"
msgstr "Səhv şifrə daxil edildi"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, fuzzy, kde-format
#| msgid "Add"
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Əlavə etmək"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Back"
@@ -6558,80 +6558,80 @@ msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Geriyə"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, fuzzy, kde-format
#| msgid "withdrew %1's invitation"
msgid "%1 started a user verification"
msgstr "%1 dəvəti geri çəkildi"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "Confirm"
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Təsdiq etmək"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "No rooms found"
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Otaqlar tapılmadı"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Copy address to clipboard"
msgid "Copy to clipboard"
msgstr "Ünvanı mübadilə yaddaşına kopyalayın"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr ""
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr "Bu ismarıc şifrələnib və göndərən açarı bu cihaz ilə paylaşmadı."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Endirmək"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6639,13 +6639,13 @@ msgctxt ""
msgid "Open File"
msgstr "Faylıın"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6674,63 +6674,63 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, fuzzy, kde-format
#| msgid "cleared the room name"
msgctxt "@action:button"
msgid "Show Image"
msgstr "otağın adını silmək"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, fuzzy, kde-format
#| msgid "Remove device"
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Cihazı silmək"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr ""
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr ""
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, fuzzy, kde-format
#| msgid "Open Externally"
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Xaricdə açmaq"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] ""
msgstr[1] ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr ""
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6743,7 +6743,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Sonuncu oxuma: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6763,25 +6763,25 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, fuzzy, kde-format
#| msgid "Video"
msgctxt "@action:button"
msgid "Show Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr ""
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr ""

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-06 09:03+0100\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
@@ -1043,7 +1043,7 @@ msgstr "El registre està desactivat en aquest servidor."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "S'està carregant"
@@ -1075,7 +1075,7 @@ msgid "Loading…"
msgstr "S'està carregant…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1707,7 +1707,7 @@ msgstr "Emojis propis"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "S'està carregant la resposta"
@@ -1967,7 +1967,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 us ha convidat"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1976,18 +1976,18 @@ msgstr ""
"El fitxer és massa gran per a baixar.<br />Contacteu amb l'administrador del "
"servidor Matrix per a ajuda."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "No s'ha configurat cap servidor d'identitats"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Ha fallat la creació de la sala: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Ha fallat la creació de l'espai: %1"
@@ -5909,86 +5909,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Selecció del paràmetre a afegir"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Oculta"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Comparteix"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Elimina"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Completa"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Cancel·la"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Codi de país del número nou de telèfon"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Adreça de correu electrònic nova:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Número de telèfon nou:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Us hem enviat un correu electrònic"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Us hem enviat un missatge de text"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. Seguiu les seves instruccions i després feu clic al botó de sota"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "El correu electrònic que heu introduït no és vàlid"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "El número de telèfon que heu introduït no és vàlid"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "S'ha introduït una contrasenya incorrecta"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5997,7 +5997,7 @@ msgstr ""
"El correu electrònic no s'ha verificat. Aneu al correu electrònic i seguiu "
"les seves instruccions i després feu clic al botó de sota"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6006,25 +6006,25 @@ msgstr ""
"El número de telèfon no s'ha verificat. Aneu al missatge de text i seguiu "
"les seves instruccions i després feu clic al botó de sota"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Afegeix"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Enrere"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. Seguiu les seves instruccions i després feu clic al botó de dalt"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6033,7 +6033,7 @@ msgstr ""
"El correu electrònic no s'ha verificat. Aneu al correu electrònic i seguiu "
"les seves instruccions i després feu clic al botó de dalt"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6042,35 +6042,35 @@ msgstr ""
"El número de telèfon no s'ha verificat. Aneu al missatge de text i seguiu "
"les seves instruccions i després feu clic al botó de dalt"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 ha començat una verificació d'usuari"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Confirma l'edició"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Publica un missatge en el fil"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Copia al porta-retalls"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximitza"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6079,20 +6079,20 @@ msgstr ""
"Aquest missatge està encriptat i el remitent no ha compartit la clau amb "
"aquest dispositiu."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Recupera més esdeveniments"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Baixa"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6100,13 +6100,13 @@ msgctxt ""
msgid "Open File"
msgstr "Obre el fitxer"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6135,60 +6135,60 @@ msgstr "Hora d'entrada: %1"
msgid "Check-out time: %1"
msgstr "Hora de sortida: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Mostra la imatge"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Envia al KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Elimina la vista prèvia"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Encongeix la vista prèvia"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Expandeix la vista prèvia"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "S'està carregant la vista prèvia de l'URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Obre externament"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Basat en els vots d'%1 usuari"
msgstr[1] "Basat en els vots de %1 usuaris"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Finalitzat)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6200,7 +6200,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Última lectura: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6222,24 +6222,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "An. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Vídeo"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Mostra el vídeo"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Volum"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximitza"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-06 09:03+0100\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
@@ -1045,7 +1045,7 @@ msgstr "El registre està desactivat en este servidor."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "S'està carregant"
@@ -1077,7 +1077,7 @@ msgid "Loading…"
msgstr "S'està carregant…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1709,7 +1709,7 @@ msgstr "Emoji propis"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "S'està carregant la resposta"
@@ -1969,7 +1969,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 vos ha convidat"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1978,18 +1978,18 @@ msgstr ""
"El fitxer és massa gran per a baixar.<br />Contacteu amb l'administrador del "
"servidor Matrix per a ajuda."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "No s'ha configurat cap servidor d'identitats"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "No s'ha pogut crear la sala: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "No s'ha pogut crear l'espai: %1"
@@ -5909,87 +5909,87 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Seleccioneu el paràmetre a afegir"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Oculta"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Compartix"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Elimina"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Completa"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Cancel·la"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Codi de país del número nou de telèfon"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Adreça de correu electrònic nova:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Número de telèfon nou:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Vos hem enviat un correu electrònic"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Vos hem enviat un missatge de text"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
"%1. Seguiu les seues instruccions i després feu clic en el botó de davall"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "El correu electrònic que heu introduït no és vàlid"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "El número de telèfon que heu introduït no és vàlid"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "S'ha introduït una contrasenya incorrecta"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5998,7 +5998,7 @@ msgstr ""
"El correu electrònic no s'ha verificat. Aneu fins al correu electrònic i "
"seguiu les seues instruccions i després feu clic en el botó de davall"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6007,26 +6007,26 @@ msgstr ""
"El número de telèfon no s'ha verificat. Aneu fins al missatge de text i "
"seguiu les seues instruccions i després feu clic en el botó de davall"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Afig"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Arrere"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
"%1. Seguiu les seues instruccions i després feu clic en el botó de dalt"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6035,7 +6035,7 @@ msgstr ""
"El correu electrònic no s'ha verificat. Aneu fins al correu electrònic i "
"seguiu les seues instruccions i després feu clic en el botó de dalt"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6044,35 +6044,35 @@ msgstr ""
"El número de telèfon no s'ha verificat. Aneu fins al missatge de text i "
"seguiu les seues instruccions i després feu clic en el botó de dalt"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 ha començat una verificació d'usuari"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Confirma l'edició"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Publica un missatge en el fil"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Copia a dins del porta-retalls"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximitza"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6081,20 +6081,20 @@ msgstr ""
"Este missatge està encriptat i el remitent no ha compartit la clau amb este "
"dispositiu."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Recupera més esdeveniments"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Baixa"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6102,13 +6102,13 @@ msgctxt ""
msgid "Open File"
msgstr "Obri el fitxer"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6137,60 +6137,60 @@ msgstr "Hora d'entrada: %1"
msgid "Check-out time: %1"
msgstr "Hora d'eixida: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Mostra la imatge"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Envia a KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Elimina la vista prèvia"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Encull la vista prèvia"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Expandix la vista prèvia"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "S'està carregant la vista prèvia de l'URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Obri externament"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Basat en els vots d'%1 usuari"
msgstr[1] "Basat en els vots de %1 usuaris"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Finalitzat)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6202,7 +6202,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Última lectura: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6224,24 +6224,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "An. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Vídeo"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Mostra el vídeo"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Volum"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximitza"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-09-17 15:24+0200\n"
"Last-Translator: Vit Pelcak <vit@pelcak.org>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
@@ -1028,7 +1028,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Načítání"
@@ -1058,7 +1058,7 @@ msgid "Loading…"
msgstr "Probíhá načítání…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1688,7 +1688,7 @@ msgstr "Vlastní emotikony"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr ""
@@ -1943,25 +1943,25 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr ""
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr ""
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Vytvoření místnosti selhalo: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Vytvoření místnosti selhalo: %1"
@@ -5800,180 +5800,180 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Skrýt"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Sdílet"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Odstranit"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Dokončeno"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Zrušit"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Nová e-mailová adresa:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Nové telefonní číslo:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr ""
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Přidat"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Zpět"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr ""
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Potvrdit úpravy"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Napsat zprávu do vlákna"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Zkopírovat do schránky"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximalizovat"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr ""
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Stáhnout"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -5981,13 +5981,13 @@ msgctxt ""
msgid "Open File"
msgstr "Otevřít soubor"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6016,47 +6016,47 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Zobrazit obrázek"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Poslat do itineráře KDE"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Odstranit náhled"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Zmenšit náhled"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Roztáhnout náhled"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Načítá se náhled URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Otevřít externě"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
@@ -6064,13 +6064,13 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Ukončeno)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6082,7 +6082,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Poslední přístup ke čtení: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6101,24 +6101,24 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Zobrazit video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Hlasitost"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximalizovat"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2020-12-13 17:28+0100\n"
"Last-Translator: Martin Schlander <mschlander@opensuse.org>\n"
"Language-Team: Danish <kde-i18n-doc@kde.org>\n"
@@ -1077,7 +1077,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, fuzzy, kde-format
#| msgid "Loading"
msgid "Loading"
@@ -1109,7 +1109,7 @@ msgid "Loading…"
msgstr "Indlæser"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1755,7 +1755,7 @@ msgstr ""
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, fuzzy, kde-format
#| msgid "Loading"
msgid "Loading reply"
@@ -2032,26 +2032,26 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr ""
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr ""
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, fuzzy, kde-format
#| msgid "Login Failed"
msgid "Room creation failed: %1"
msgstr "Login mislykkedes"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, fuzzy, kde-format
#| msgid "Login Failed"
msgid "Space creation failed: %1"
@@ -6100,187 +6100,187 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr ""
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button"
msgid "Remove"
msgstr "Fjern"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr ""
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, fuzzy, kde-format
#| msgid "Cancel"
msgctxt "@action:button"
msgid "Cancel"
msgstr "Annullér"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Members"
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Medlemmer"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, fuzzy, kde-format
#| msgid "Send message"
msgid "We've sent you a text message"
msgstr "Send besked"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, fuzzy, kde-format
#| msgid "Add"
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Tilføj"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr ""
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr ""
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "Cancel"
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Annullér"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "Send message"
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Send besked"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr ""
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr ""
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr ""
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr ""
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6288,13 +6288,13 @@ msgctxt ""
msgid "Open File"
msgstr ""
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr ""
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6323,63 +6323,63 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, fuzzy, kde-format
#| msgid "Username"
msgctxt "@action:button"
msgid "Show Image"
msgstr "Brugernavn"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Fjern"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr ""
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr ""
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, fuzzy, kde-format
#| msgid "Open Externally"
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Åbn eksternt"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] ""
msgstr[1] ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr ""
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6391,7 +6391,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr ""
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6411,25 +6411,25 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr ""
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, fuzzy, kde-format
#| msgid "Username"
msgctxt "@action:button"
msgid "Show Video"
msgstr "Brugernavn"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr ""
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr ""

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-01-08 15:55+0100\n"
"Last-Translator: Johannes Obermayr <johannesobermayr@gmx.de>\n"
"Language-Team: German <kde-i18n-de@kde.org>\n"
@@ -1050,7 +1050,7 @@ msgstr "Die Registrierung ist auf diesem Server deaktiviert."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Wird geladen"
@@ -1081,7 +1081,7 @@ msgid "Loading…"
msgstr "Wird geladen …"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1718,7 +1718,7 @@ msgstr "Eigene Emojis"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Antwort wird geladen"
@@ -1990,7 +1990,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 hat Sie in einen Raum eingeladen"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1999,18 +1999,18 @@ msgstr ""
"Die Datei ist zu groß für das Herunterladen.<br />Kontaktieren Sie den "
"Administrator Ihres Matrix-Servers für die Unterstützung."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Erstellen des Raums ist fehlgeschlagen: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Erstellen der Umgebung ist fehlgeschlagen: %1"
@@ -5968,162 +5968,162 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Ausblenden"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Teilen"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Entfernen"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, fuzzy, kde-format
#| msgid "Compact"
msgctxt "@action:button"
msgid "Complete"
msgstr "Kompakt"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Abbrechen"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Länderkennung für die neue Telefonnummer"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Neue E-Mail-Adresse:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Neue Telefonnummer:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, fuzzy, kde-format
#| msgid "sent a message"
msgid "We've sent you a text message"
msgstr "hat eine Nachricht gesendet"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "Die eingegebene E-Mail-Adresse ist nicht gültig"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Die eingegebene Telefonnummer ist nicht gültig"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Falsches Passwort eingegeben"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Hinzufügen"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Zurück"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 startete eine Überprüfung des Benutzers"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Änderungen bestätigen"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Nachricht im Diskussionsfaden senden"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "In die Zwischenablage kopieren"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximieren"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6132,20 +6132,20 @@ msgstr ""
"Diese Nachricht ist verschlüsselt und der Absender hat den Schlüssel nicht "
"mit diesem Gerät geteilt."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Herunterladen"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6153,13 +6153,13 @@ msgctxt ""
msgid "Open File"
msgstr "Datei öffnen"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6188,60 +6188,60 @@ msgstr "Check-in-Zeit: %1"
msgid "Check-out time: %1"
msgstr "Check-out-Zeit: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Bild anzeigen"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Zu KDE-Itinerary senden"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Vorschau entfernen"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Vorschau verkleinern"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Vorschau vergrößern"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Adressvorschau wird geladen"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Extern öffnen"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Basierend auf der Stimme von %1 Nutzer"
msgstr[1] "Basierend auf Stimmen von %1 Nutzern"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Beendet)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6254,7 +6254,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Zuletzt gelesen: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6275,24 +6275,24 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Video anzeigen"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Lautstärke"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximieren"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-09-20 13:25+0300\n"
"Last-Translator: Antonis Geralis <capoiosct@gmail.com>\n"
"Language-Team: Greek <kde-i18n-el@kde.org>\n"
@@ -1111,7 +1111,7 @@ msgstr "Η εγγραφή είναι απενεργοποιημένη σε αυ
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Φορτώνει"
@@ -1142,7 +1142,7 @@ msgid "Loading…"
msgstr "Φορτώνει…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1796,7 +1796,7 @@ msgstr "Χωρίς εμότζι"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading reply"
@@ -2066,7 +2066,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 σε προσκάλεσε σε μία αίθουσα"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, fuzzy, kde-format
#| msgid "Contact your matrix server administrator for support."
msgid ""
@@ -2074,18 +2074,18 @@ msgid ""
"for support."
msgstr "Επικοινωνήστε με τον διαχειριστή του διακομιστή matrix για υποστήριξη."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Δεν έχει ρυθμιστεί διακομιστής ταυτότητας"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Αποτυχία δημιουργίας αίθουσας: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
msgid "Space creation failed: %1"
@@ -6163,171 +6163,171 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Διαμοιρασμός"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Αφαίρεση"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Ολοκλήρωση"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Ακύρωση"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Confirm new display name"
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Επιβεβαίωση νέου ονόματος"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Members"
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Μέλη"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, fuzzy, kde-format
#| msgid "Send a message…"
msgid "We've sent you a text message"
msgstr "Αποστολή μηνύματος…"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, fuzzy, kde-format
#| msgid "The entered text is not a valid url"
msgid "The entered email is not valid"
msgstr "Το δοσμένο κείμενο δεν είναι έγκυρο url"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, fuzzy, kde-format
#| msgid "The entered text is not a valid url"
msgid "The entered phone number is not valid"
msgstr "Το δοσμένο κείμενο δεν είναι έγκυρο url"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, fuzzy, kde-format
#| msgid "Wrong password entered"
msgid "Incorrect password entered"
msgstr "Δόθηκε λάθος κωδικός πρόσβασης"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Προσθήκη"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Πίσω"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, fuzzy, kde-format
#| msgid "withdrew %1's invitation"
msgid "%1 started a user verification"
msgstr "απόσυρε την πρόσκληση για %1"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "Confirm"
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Επιβεβαίωση"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "No results found"
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Δεν βρέθηκαν αποτελέσματα"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Copy Address to Clipboard"
msgid "Copy to clipboard"
msgstr "Αντιγραφή διεύθυνσης στο πρόχειρο"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr ""
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6336,20 +6336,20 @@ msgstr ""
"Το μήνυμα αυτό είναι κρυπτογραφημένο και ο αποστολέας δεν έχει μοιραστεί το "
"κλειδί με τη συσκευή αυτή."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Λήψη"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6357,13 +6357,13 @@ msgctxt ""
msgid "Open File"
msgstr "Άνοιγμα αρχείου"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6392,61 +6392,61 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, fuzzy, kde-format
#| msgid "Change the room name"
msgctxt "@action:button"
msgid "Show Image"
msgstr "Άλλαξε το όνομα της αίθουσας"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Αφαίρεση προεπισκόπησης"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr ""
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr ""
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Άνοιγμα εξωτερικά"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Με βάση τις ψήφους %1 χρήστη"
msgstr[1] "Με βάση τις ψήφους %1 χρηστών"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Τερματίστηκε)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6459,7 +6459,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Τελευταία ανάγνωση: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6478,25 +6478,25 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Βίντεο"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, fuzzy, kde-format
#| msgid "Video"
msgctxt "@action:button"
msgid "Show Video"
msgstr "Βίντεο"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr ""
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr ""

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-11-23 12:05+0000\n"
"Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n"
"Language-Team: British English\n"
@@ -1058,7 +1058,7 @@ msgstr "Registration is disabled on this server."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Loading"
@@ -1090,7 +1090,7 @@ msgid "Loading…"
msgstr "Loading…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1724,7 +1724,7 @@ msgstr "Own Emojis"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Loading reply"
@@ -1982,7 +1982,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 invited you to a room"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1991,18 +1991,18 @@ msgstr ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "No identity server configured"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Room creation failed: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Space creation failed: %1"
@@ -5985,87 +5985,87 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Hide"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Share"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Remove"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Complete"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Cancel"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Country Code for new phone number"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "New Email Address:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "New Phone Number:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "We have sent you an email"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "We have sent you a text message"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
"%1. Please follow the instructions there and then click the button below"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "The entered email is not valid"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "The entered phone number is not valid"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Incorrect password entered"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6074,7 +6074,7 @@ msgstr ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6083,72 +6083,72 @@ msgstr ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Add"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Back"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
"%1. Please follow the instructions there and then click the button above"
#: src/threepidbindhelper.cpp:183
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 started a user verification"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Confirm edit"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Post message in thread"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Copy to clipboard"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximise"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6157,20 +6157,20 @@ msgstr ""
"This message is encrypted and the sender has not shared the key with this "
"device."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Download"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6178,13 +6178,13 @@ msgctxt ""
msgid "Open File"
msgstr "Open File"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6213,60 +6213,60 @@ msgstr "Check-in time: %1"
msgid "Check-out time: %1"
msgstr "Check-out time: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Show Image"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Send to KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Remove preview"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Shrink preview"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Expand preview"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Loading URL preview"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Open Externally"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Based on votes by %1 user"
msgstr[1] "Based on votes by %1 users"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Ended)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6279,7 +6279,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Last read: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6301,24 +6301,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "Pl. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Show Video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Volume"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximise"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-01 17:55+0100\n"
"Last-Translator: Oliver Kellogg <olivermkellogg@gmail.com>\n"
"Language-Team: Esperanto <kde-i18n-eo@kde.org>\n"
@@ -1038,7 +1038,7 @@ msgstr "Registrado estas malŝaltita ĉe ĉi tiu servilo."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Ŝargante"
@@ -1070,7 +1070,7 @@ msgid "Loading…"
msgstr "Ŝargante…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1701,7 +1701,7 @@ msgstr "Propraj Emoĝioj"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Ŝargante respondon"
@@ -1961,7 +1961,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 invitis vin al ĉambro"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1970,18 +1970,18 @@ msgstr ""
"Dosiero tro granda por elŝuti.<br />Kontaktu vian administranton de matrix-"
"servilo por subteno."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Agordiĝis neniu identeca servilo"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Kreado de ĉambro malsukcesis: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Spackreado malsukcesis: %1"
@@ -5854,86 +5854,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Elekti Parametron Aldonendan"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Kaŝi"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Kunhavigi"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Forigi"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Kompletigi"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Nuligi"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Landkodo por nova telefonnumero"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Nova Retpoŝta Adreso:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Nova Telefonnumero:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Ni sendis al vi retpoŝton"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Ni sendis al vi tekstmesaĝon"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. Bonvolu sekvi la instruojn tie kaj poste klaki la butonon malsupre"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "La enigita retpoŝto ne estas valida"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "La enigita telefonnumero ne estas valida"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Malĝusta pasvorto enigita"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5942,7 +5942,7 @@ msgstr ""
"La retpoŝto ne estis konfirmita. Bonvolu iri al la retpoŝto kaj sekvi la "
"instruojn tie kaj poste klaki la butonon malsupre"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5951,25 +5951,25 @@ msgstr ""
"La telefonnumero ne estis konfirmita. Bonvolu iri al la retpoŝto kaj sekvi "
"la instruojn tie kaj poste klaki la butonon malsupre"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Aldoni"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Reen"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. Bonvolu sekvi la instruojn tie kaj poste klaki la butonon supre"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5978,7 +5978,7 @@ msgstr ""
"La retpoŝto ne estis konfirmita. Bonvolu iri al la retpoŝto kaj sekvi la "
"instruojn tie kaj poste klaki la butonon supre"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5987,35 +5987,35 @@ msgstr ""
"La telefonnumero ne estis konfirmita. Bonvolu iri al la retpoŝto kaj sekvi "
"la instruojn tie kaj poste klaki la butonon supre"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 komencis uzant-konfirmon"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Konfirmi redakton"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Afiŝi mesaĝon en fadeno"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Kopii al tondujo"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maksimumigi"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6024,20 +6024,20 @@ msgstr ""
"Ĉi tiu mesaĝo estas ĉifrita kaj la sendinto ne dividis la ŝlosilon kun ĉi "
"tiu aparato."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Alpreni Pliajn Eventojn"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Elŝutu"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6045,13 +6045,13 @@ msgctxt ""
msgid "Open File"
msgstr "Malfermu Dosieron"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6080,60 +6080,60 @@ msgstr "Enregistriĝotempo: %1"
msgid "Check-out time: %1"
msgstr "Tempo de eliro: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Montri Bildon"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Sendi al KDE-Itinero"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Forigi antaŭrigardon"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Malgrandigi antaŭrigardon"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Vastigi antaŭrigardon"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Ŝargante antaŭrigardon de URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Malfermi Ekstere"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Bazita sur voĉdonoj de %1 uzanto"
msgstr[1] "Bazita sur voĉdonoj de %1 uzantoj"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Finis)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6145,7 +6145,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Lasta legado: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6166,24 +6166,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "Pl. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Montri Video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Laŭteco"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maksimumigi"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-06 20:24+0100\n"
"Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n"
"Language-Team: Spanish <kde-l10n-es@kde.org>\n"
@@ -1042,7 +1042,7 @@ msgstr "El registro está desactivado en este servidor."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Cargando"
@@ -1074,7 +1074,7 @@ msgid "Loading…"
msgstr "Cargando…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1707,7 +1707,7 @@ msgstr "Emojis propios"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Cargando respuesta"
@@ -1967,7 +1967,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 le ha invitado"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1976,18 +1976,18 @@ msgstr ""
"Archivo demasiado grande para descargarlo.<br />Póngase en contacto con el "
"administrador del servidor matrix para obtener asistencia."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "No se ha configurado ningún servidor de identidades"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "La creación de la sala ha fallado: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "La creación del espacio ha fallado: %1"
@@ -5901,86 +5901,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Seleccionar el parámetro que se añadirá"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Ocultar"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Compartir"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Eliminar"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Completar"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Cancelar"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Código de país para el nuevo número de teléfono"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Nueva dirección de correo electrónico:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Nuevo número de teléfono:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Le hemos enviado un mensaje de correo"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Le hemos enviado un mensaje de texto"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. Siga las instrucciones del mismo y pulse el botón inferior."
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "El correo electrónico introducido no es válido"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "El número de teléfono introducido no es válido"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Se ha introducido una contraseña incorrecta"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5989,7 +5989,7 @@ msgstr ""
"El correo electrónico no ha sido verificado. Vaya al mensaje de correo, siga "
"las instrucciones que contiene y pulse el botón inferior."
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5998,25 +5998,25 @@ msgstr ""
"El número de teléfono no ha sido verificado. Vaya al mensaje de texto, siga "
"las instrucciones que contiene y pulse el botón inferior."
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Añadir"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Volver"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. Siga las instrucciones del mismo y pulse el botón superior."
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6025,7 +6025,7 @@ msgstr ""
"El correo electrónico no ha sido verificado. Vaya al mensaje de correo, siga "
"las instrucciones que contiene y pulse el botón superior."
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6034,35 +6034,35 @@ msgstr ""
"El número de teléfono no ha sido verificado. Vaya al mensaje de texto, siga "
"las instrucciones que contiene y pulse el botón superior."
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 ha iniciado una verificación de usuario"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Confirmar edición"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Publicar mensaje en el hilo"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Copiar en el portapapeles"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximizar"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6071,20 +6071,20 @@ msgstr ""
"Este mensaje está cifrado y el remitente no ha compartido la clave con este "
"dispositivo."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Obtener más eventos"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Descargar"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6092,13 +6092,13 @@ msgctxt ""
msgid "Open File"
msgstr "Abrir archivo"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6127,60 +6127,60 @@ msgstr "Hora de entrada: %1"
msgid "Check-out time: %1"
msgstr "Hora de salida: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Mostrar imagen"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Enviar a KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Eliminar vista previa"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Encoger vista previa"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Expandir vista previa"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Cargando vista previa de URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Abrir externamente"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Según los votos de %1 usuario"
msgstr[1] "Según los votos de %1 usuarios"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Finalizada)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6192,7 +6192,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Última lectura: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6213,24 +6213,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "Andén %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Vídeo"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Mostrar vídeo"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Volumen"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximizar"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-02-10 18:39+0100\n"
"Last-Translator: Iñigo Salvador Azurmendi <xalba@ni.eus>\n"
"Language-Team: Basque <kde-i18n-eu@kde.org>\n"
@@ -1041,7 +1041,7 @@ msgstr "Erregistratzea ezgaituta dago zerbitzari horretan."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Zamatzen..."
@@ -1073,7 +1073,7 @@ msgid "Loading…"
msgstr "Zamatzen..."
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1706,7 +1706,7 @@ msgstr "Emoji propioak"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Erantzuna zamatzen"
@@ -1963,7 +1963,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1(e)k gela batera gonbidatu zaitu"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1972,18 +1972,18 @@ msgstr ""
"Zama-jaisteko fitxategi handiegia.<br />Jar zaitez zure matrix "
"zerbitzariaren administratzailearekin harremanean, laguntza lortzeko."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Ez da nortasun zerbitzaririk konfiguratu"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Gela sortzea huts egin du: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Tokia sortzea huts egin du: %1"
@@ -5887,87 +5887,87 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Hautatu gehitu beharreko parametroa"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Ezkutatu"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Partekatu"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Kendu"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Osatu"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Utzi"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Telefono-zenbaki berrirako herrialde-kodea"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "E-posta helbide berria:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Telefono-zenbaki berria:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "E-posta bat bidali dizugu"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Testu-mezu bat bidali dizugu"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
"%1. Mesedez, jarraitu han dauden jarraibideak eta egin klik beheko botoian"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "Sartutako e-postak ez du balio"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Sartutako telefono-zenbakiak ez du balio"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Pasahitz okerra sartu da"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5976,7 +5976,7 @@ msgstr ""
"E-posta ez da egiaztatu. Mesedez, joan e-postara, jarraitu hango "
"jarraibideak eta egin klik beheko botoian"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5985,26 +5985,26 @@ msgstr ""
"Telefono-zenbaki ez da egiaztatu. Mesedez, joan testu-mezura, jarraitu hango "
"jarraibideak eta egin klik beheko botoian"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Gehitu"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Atzera"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
"%1. Mesedez, jarraitu han dauden jarraibideak eta egin klik beheko botoian"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6013,7 +6013,7 @@ msgstr ""
"E-posta ez da egiaztatu. Mesedez, joan e-postara, jarraitu hango "
"jarraibideak eta egin klik goiko botoian"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6022,35 +6022,35 @@ msgstr ""
"Telefono-zenbaki ez da egiaztatu. Mesedez, joan testu-mezura, jarraitu hango "
"jarraibideak eta egin klik goiko botoian"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1(e)k erabiltzaile egiaztapen bat abiatu du"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Berretsi editatutakoa"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Bidali mezua harian"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Kopiatu arbelera"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximizatu"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6058,20 +6058,20 @@ msgid ""
msgstr ""
"Mezu hori zifratuta dago eta igorleak ez du gakoa gailu honekin partekatu."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Eskuratu gertaera gehiago"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Zama-jaitsi"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6079,13 +6079,13 @@ msgctxt ""
msgid "Open File"
msgstr "Ireki fitxategia"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6114,60 +6114,60 @@ msgstr "Izen-emate ordua: %1"
msgid "Check-out time: %1"
msgstr "Ordaindu eta irtete ordua: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Erakutsi irudia"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Bidali KDE «Itinerary»ra"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Kendu aurreikuspegia"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Txikiagotu aurreikuspegia"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Zabaldu aurreikuspegia"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "URLaren aurreikuspegia zamatzen"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Ireki kanpotik"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Erabiltzaile %1(e)n bozkan oinarritua"
msgstr[1] "%1 erabiltzaileren bozkatan oinarritua"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Amaituta)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6179,7 +6179,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Azken irakurketa: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6200,24 +6200,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "%1 Na."
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Bideoa"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Erakutsi bideoa"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Bolumena"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximizatu"

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"PO-Revision-Date: 2025-01-28 18:09+0200\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-02-14 19:43+0200\n"
"Last-Translator: Tommi Nieminen <translator@legisign.org>\n"
"Language-Team: Finnish <kde-i18n-doc@kde.org>\n"
"Language: fi\n"
@@ -1036,7 +1036,7 @@ msgstr "Palvelin on poistanut rekisteröitymisen käytöstä."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Ladataan"
@@ -1066,7 +1066,7 @@ msgid "Loading…"
msgstr "Ladataan…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1696,7 +1696,7 @@ msgstr "Omat emojit"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Ladataan vastausta"
@@ -1955,7 +1955,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 kutsui sinut huoneeseen"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1964,18 +1964,18 @@ msgstr ""
"Tiedosto on liian suuri ladata.<br />Pyydä apua Matrix-palvelimesi "
"ylläpidolta."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Henkilöyspalvelinta ei ole määritetty"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Huoneen luominen epäonnistui: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Tilan luominen epäonnistui: %1"
@@ -2013,10 +2013,9 @@ msgid "Reply"
msgstr "Vastaa"
#: src/notificationsmanager.cpp:246
#, fuzzy, kde-format
#| msgid "Reply"
#, kde-format
msgid "Reply…"
msgstr "Vastaa"
msgstr "Vastaa"
#: src/notificationsmanager.cpp:305
#, kde-format
@@ -2226,13 +2225,13 @@ msgstr "Salasana"
#, kde-format
msgctxt "@label:checkbox"
msgid "Erase Data"
msgstr ""
msgstr "Pyyhi tiedot"
#: src/qml/ConfirmDeactivateAccountDialog.qml:34
#, kde-format
msgctxt "@info"
msgid "Request your server to delete as much user data as possible."
msgstr ""
msgstr "Pyydä palvelinta poistamaan käyttäjätietojasi mahdollisimman paljon."
#: src/qml/ConfirmDeactivateAccountDialog.qml:43
#, kde-format
@@ -2759,8 +2758,7 @@ msgid "Configure NeoChat…"
msgstr "NeoChatin asetukset…"
#: src/qml/GlobalMenu.qml:25
#, fuzzy, kde-format
#| msgid "Configure NeoChat…"
#, kde-format
msgctxt "menu"
msgid "Configure NeoChat…"
msgstr "NeoChatin asetukset…"
@@ -3056,18 +3054,16 @@ msgid "Successfully verified device **%1**"
msgstr "Laitteen **%1** vahvistaminen onnistui"
#: src/qml/KeyVerificationDialog.qml:161
#, fuzzy, kde-format
#| msgid "The session verification timed out."
#, kde-format
msgctxt "@info"
msgid "Choose a verification method to continue"
msgstr "Istunnon vahvistaminen aikakatkaistiin."
msgstr "Jatka valitsemalla todennustapa"
#: src/qml/KeyVerificationDialog.qml:165
#, fuzzy, kde-format
#| msgid "Emoji Verification"
#, kde-format
msgctxt "@action:button"
msgid "Emoji Verification"
msgstr "Emojin vahvistaminen"
msgstr "Emoji-todennus"
#: src/qml/LocationChooser.qml:22
#, kde-format
@@ -3210,10 +3206,9 @@ msgid "Search for '%1'"
msgstr "Etsi: ”%1”"
#: src/qml/MessageDelegateContextMenu.qml:128
#, fuzzy, kde-format
#| msgid "Configure Web Shortcuts..."
#, kde-format
msgid "Configure Web Shortcuts…"
msgstr "WWW-pikavalintojen asetukset…"
msgstr "Verkkopikavalintojen asetukset…"
#: src/qml/MessageSourceSheet.qml:46
#, kde-format
@@ -3493,18 +3488,16 @@ msgid "Show locations for this room"
msgstr "Näytä sijainnit tälle huoneelle"
#: src/qml/RoomInformation.qml:137
#, fuzzy, kde-format
#| msgid "Find messages…"
#, kde-format
msgctxt "@action:button"
msgid "Pinned messages"
msgstr "Etsi viestejä…"
msgstr "Kiinnitetyt viestit"
#: src/qml/RoomInformation.qml:146 src/qml/RoomPinnedMessagesPage.qml:23
#, fuzzy, kde-format
#| msgid "Direct Messages"
#, kde-format
msgctxt "@title"
msgid "Pinned Messages"
msgstr "Suoraviestit"
msgstr "Kiinnitetyt viestit"
#: src/qml/RoomInformation.qml:154 src/qml/SpaceHomePage.qml:65
#, kde-format
@@ -3604,12 +3597,10 @@ msgid "Message Source"
msgstr "Viestin lähde"
#: src/qml/RoomPinnedMessagesPage.qml:46
#, fuzzy, kde-format
#| msgctxt "@title"
#| msgid "Forward Message"
#, kde-format
msgctxt "@info:placeholder"
msgid "No Pinned Messages"
msgstr "Edennä viesti"
msgstr "Ei kiinnitettyjä viestejä"
#: src/qml/RoomSearchPage.qml:26
#, kde-format
@@ -3889,11 +3880,10 @@ msgid "Load your encrypted messages"
msgstr "Lataa salatut viestisi"
#: src/qml/UnlockSSSSDialog.qml:38
#, fuzzy, kde-format
#| msgid "Encryption key"
#, kde-format
msgctxt "@info:status"
msgid "Encryption keys restored."
msgstr "Salausavain"
msgstr "Salausavaimet palautettu."
#: src/qml/UnlockSSSSDialog.qml:50
#, kde-format
@@ -3980,14 +3970,12 @@ msgid "Account Details"
msgstr "Tilin tiedot"
#: src/qml/UserDetailDialog.qml:83
#, fuzzy, kde-format
#| msgctxt "Notification type"
#| msgid "Invites to a room"
#, kde-format
msgctxt "@info"
msgid "One mutual room"
msgid_plural "%1 mutual rooms"
msgstr[0] "Kutsut huoneeseen"
msgstr[1] "Kutsut huoneeseen"
msgstr[0] "Yksi yhteinen huone"
msgstr[1] "%1 yhteistä huonetta"
#: src/qml/UserDetailDialog.qml:136
#, kde-format
@@ -4431,36 +4419,31 @@ msgid "Password"
msgstr "Salasana"
#: src/settings/AccountEditorPage.qml:159
#, fuzzy, kde-format
#| msgid "Your server doesn't support changing your password"
#, kde-format
msgctxt "@info"
msgid "Your server doesn't support changing your password"
msgstr "Palvelimesi ei tue salasanan vaihtamista"
msgstr "Palvelin ei tue salasanan vaihtamista"
#: src/settings/AccountEditorPage.qml:166
#, fuzzy, kde-format
#| msgid "Current Password:"
#, kde-format
msgctxt "@label:textbox"
msgid "Current Password:"
msgstr "Nykyinen salasana:"
#: src/settings/AccountEditorPage.qml:173
#, fuzzy, kde-format
#| msgid "New Password:"
#, kde-format
msgctxt "@label:textbox"
msgid "New Password:"
msgstr "Uusi salasana:"
#: src/settings/AccountEditorPage.qml:180
#, fuzzy, kde-format
#| msgid "Confirm new Password:"
#, kde-format
msgctxt "@label:textbox"
msgid "Confirm new Password:"
msgstr "Vahvista uusi salasana:"
#: src/settings/AccountEditorPage.qml:185
#, fuzzy, kde-format
#| msgid "Passwords don't match"
#, kde-format
msgctxt "@info"
msgid "Passwords don't match"
msgstr "Salasanat eivät täsmää"
@@ -4506,23 +4489,19 @@ msgid "Deactivate Account"
msgstr "Passivoi tili"
#: src/settings/AccountEditorPage.qml:272
#, fuzzy, kde-format
#| msgid "Password changed successfully"
#, kde-format
msgctxt "@info"
msgid "Password changed successfully"
msgstr "Salasanan vaihto onnistui"
#: src/settings/AccountEditorPage.qml:275
#, fuzzy, kde-format
#| msgctxt "@info"
#| msgid "Invalid passphrase"
#, kde-format
msgctxt "@info"
msgid "Invalid password"
msgstr "Virheellinen salasana"
#: src/settings/AccountEditorPage.qml:278
#, fuzzy, kde-format
#| msgid "Unknown problem while trying to change password"
#, kde-format
msgctxt "@info"
msgid "Unknown problem while trying to change password"
msgstr "Tuntematon ongelma yritettäessä vaihtaa salasanaa"
@@ -5222,7 +5201,7 @@ msgstr "Palvelin ei tue tätä asetusta."
#, kde-format
msgctxt "@option:check"
msgid "Turn on encryption in new chats"
msgstr ""
msgstr "Käytä uusiin keskusteluihin salausta"
#: src/settings/NeoChatSecurityPage.qml:75
#, kde-format
@@ -5230,6 +5209,7 @@ msgctxt "@info"
msgid ""
"If enabled, NeoChat will use encryption when starting new direct messages."
msgstr ""
"Jos käytössä, NeoChat käyttää salausta aloitettaessa uusia suoraviestejä."
#: src/settings/NeoChatSecurityPage.qml:85
#, kde-format
@@ -5649,28 +5629,25 @@ msgstr "Valitse uusi versio"
#, kde-format
msgctxt "@info"
msgid "Customize your profile only for this room."
msgstr ""
msgstr "Mukauta profiiliasi vain tälle huoneelle."
#: src/settings/RoomProfile.qml:38
#, fuzzy, kde-format
#| msgid "Display Name:"
#, kde-format
msgctxt "@label:textbox"
msgid "Display Name"
msgstr "Näyttönimi:"
msgstr "Näyttönimi"
#: src/settings/RoomProfile.qml:48
#, fuzzy, kde-format
#| msgid "Save"
#, kde-format
msgctxt "@action:button Save profile"
msgid "Save"
msgstr "Tallenna"
#: src/settings/RoomProfile.qml:54
#, fuzzy, kde-format
#| msgid "System Default"
#, kde-format
msgctxt "@action:button"
msgid "Reset to Default"
msgstr "Järjestelmän oletus"
msgstr "Palauta oletukseksi"
#: src/settings/RoomSecurityPage.qml:20
#, kde-format
@@ -5832,11 +5809,10 @@ msgid "Permissions"
msgstr "Käyttöoikeudet"
#: src/settings/RoomSettingsView.qml:84
#, fuzzy, kde-format
#| msgid "a file"
#, kde-format
msgctxt "@title"
msgid "Profile"
msgstr "tiedosto"
msgstr "Profiili"
#: src/settings/RoomSortParameterDialog.qml:16
#, kde-format
@@ -5880,86 +5856,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Valitse lisättävä parametri"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Piilota"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Jaa"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Poista"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Valmis"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Peru"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Uuden puhelinnumeron maakoodi"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Uusi sähköpostiosoite:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Uusi puhelinnumero:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Sinulle on lähetetty sähköpostia"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Sinulle on lähetetty tekstiviesti"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. Seuraa annettuja ohjeita ja napsauta sitten alla olevaa painiketta"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "Annettu sähköpostiosoite ei ole kelvollinen"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Annettu puhelinnumero ei ole kelvollinen"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Annettiin väärä salasana"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5968,7 +5944,7 @@ msgstr ""
"Sähköpostiosoitetta ei ole vahvistettu. Siirry viestiin, seuraa sen ohjeita "
"ja napsauta sitten alla olevaa painiketta"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5977,25 +5953,25 @@ msgstr ""
"Puhelinnumeroa ei ole vahvistettu. Siirry tekstiviestiin, noudata sen "
"ohjeita ja napsauta sitten alla olevaa painiketta"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Lisää"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Takaisin"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. Seuraa annettuja ohjeita ja napsauta sitten alla olevaa painiketta"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6004,7 +5980,7 @@ msgstr ""
"Sähköpostiosoitetta ei ole vahvistettu. Siirry viestiin, seuraa sen ohjeita "
"ja napsauta sitten alla olevaa painiketta"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6013,35 +5989,35 @@ msgstr ""
"Puhelinnumeroa ei ole vahvistettu. Siirry tekstiviestiin, noudata sen "
"ohjeita ja napsauta sitten alla olevaa painiketta"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 käynnisti käyttäjän vahvistuksen"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Vahvista muokkaus"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Lähetä viesti säikeeseen"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Kopioi leikepöydälle"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Suurenna"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6049,20 +6025,20 @@ msgid ""
msgstr ""
"Tämä viesti on salattu, eikä lähettäjä ole jakanut avainta tälle laitteelle."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
msgstr "Nouda lisää tapahtumia"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Lataa"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6070,13 +6046,13 @@ msgctxt ""
msgid "Open File"
msgstr "Avaa tiedosto"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6105,62 +6081,61 @@ msgstr "Sisäänkirjautumisaika: %1"
msgid "Check-out time: %1"
msgstr "Uloskirjautumisaika: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Näytä kuva"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Lähetä KDE Itineraryyn"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Poista esikatselu"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Pienennä esikatselua"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Suurenna esikatselua"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Ladataan verkko-osoitteen esikatselua"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Avaa ulkoisesti"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Perustuu 1 käyttäjän ääniin"
msgstr[1] "Perustuu %1 käyttäjän ääniin"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(päättynyt)"
#: src/timeline/ReactionComponent.qml:97
#, fuzzy, kde-format
#| msgid "React"
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
msgstr "Reagoi"
@@ -6171,7 +6146,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Viimeksi luettu: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6190,24 +6165,24 @@ msgstr "Tämä on keskustelun alku. Tästä edemmäs keskusteluhistoriaa ei ole.
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Näytä video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Äänenvoimakkuus"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Suurenna"

View File

@@ -4,8 +4,8 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"PO-Revision-Date: 2025-03-01 09:51+0100\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-07 12:00+0100\n"
"Last-Translator: Xavier Besnard <xavier.besnard@kde.org>\n"
"Language-Team: French <French <kde-francophone@kde.org>>\n"
"Language: fr\n"
@@ -1041,7 +1041,7 @@ msgstr "L'enregistrement est désactivé sur ce serveur."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Chargement..."
@@ -1073,7 +1073,7 @@ msgid "Loading…"
msgstr "Chargement..."
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1709,7 +1709,7 @@ msgstr "Émoticônes personnelles"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Chargement de la réponse..."
@@ -1969,7 +1969,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 vous a invité"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1978,18 +1978,18 @@ msgstr ""
"Fichier trop volumineux pour être téléchargé.<br />Veuillez contact votre "
"administrateur du serveur « Matrix » pour de l'aide."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Aucun serveur d'identité n'a été configuré."
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Impossible de créer le salon : %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Impossible de créer un espace : %1"
@@ -2129,13 +2129,15 @@ msgstr "Vérifier ce périphérique"
#, kde-format
msgctxt "@title"
msgid "Verification Request Sent"
msgstr ""
msgstr "Demande de vérification envoyée"
#: src/qml/AccountMenu.qml:94
#, kde-format
msgctxt "@info:label"
msgid "To proceed, accept the verification request on another device."
msgstr ""
"Pour continuer, veuillez accepter la demande de vérification sur un autre "
"périphérique."
#: src/qml/AccountMenu.qml:106 src/settings/AccountsPage.qml:88
#, kde-format
@@ -5925,65 +5927,65 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Sélectionner le paramètre à ajouter"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Masquer"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Partager"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Supprimer"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Terminer"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Annuler"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Code international pour le nouveau numéro de téléphone"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Nouvelle adresse de courriel :"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Nouveau numéro de téléphone :"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Nous vous avons envoyé un courriel."
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Nous vous avons envoyé un message de texte"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
@@ -5991,22 +5993,22 @@ msgstr ""
"%1. Veuillez suivre les instructions proposées là et ensuite cliquer sur le "
"bouton ci-dessous."
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "L'adresse de courriel saisie est non valable."
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Le numéro de téléphone saisi est non valable."
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Le mot de passe saisi est incorrect."
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6016,7 +6018,7 @@ msgstr ""
"suivre les instructions proposées ici et ensuite cliquer sur le bouton ci-"
"dessous."
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6026,19 +6028,19 @@ msgstr ""
"texte, suivre les instructions proposées ici et ensuite cliquer sur le "
"bouton ci-dessous."
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Ajouter"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Revenir en arrière"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
@@ -6046,7 +6048,7 @@ msgstr ""
"%1. Veuillez suivre les instructions proposées là et ensuite cliquer sur le "
"bouton ci-dessus."
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6055,7 +6057,7 @@ msgstr ""
"Le courriel n'a pas été vérifié. Veuillez aller sur celui-ci, suivre les "
"instructions proposées là et enfin cliquer sur le bouton ci-dessus."
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6065,35 +6067,35 @@ msgstr ""
"texte, suivre les instructions proposées ici et ensuite cliquer sur le "
"bouton ci-dessus."
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 a démarré une vérification d'utilisateurs"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Confirmer une modification"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Publier un message dans un fil de discussions"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Copier dans le presse-papier"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximiser"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6102,20 +6104,20 @@ msgstr ""
"Le message est chiffré et l'émetteur n'a pas partagé la clé avec ce "
"périphérique."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Rechercher plus d'évènements"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Télécharger"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6123,13 +6125,13 @@ msgctxt ""
msgid "Open File"
msgstr "Ouvrir un fichier"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6158,60 +6160,60 @@ msgstr "Heure d'arrivée : %1"
msgid "Check-out time: %1"
msgstr "Heure de départ : %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Afficher une image"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Envoyer vers KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Supprimer un aperçu"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Réduire l'aperçu"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Développer l'aperçu"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Chargement d'un aperçu de l'URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Ouvrir de façon externe"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Selon les votes de l'utilisateur %1"
msgstr[1] "Selon les votes de %1 utilisateurs"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Terminé)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6223,7 +6225,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Dernier lu : %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6244,24 +6246,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "Place %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Vidéo"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Afficher une vidéo"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Volume"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximiser"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-01 08:34+0100\n"
"Last-Translator: Adrián Chaves (Gallaecio) <adrian@chaves.gal>\n"
"Language-Team: Proxecto Trasno (proxecto@trasno.gal)\n"
@@ -1037,7 +1037,7 @@ msgstr "Este servidor desactivou o rexistro."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Cargando"
@@ -1067,7 +1067,7 @@ msgid "Loading…"
msgstr "Cargando…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1698,7 +1698,7 @@ msgstr "Expresións personalizadas"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Cargando a resposta"
@@ -1959,7 +1959,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 convidoulle."
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1968,18 +1968,18 @@ msgstr ""
"O ficheiro é grande de máis para descargar.<br /> Solicite asistencia á "
"administración do seu servidor de Matrix."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Non hai configurado ningún servidor de identidade."
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "A creación da sala fallou: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "A creación do espazo fallou: %1"
@@ -5885,86 +5885,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Seleccione o parámetro para engadir"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Agochar"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Compartir"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Retirar"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Completar"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Cancelar"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Código de país do novo número de teléfono."
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Novo enderezo de correo electrónico:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Novo número de teléfono:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Enviámoslle unha mensaxe de correo electrónico"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Enviámoslle unha mensaxe de texto"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. Siga as instrucións nela e prema o botón embaixo."
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "O enderezo de correo electrónico inserido non é válido."
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "O número de teléfono inserido non é válido."
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "O contrasinal inserido é incorrecto."
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5973,7 +5973,7 @@ msgstr ""
"Non se verificou o enderezo de correo electrónico. Abra o correo, siga as "
"instrucións da mensaxe e prema o botón embaixo."
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5982,25 +5982,25 @@ msgstr ""
"Non se verificou o número de teléfono. Abra a mensaxe de texto e siga as "
"instrucións nela e prema o botón embaixo."
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Engadir"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Atrás"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. Siga as instrucións nela e prema o botón arriba."
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6009,7 +6009,7 @@ msgstr ""
"Non se verificou o enderezo de correo electrónico. Abra o correo, siga as "
"instrucións da mensaxe e prema o botón arriba."
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6018,35 +6018,35 @@ msgstr ""
"Non se verificou o número de teléfono. Abra a mensaxe de texto e siga as "
"instrucións nela e prema o botón arriba."
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 iniciou unha verificación de persoa usuaria"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Confirmar a edición"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Publicar a mensaxe nun fío"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Copiar no portapapeis"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximizar"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6055,20 +6055,20 @@ msgstr ""
"A mensaxe está cifrada e quen a enviou non compartiu a chave con este "
"dispositivo."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Obter máis eventos"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Descargar"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6076,13 +6076,13 @@ msgctxt ""
msgid "Open File"
msgstr "Abrir un ficheiro"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1/%2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6111,60 +6111,60 @@ msgstr "Hora de rexistro: %1"
msgid "Check-out time: %1"
msgstr "Hora de saída: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Amosar a imaxe"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Enviar a KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Retirar a vista previa"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Encoller a vista previa"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Expandir a vista previa"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Cargando a vista previa do URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Abrir externamente"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Cos votos dunha persoa"
msgstr[1] "Cos votos de %1 persoa"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(rematou)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6176,7 +6176,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Última lectura: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6195,24 +6195,24 @@ msgstr "Este é o comezo da conversa. Non hai mensaxes anteriores."
msgid "Pl. %1"
msgstr "Pl. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Vídeo"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Amosar o vídeo"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Volume"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximizar"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-12-15 19:31+0530\n"
"Last-Translator: kali <skkalwar999@gmail.com>\n"
"Language-Team: Hindi <kde-i18n-doc@kde.org>\n"
@@ -1035,7 +1035,7 @@ msgstr "इस सर्वर पर पंजीकरण अक्षम ह
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "लोड हो रहा है"
@@ -1065,7 +1065,7 @@ msgid "Loading…"
msgstr "लोड हो रहा है…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1698,7 +1698,7 @@ msgstr "अपना खुद का इमोजी बनाएं"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "जवाब लोड हो रहा है"
@@ -1957,7 +1957,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 ने आपको एक कमरे में आमंत्रित किया"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1966,18 +1966,18 @@ msgstr ""
"फ़ाइल डाउनलोड करने के लिए बहुत बड़ी है.<br /> सहायता के लिए अपने मैट्रिक्स सर्वर "
"व्यवस्थापक से संपर्क करें।"
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "कोई पहचान सर्वर कॉन्फ़िगर नहीं किया गया"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "कक्ष निर्माण विफल: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "स्थान निर्माण विफल: %1"
@@ -5873,86 +5873,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "छिपाना"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "शेयर करना"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "निकालना"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "पूरा"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "रद्द करना"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "नए फ़ोन नंबर के लिए देश कोड"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "न्यू ईमेल पता:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "नया फ़ोन नंबर:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "हमने आपको एक ईमेल भेजा है"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "हमने आपको एक टेक्स्ट संदेश भेजा है"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. कृपया वहां दिए गए निर्देशों का पालन करें और फिर नीचे दिए गए बटन पर क्लिक करें"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "दर्ज किया गया ईमेल मान्य नहीं है"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "दर्ज किया गया फ़ोन नंबर मान्य नहीं है"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "गलत पासवर्ड दर्ज किया गया"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5961,7 +5961,7 @@ msgstr ""
"ईमेल सत्यापित नहीं किया गया है। कृपया ईमेल पर जाएँ और वहाँ दिए गए निर्देशों का पालन करें "
"और फिर नीचे दिए गए बटन पर क्लिक करें"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5970,25 +5970,25 @@ msgstr ""
"फ़ोन नंबर सत्यापित नहीं किया गया है। कृपया टेक्स्ट संदेश पर जाएँ और वहाँ दिए गए निर्देशों का "
"पालन करें और फिर नीचे दिए गए बटन पर क्लिक करें"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "जोड़ना"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "पीछे"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. कृपया वहां दिए गए निर्देशों का पालन करें और फिर ऊपर दिए गए बटन पर क्लिक करें"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5997,7 +5997,7 @@ msgstr ""
"ईमेल सत्यापित नहीं किया गया है। कृपया ईमेल पर जाएँ और वहाँ दिए गए निर्देशों का पालन करें "
"और फिर ऊपर दिए गए बटन पर क्लिक करें"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6006,55 +6006,55 @@ msgstr ""
"फ़ोन नंबर सत्यापित नहीं किया गया है। कृपया टेक्स्ट संदेश पर जाएँ और वहाँ दिए गए निर्देशों का "
"पालन करें और फिर ऊपर दिए गए बटन पर क्लिक करें"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 ने उपयोगकर्ता सत्यापन शुरू किया"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "संपादन की पुष्टि करें"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "संदेश को थ्रेड में पोस्ट करें"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "क्लिपबोर्ड पर कॉपी करें"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "अधिकतम"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr "यह संदेश एन्क्रिप्टेड है और प्रेषक ने इस डिवाइस के साथ कुंजी साझा नहीं की है।"
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "डाउनलोड करना"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6062,13 +6062,13 @@ msgctxt ""
msgid "Open File"
msgstr "खुली फाइल"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6097,60 +6097,60 @@ msgstr "चेक-इन समय: %1"
msgid "Check-out time: %1"
msgstr "चेक-आउट समय: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "छवि दिखाएं"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "केडीई यात्रा कार्यक्रम को भेजें"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "पूर्वावलोकन हटाएं"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "पूर्वावलोकन सिकोड़ें"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "पूर्वावलोकन विस्तृत करें"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "URL पूर्वावलोकन लोड हो रहा है"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "बाहरी रूप से खोलें"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "%1 उपयोगकर्ताओं के वोटों के आधार पर"
msgstr[1] "%1 उपयोगकर्ताओं के वोटों के आधार पर"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(समाप्त)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6163,7 +6163,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "अंतिम बार पढ़ा गया: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6183,24 +6183,24 @@ msgstr "यह चैट की शुरुआत है। इस बिंद
msgid "Pl. %1"
msgstr "कृपया %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "वीडियो"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "वीडियो दिखाएं"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "आयतन"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "अधिकतम"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-11-13 22:41+0100\n"
"Last-Translator: Kristof Kiszel <ulysses@fsf.hu>\n"
"Language-Team: Hungarian <kde-l10n-hu@kde.org>\n"
@@ -1064,7 +1064,7 @@ msgstr "A regisztráció le van tiltva ezen a kiszolgálón."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Betöltés"
@@ -1096,7 +1096,7 @@ msgid "Loading…"
msgstr "Betöltés…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1732,7 +1732,7 @@ msgstr "Saját emodzsik"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Válasz betöltése"
@@ -1992,7 +1992,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 meghívta Önt egy szobába"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -2001,18 +2001,18 @@ msgstr ""
"A fájl túl nagy a letöltéshez.<br />Támogatásért forduljon a matrix "
"kiszolgáló rendszergazdájához."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Nincs beállítva identitáskiszolgáló"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Nem sikerült létrehozni a szobát: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Nem sikerült létrehozni a teret: %1"
@@ -6024,65 +6024,65 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Elrejtés"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Megosztás"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Eltávolítás"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Befejezés"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Mégse"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Új telefonszám országkódja"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Új e-mail-cím:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Új telefonszám:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Küldtünk Önnek egy e-mailt"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Küldtünk Önnek egy szöveges üzenetet"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
@@ -6090,22 +6090,22 @@ msgstr ""
"%1. Kérjük, kövesse az ott található utasításokat, majd kattintson az alábbi "
"gombra"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "A beírt e-mail-cím érvénytelen"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "A beírt telefonszám érvénytelen"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Helytelen jelszó megadása"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6114,7 +6114,7 @@ msgstr ""
"Az e-mail-cím nincs ellenőrizve. Kérjük, nyissa meg az e-mailt, és kövesse "
"az ott található utasításokat, majd kattintson az alábbi gombra"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6123,19 +6123,19 @@ msgstr ""
"A telefonszám nincs ellenőrizve. Kérjük, nyissa meg a szöveges üzenetet, és "
"kövesse az ott található utasításokat, majd kattintson az alábbi gombra"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Hozzáadás"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Vissza"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
@@ -6143,7 +6143,7 @@ msgstr ""
"%1. Kérjük, kövesse az ott található utasításokat, majd kattintson a fenti "
"gombra"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6152,7 +6152,7 @@ msgstr ""
"Az e-mail-cím nincs ellenőrizve. Kérjük, nyissa meg az e-mailt, és kövesse "
"az ott található utasításokat, majd kattintson a fenti gombra"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6161,35 +6161,35 @@ msgstr ""
"A telefonszám nincs ellenőrizve. Kérjük, nyissa meg a szöveges üzenetet, és "
"kövesse az ott található utasításokat, majd kattintson a fenti gombra"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 elindított egy felhasználóellenőrzést"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Szerkesztés megerősítése"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Üzenet küldése szálban"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Másolás a vágólapra"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximalizálás"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6198,20 +6198,20 @@ msgstr ""
"Ez az üzenet titkosított, és a feladó nem osztotta meg a kulcsot ezzel az "
"eszközzel."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Letöltés"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6219,13 +6219,13 @@ msgctxt ""
msgid "Open File"
msgstr "Fájl megnyitása"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6254,60 +6254,60 @@ msgstr "Bejelentkezés ideje: %1"
msgid "Check-out time: %1"
msgstr "Kijelentkezés ideje: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Kép megjelenítése"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Küldés a KDE Itineraryba"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Előnézet eltávolítása"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Előnézet kicsinyítése"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Előnézet nagyítása"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "URL előnézetének betöltése"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Megnyitás külsőleg"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "%1 felhasználó szavazata alapján"
msgstr[1] "%1 felhasználó szavazata alapján"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Befejeződött)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6320,7 +6320,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Utoljára olvasva: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6340,24 +6340,24 @@ msgstr "Ez a csevegés kezdete. Nincsenek korábbi üzenetek ezen a ponton túl.
msgid "Pl. %1"
msgstr "%1. vágány"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Videó"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Videó megjelenítése"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Hangerő"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximalizálás"

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"PO-Revision-Date: 2025-03-04 15:22+0100\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-11 10:26+0100\n"
"Last-Translator: giovanni <g.sora@tiscali.it>\n"
"Language-Team: Interlingua <kde-i18n-doc@kde.org>\n"
"Language: ia\n"
@@ -1039,7 +1039,7 @@ msgstr "Registration es dishabilitate sur iste servitor."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Cargante"
@@ -1071,7 +1071,7 @@ msgid "Loading…"
msgstr "Cargante..."
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1705,7 +1705,7 @@ msgstr "Proprie Emojis"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Cargante responsa"
@@ -1961,7 +1961,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 invitava te "
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1970,18 +1970,18 @@ msgstr ""
"File troppo grande a discargar.<br />Continge tu administrator de servitor "
"de matrix per supporto."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Nulle servitor de identitate configurate"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Creation de sala falleva: \"%1\""
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Creation de spatio falleva: \"%1\""
@@ -2121,13 +2121,15 @@ msgstr "Verifica iste Dispositivo"
#, kde-format
msgctxt "@title"
msgid "Verification Request Sent"
msgstr ""
msgstr "Requesta de Verification inviate"
#: src/qml/AccountMenu.qml:94
#, kde-format
msgctxt "@info:label"
msgid "To proceed, accept the verification request on another device."
msgstr ""
"Per proceder, tu accepta le requesta de verification sur un altere "
"dispoisitivo."
#: src/qml/AccountMenu.qml:106 src/settings/AccountsPage.qml:88
#, kde-format
@@ -5889,65 +5891,65 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Seliger parametro a adder"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Cela"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Comparti"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Remove"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Complete"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Cancella"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Codice de Pais per nove numero de telephono"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Nove adresse de e-posta:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Nove numero de telephono:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Nos te inviava un message de e-posta"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr " Nos te ha inviate un message de texto"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
@@ -5955,22 +5957,22 @@ msgstr ""
"%1, pro favor tu seque le instructiones illac e postea clicca sur le button "
"a basso"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "Le eposta insertate non es valide"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Le numero de telephono insertate non es valide"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Contrasigno incorrecte insertate"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5979,7 +5981,7 @@ msgstr ""
"Le message de e-posta non ha essite verificate. Pro favor vade al message de "
"e-posta e seque le instructiones illac e postea clicca le button a basso"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5988,19 +5990,19 @@ msgstr ""
"Le numero de telephono non ha essite verificate. Pro favor vade al message "
"de texto e seque le instructiones illac e postea clicca le button a basso"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Adde"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Retro"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
@@ -6008,7 +6010,7 @@ msgstr ""
"%1, pro favor tu seque le instructiones illac e postea clicca sur le button "
"in alto"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6017,7 +6019,7 @@ msgstr ""
"Le message de e-posta non ha essite verificate. Pro favor vade al message de "
"e-posta e seque le instructiones illac e postea clicca le button in alto"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6026,35 +6028,35 @@ msgstr ""
"Le numero de telephono non ha essite verificate. Pro favor vade al message "
"de texto e seque le instructiones illac e postea clicca le button in alto"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 initiava un verification de usator"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Confirma modificar"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Invia (post) Message in topico"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Copia in area de transferentia"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximiza"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6063,20 +6065,20 @@ msgstr ""
"Iste message es cryptate e le mittente non ha compartite le clave con iste "
"dispositivo."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "TRova plus eventos"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Discarga"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6084,13 +6086,13 @@ msgctxt ""
msgid "Open File"
msgstr "Aperi file"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6119,60 +6121,60 @@ msgstr "Tempore de Check-in: %1"
msgid "Check-out time: %1"
msgstr "Tempore de Check-Out: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Monstra imagine"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Invia a KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Remove vista preliminar"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Comprime vista preliminar"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Expande Vista Preliminar"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Cargante vista preliminar de URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Aperi externemente"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Basate sur votos per %1 usator"
msgstr[1] "Basate sur votos per %1 usatores"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(teminate (ended))"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6184,7 +6186,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Ultime legite: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6205,24 +6207,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "Pl. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Monstra Video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Volumine"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximiza"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2023-06-16 19:31+0700\n"
"Last-Translator: Linerly <linerly@protonmail.com>\n"
"Language-Team: Indonesian <kde-i18n-doc@kde.org>\n"
@@ -1126,7 +1126,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading"
@@ -1159,7 +1159,7 @@ msgid "Loading…"
msgstr "Memuat..."
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1813,7 +1813,7 @@ msgstr "Emoji Sendiri"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading reply"
@@ -2146,7 +2146,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 mengundang Anda ke sebuah ruangan"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, fuzzy, kde-format
#| msgid "Contact your matrix server administrator for support."
msgid ""
@@ -2154,18 +2154,18 @@ msgid ""
"for support."
msgstr "Hubungi administrator server Matrix Anda untuk dukungan."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Pembuatan ruangan gagal: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Pembuatan space gagal: %1"
@@ -6339,117 +6339,117 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, fuzzy, kde-format
#| msgid "Share"
msgctxt "@action:button"
msgid "Share"
msgstr "Bagikan"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button"
msgid "Remove"
msgstr "Hapus"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, fuzzy, kde-format
#| msgid "Compact"
msgctxt "@action:button"
msgid "Complete"
msgstr "Kompak"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, fuzzy, kde-format
#| msgid "Cancel"
msgctxt "@action:button"
msgid "Cancel"
msgstr "Batal"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Confirm new display name"
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Konfirmasi nama tampilan baru"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Members"
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Anggota"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, fuzzy, kde-format
#| msgid "sent a message"
msgid "We've sent you a text message"
msgstr "mengirim pesan"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, fuzzy, kde-format
#| msgid "The entered text is not a valid url"
msgid "The entered email is not valid"
msgstr "Teks yang dimasukkan bukan sebuah URL yang valid"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, fuzzy, kde-format
#| msgid "The entered text is not a valid url"
msgid "The entered phone number is not valid"
msgstr "Teks yang dimasukkan bukan sebuah URL yang valid"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, fuzzy, kde-format
#| msgid "Wrong password entered"
msgid "Incorrect password entered"
msgstr "Kata sandi salah"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, fuzzy, kde-format
#| msgid "Add"
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Tambahkan"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Back"
@@ -6457,59 +6457,59 @@ msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Kembali"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, fuzzy, kde-format
#| msgid "withdrew a user's invitation"
msgid "%1 started a user verification"
msgstr "membatalkan undangan pengguna"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Konfirmasi penyuntingan"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "No results found"
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Tidak ada hasil yang ditemukan"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, fuzzy, kde-format
#| msgid "Copy room ID to clipboard"
msgid "Copy to clipboard"
msgstr "Salin ID ruangan ke papan klip"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, fuzzy, kde-format
#| msgid "Maximize"
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maksimalkan"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6517,20 +6517,20 @@ msgid ""
msgstr ""
"Pesan ini terenkripsi dan pengirim belum membagikan kuncinya ke peranti ini."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Unduh"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6538,13 +6538,13 @@ msgctxt ""
msgid "Open File"
msgstr "Buka Berkas"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6573,63 +6573,63 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, fuzzy, kde-format
#| msgid "Set Image"
msgctxt "@action:button"
msgid "Show Image"
msgstr "Tetapkan Gambar"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, fuzzy, kde-format
#| msgid "Remove device"
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Hapus peranti"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Kecilkan pratinjau"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Luaskan pratinjau"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Memuat pratinjau URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, fuzzy, kde-format
#| msgid "Open Externally"
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Buka secara Eksternal"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Berdasarkan pemungutan suara dari %1 pengguna"
msgstr[1] "Berdasarkan pemungutan suara dari %1 pengguna"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Berakhir)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6642,7 +6642,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Terakhir dibaca: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6662,25 +6662,25 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, fuzzy, kde-format
#| msgid "Video"
msgctxt "@action:button"
msgid "Show Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Volume"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maksimalkan"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2022-10-28 19:18+0700\n"
"Last-Translator: OIS <mistresssilvara@hotmail.com>\n"
"Language-Team: kde-i18n-doc@kde.org\n"
@@ -1084,7 +1084,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading"
@@ -1116,7 +1116,7 @@ msgid "Loading…"
msgstr "Cargante..."
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1797,7 +1797,7 @@ msgstr "Converter smileys a emojis"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading reply"
@@ -2090,25 +2090,25 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%s invitat vos a(l) %s"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr ""
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, fuzzy, kde-format
msgid "Room creation failed: %1"
msgstr "Ne successat crear un contextu OpenGL"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, fuzzy, kde-format
msgid "Space creation failed: %1"
msgstr "Ne successat crear un contextu OpenGL"
@@ -6178,112 +6178,112 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, fuzzy, kde-format
#| msgid "Share"
msgctxt "@action:button"
msgid "Share"
msgstr "Partir"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button"
msgid "Remove"
msgstr "Remover"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, fuzzy, kde-format
#| msgid "Compact"
msgctxt "@action:button"
msgid "Complete"
msgstr "Compact"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, fuzzy, kde-format
#| msgid "Cancel"
msgctxt "@action:button"
msgid "Cancel"
msgstr "Anullar"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Visibil nómine"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Members"
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Membres"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, fuzzy, kde-format
msgid "We've sent you a text message"
msgstr "Ne successat inviar un missage D-Bus"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, fuzzy, kde-format
msgid "Incorrect password entered"
msgstr "Contrasigne es ínvalid."
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, fuzzy, kde-format
#| msgid "Add"
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Adjunter"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Back"
@@ -6291,79 +6291,79 @@ msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Retro"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, fuzzy, kde-format
#| msgid "withdrew %1's invitation"
msgid "%1 started a user verification"
msgstr "revocat li invitation de %1"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "Confirm"
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Confirmar"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Chambres"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Copy Address to Clipboard"
msgid "Copy to clipboard"
msgstr "Copiar li adresse al Paperiere"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr ""
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr ""
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Descargar"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6371,13 +6371,13 @@ msgctxt ""
msgid "Open File"
msgstr "Aperter li file"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, fuzzy, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6406,61 +6406,61 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, fuzzy, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Nómine del chambre"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, fuzzy, kde-format
#| msgid "Remove device"
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Remover li aparate"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr ""
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr ""
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, fuzzy, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Aperter _externmen"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] ""
msgstr[1] ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr ""
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6473,7 +6473,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Leet ultimmen: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6493,25 +6493,25 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, fuzzy, kde-format
#| msgid "Video"
msgctxt "@action:button"
msgid "Show Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr ""
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr ""

View File

@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"PO-Revision-Date: 2025-03-01 07:47+0100\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-06 16:43+0100\n"
"Last-Translator: Vincenzo Reale <smart2128vr@gmail.com>\n"
"Language-Team: Italian <kde-i18n-it@kde.org>\n"
"Language: it\n"
@@ -1042,7 +1042,7 @@ msgstr "La registrazione è disabilitata su questo server."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Caricamento"
@@ -1074,7 +1074,7 @@ msgid "Loading…"
msgstr "Caricamento…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1708,7 +1708,7 @@ msgstr "I propri emoji"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Caricamento risposta"
@@ -1968,7 +1968,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 ti ha invitato"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1977,18 +1977,18 @@ msgstr ""
"File troppo grande per essere scaricato.<br />Contatta l'amministratore del "
"server Matrix per assistenza."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Nessun server delle identità configurato"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Creazione della stanza non riuscita: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Creazione dello spazio non riuscita: %1"
@@ -2128,13 +2128,14 @@ msgstr "Verifica questo dispositivo"
#, kde-format
msgctxt "@title"
msgid "Verification Request Sent"
msgstr ""
msgstr "Richiesta di verifica inviata"
#: src/qml/AccountMenu.qml:94
#, kde-format
msgctxt "@info:label"
msgid "To proceed, accept the verification request on another device."
msgstr ""
"Per continuare, accetta la richiesta di verifica su un altro dispositivo."
#: src/qml/AccountMenu.qml:106 src/settings/AccountsPage.qml:88
#, kde-format
@@ -5913,86 +5914,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Seleziona il parametro da aggiungere"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Nascondi"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Condividi"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Rimuovi"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Completata"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Annulla"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Prefisso internazionale per il nuovo numero di telefono"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Nuovo indirizzo di posta:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Nuovo numero di telefono:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Ti abbiamo inviato un messaggio di posta elettronica"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Ti abbiamo inviato un messaggio di testo"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. Segui le istruzioni presenti e poi fai clic sul pulsante qui sotto"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "L'indirizzo di posta digitato non è valido"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Il numero di telefono digitato non è valido"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "È stata digitata una password errata"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6001,7 +6002,7 @@ msgstr ""
"L'indirizzo di posta elettronica non è stato verificato. Vai al messaggio di "
"posta e segui le istruzioni presenti, quindi fai clic sul pulsante in basso"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6010,25 +6011,25 @@ msgstr ""
"Il numero di telefono non è stato verificato. Vai al messaggio di testo e "
"segui le istruzioni presenti, quindi fai clic sul pulsante in basso"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Aggiungi"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Indietro"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. Segui le istruzioni presenti e poi fai clic sul pulsante qui sopra"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6037,7 +6038,7 @@ msgstr ""
"L'indirizzo di posta elettronica non è stato verificato. Vai al messaggio di "
"posta e segui le istruzioni presenti, quindi fai clic sul pulsante in alto"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6046,35 +6047,35 @@ msgstr ""
"Il numero di telefono non è stato verificato. Vai al messaggio di testo e "
"segui le istruzioni presenti, quindi fai clic sul pulsante in alto"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 ha iniziato una verifica utente"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Conferma la modifica"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Pubblica messaggio nella conversazione"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Copia negli appunti"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Massimizza"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6083,20 +6084,20 @@ msgstr ""
"Questo messaggio è cifrato e il mittente non ha condiviso la chiave con "
"questo dispositivo."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Recupera altri eventi"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Scarica"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6104,13 +6105,13 @@ msgctxt ""
msgid "Open File"
msgstr "Apri file"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6139,60 +6140,60 @@ msgstr "Ora di check-in: %1"
msgid "Check-out time: %1"
msgstr "Ora di check-out: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Mostra immagine"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Invia a KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Rimuovi l'anteprima"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Riduci l'anteprima"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Espandi l'anteprima"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Caricamento dell'anteprima dell'URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Apri esternamente"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Basato sui voti di %1 utente"
msgstr[1] "Basato sui voti di %1 utenti"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Terminato)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6204,7 +6205,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Ultima lettura: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6225,24 +6226,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "Bin. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Mostra video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Volume"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Massimizza"

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2020-11-05 23:50-0800\n"
"Last-Translator: Japanese KDE translation team <kde-jp@kde.org>\n"
"Language-Team: Japanese <kde-jp@kde.org>\n"
@@ -1023,7 +1023,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr ""
@@ -1053,7 +1053,7 @@ msgid "Loading…"
msgstr ""
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1683,7 +1683,7 @@ msgstr ""
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr ""
@@ -1932,25 +1932,25 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr ""
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr ""
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr ""
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr ""
@@ -5768,180 +5768,180 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr ""
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr ""
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr ""
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr ""
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr ""
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr ""
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr ""
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr ""
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr ""
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr ""
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr ""
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr ""
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr ""
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -5949,13 +5949,13 @@ msgctxt ""
msgid "Open File"
msgstr ""
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr ""
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -5984,59 +5984,59 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr ""
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr ""
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr ""
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr ""
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6048,7 +6048,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr ""
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6067,24 +6067,24 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr ""
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr ""
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr ""
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr ""

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-06 02:46+0100\n"
"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
"Language-Team: Georgian <kde-i18n-doc@kde.org>\n"
@@ -1038,7 +1038,7 @@ msgstr "ამ სერვერზე რეგისტრაცია გა
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "იტვირთება"
@@ -1070,7 +1070,7 @@ msgid "Loading…"
msgstr "ჩატვირთვა…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1702,7 +1702,7 @@ msgstr "საკუთარი ემოჯიები"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "პასუხის ჩატვირთვა"
@@ -1960,7 +1960,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1-მა მოგიწვიათ"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1969,18 +1969,18 @@ msgstr ""
"გადმოსაწერად ფაილი მეტისმეტად დიდია.<br />მხარდაჭერისთვის დაუკავშირდით "
"თქვენი Matrix-ის სერვერის ადმინისტრატორს."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "იდენტიფიკატორების სერვერი მორგებული არაა"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "ოთახის შექმნის შეცდომა: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "სივრცის შექმნის შეცდომა: %1"
@@ -5855,86 +5855,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "აირჩიეთ დასამატებელი პარამეტრი"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "დამალვა"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "გაზიარება"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "წაშლა"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "დასრულებულია"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "გაუქმება"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "ქვეყნის კოდი ახალი ტელეფონის ნომრისთვის"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "ახალი ელფოსტის მისამართი:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "ახალი ტელეფონის ნომერი:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "ჩვენ ელფოსტა გამოგიგზავნეთ"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "ჩვენ ტექსტური შეტყობინება გამოგიგზავნეთ"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1, მიჰყევით ინსტრუქციებს და დააწკაპუნეთ ღილაკზე ქვემოთ"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "შეყვანილი ელფოსტა არასწორია"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "შეყვანილი ტელეფონის ნომერი არასწორია"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "შეყვანილი პაროლი არასწორია"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5943,7 +5943,7 @@ msgstr ""
"ელფოსტა არ გადამოწმებულა. გადადით ელფოსტაზე და მიჰყავთ ინსტრუქციებს, "
"რომლებიც გამოგიგზავნეთ, შემდეგ კი ქვემოთ ღილაკზე დააწკაპუნეთ"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5953,25 +5953,25 @@ msgstr ""
"მიჰყევით ინსტრუქციებს, რომელიც დაგხვდებათ. შემდეგ კი ქვემოთ ღილაკზე "
"დააწკაპუნეთ"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "დამატება"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "უკან"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1, მიჰყევით ინსტრუქციებს და დააწკაპუნეთ ღილაკზე ზემოთ"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5980,7 +5980,7 @@ msgstr ""
"ელფოსტა არ გადამოწმებულა. გადადით ელფოსტაზე და მიჰყავთ ინსტრუქციებს, "
"რომლებიც გამოგიგზავნეთ, შემდეგ კი ზემოთ ღილაკზე დააწკაპუნეთ"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5990,35 +5990,35 @@ msgstr ""
"მიჰყევით ინსტრუქციებს, რომელიც დაგხვდებათ. შემდეგ კი ზემოთ ღილაკზე "
"დააწკაპუნეთ"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1-მა დაიწყო მომხმარებლის გადამოწმება"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "ჩასწორების დადასტურება"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "შეტყობინების დაპოსტვა დისკუსიაში"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "ბუფერში კოპირება"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "გადიდება"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6027,20 +6027,20 @@ msgstr ""
"ეს შეტყობინება დაშიფრულია და გამომგზავნს ამ მოწყობილობისთვის გასაღები არ "
"გაუზიარებია."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "მეტი მოვლენის მიღება"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "ჩამოტვირთვა"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6048,13 +6048,13 @@ msgctxt ""
msgid "Open File"
msgstr "ფაილის გახსნა"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6083,60 +6083,60 @@ msgstr "ჩეკინის დრო: %1"
msgid "Check-out time: %1"
msgstr "ჩეკაუტის დრო: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "გამოსახულების ჩვენება"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "გაგზავნა KDE Itinerary-სთვის"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "მინიატურის წაშლა"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "მინატურის შემცირება"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "მინიატურის გაფართოება"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "URL-ის მინიატურის ჩატვირთვა"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "გარეთ გახსნა"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "ეფუძნება %1 მომხმარებლის არჩევანს"
msgstr[1] "ეფუძნება %1 მომხმარებლის არჩევანს"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(დასრულდა)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6148,7 +6148,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "ბოლოს წაიკითხა: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6168,24 +6168,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "პლ. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "ვიდეო"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "ვიდეოს ჩვენება"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "ხმის სიმაღლე"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "გადიდება"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-02-24 22:09+0100\n"
"Last-Translator: Shinjo Park <kde@peremen.name>\n"
"Language-Team: Korean <kde-kr@kde.org>\n"
@@ -1126,7 +1126,7 @@ msgstr "이 서버에 등록이 비활성화되어 있습니다."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "불러오는 중"
@@ -1157,7 +1157,7 @@ msgid "Loading…"
msgstr "불러오는 중…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1792,7 +1792,7 @@ msgstr "내 이모지"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "답장 불러오는 중"
@@ -2094,7 +2094,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 님이 대화방에 초대함"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, fuzzy, kde-format
#| msgid "Contact your matrix server administrator for support."
msgid ""
@@ -2102,18 +2102,18 @@ msgid ""
"for support."
msgstr "Matrix 서버 관리자에게 연락하십시오."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "대화방 생성 실패: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "스페이스 생성 실패: %1"
@@ -6171,117 +6171,117 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, fuzzy, kde-format
#| msgid "Share"
msgctxt "@action:button"
msgid "Share"
msgstr "공유"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button"
msgid "Remove"
msgstr "삭제"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, fuzzy, kde-format
#| msgid "Compact"
msgctxt "@action:button"
msgid "Complete"
msgstr "간략함"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, fuzzy, kde-format
#| msgid "Cancel"
msgctxt "@action:button"
msgid "Cancel"
msgstr "취소"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Add an e-mail address:"
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "이메일 주소 추가:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Members"
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "구성원"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, fuzzy, kde-format
#| msgid "sent a message"
msgid "We've sent you a text message"
msgstr "님이 메시지를 보냄"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, fuzzy, kde-format
#| msgid "The entered text is not a valid url"
msgid "The entered email is not valid"
msgstr "입력한 텍스트가 올바른 URL이 아님"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, fuzzy, kde-format
#| msgid "The entered text is not a valid url"
msgid "The entered phone number is not valid"
msgstr "입력한 텍스트가 올바른 URL이 아님"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, fuzzy, kde-format
#| msgid "Wrong password entered"
msgid "Incorrect password entered"
msgstr "암호가 잘못됨"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, fuzzy, kde-format
#| msgid "Add"
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "추가"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Back"
@@ -6289,59 +6289,59 @@ msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "뒤로"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, fuzzy, kde-format
#| msgid "withdrew a user's invitation"
msgid "%1 started a user verification"
msgstr "님이 사용자의 초대를 거절함"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "편집 확인"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "No messages found"
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "메시지를 찾을 수 없음"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, fuzzy, kde-format
#| msgid "Copy room ID to clipboard"
msgid "Copy to clipboard"
msgstr "클립보드에 대화방 ID 복사"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, fuzzy, kde-format
#| msgid "Maximize"
msgctxt "@action:button"
msgid "Maximize"
msgstr "최대화"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6350,20 +6350,20 @@ msgstr ""
"이 메시지는 암호화되어 있으며 전송한 사람이 이 장치와 키를 공유하지 않았습니"
"다."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "다운로드"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6371,13 +6371,13 @@ msgctxt ""
msgid "Open File"
msgstr "파일 열기"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6406,62 +6406,62 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, fuzzy, kde-format
#| msgid "Set Image"
msgctxt "@action:button"
msgid "Show Image"
msgstr "이미지 설정"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "KDE 여행 정보로 전송"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, fuzzy, kde-format
#| msgid "Remove device"
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "장치 삭제"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "미리 보기 축소"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "미리 보기 확장"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "URL 미리 보기 불러오는 중"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, fuzzy, kde-format
#| msgid "Open Externally"
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "외부 프로그램으로 열기"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "사용자 %1명의 투표에 의함"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(종료됨)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6474,7 +6474,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "마지막 읽음: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6494,25 +6494,25 @@ msgstr "대화의 최초입니다. 이 지점보다 더 오래된 메시지가
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "비디오"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, fuzzy, kde-format
#| msgid "Video"
msgctxt "@action:button"
msgid "Show Video"
msgstr "비디오"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "음량"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "최대화"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2023-02-25 01:00+0000\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -1030,7 +1030,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr ""
@@ -1060,7 +1060,7 @@ msgid "Loading…"
msgstr ""
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1690,7 +1690,7 @@ msgstr ""
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr ""
@@ -1946,25 +1946,25 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr ""
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr ""
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr ""
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr ""
@@ -5796,180 +5796,180 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr ""
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr ""
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr ""
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr ""
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr ""
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr ""
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr ""
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr ""
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr ""
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr ""
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr ""
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr ""
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr ""
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -5977,13 +5977,13 @@ msgctxt ""
msgid "Open File"
msgstr ""
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr ""
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6012,47 +6012,47 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr ""
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr ""
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr ""
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
@@ -6060,13 +6060,13 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr ""
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6078,7 +6078,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr ""
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6097,24 +6097,24 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr ""
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr ""
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr ""
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr ""

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-06 18:51+0200\n"
"Last-Translator: Toms Trasuns <toms.trasuns@posteo.net>\n"
"Language-Team: Latvian <kde-i18n-doc@kde.org>\n"
@@ -1040,7 +1040,7 @@ msgstr "Šajā serverī reģistrācija ir izslēgta."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Ielādē"
@@ -1071,7 +1071,7 @@ msgid "Loading…"
msgstr "Ielādē..."
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1701,7 +1701,7 @@ msgstr "Savas emocijzīmes"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Ielādē atbildi"
@@ -1960,7 +1960,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 jūs uzaicināja"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1969,18 +1969,18 @@ msgstr ""
"Datne ir pārāk liela lejupielādei.<br />Atbalstam sazinieties ar sava "
"„Matrix“ servera administratoru."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Identitātes serveris nav konfigurēts"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Istabas izveide neizdevās: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Telpas izveide neizdevās: %1"
@@ -5858,86 +5858,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Atlasiet pievienojamu parametru"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Slēpt"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Kopīgot"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Noņemt"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Pabeigt"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Atcelt"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Valsts kods jaunam tālruņa numuram"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Jauna e-pasta adrese:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Jauns tālruņa numurs:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Mēs jums nosūtījām e-pasta vēstuli"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Mēs jums nosūtījām īsziņu"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. Sekojiet tajā esošajiem norādījumiem un spiediet pogu zemāk"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "Ievadītā e-pasta adrese nav derīga"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Ievadītais tālruņa numurs nav derīgs"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Ievadīta nepareiza parole"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5946,7 +5946,7 @@ msgstr ""
"E-pasta adrese nav verificēta. Atveriet e-pasta vēstuli, sekojiet tajā "
"esošajiem norādījumiem un klikšķiniet uz pogas zemāk"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5955,25 +5955,25 @@ msgstr ""
"Tālruņa numurs nav verificēts. Atveriet īsziņu, sekojiet tajā esošajiem "
"norādījumiem un klikšķiniet uz pogas zemāk"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Pievienot"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Atpakaļ"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. Sekojiet tajā esošajiem norādījumiem un spiediet pogu augstāk"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5982,7 +5982,7 @@ msgstr ""
"E-pasta adrese nav verificēta. Atveriet e-pasta vēstuli, sekojiet tajā "
"esošajiem norādījumiem un klikšķiniet uz pogas augstāk"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5991,55 +5991,55 @@ msgstr ""
"Tālruņa numurs nav verificēts. Atveriet īsziņu, sekojiet tajā esošajiem "
"norādījumiem un klikšķiniet uz pogas augstāk"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 uzsāka lietotāja verifikāciju"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Apstiprināt izmaiņas"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Publicēt ziņu pavedienā"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Kopēt starpliktuvē"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maksimizēt"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr "Šī ziņa ir šifrēta, bet sūtītājs nav kopīgojis atslēgu ar šo ierīci."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Izgūt vairāk notikumu"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Lejupielādēt"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6047,13 +6047,13 @@ msgctxt ""
msgid "Open File"
msgstr "Atvērt datni"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6082,47 +6082,47 @@ msgstr "Reģistrācijas laiks: %1"
msgid "Check-out time: %1"
msgstr "Izrakstīšanās laiks: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Rādīt attēlu"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Sūtīt uz KDE „Itinerary“"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Noņemt priekšskatījumu"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Samazināt priekšskatījumu"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Palielināt priekšskatījumu"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Ielādē URL priekšskatījumu"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Atvērt ārēji"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
@@ -6130,13 +6130,13 @@ msgstr[0] "Balstoties uz %1 lietotāja balsīm"
msgstr[1] "Balstoties uz %1 lietotāju balsīm"
msgstr[2] "Balstoties uz %1 lietotāju balsīm"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Beidzās)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6148,7 +6148,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Pēdējo reizi lasīta: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6167,24 +6167,24 @@ msgstr "Šis ir tērzēšanas sākums. Agrāk par šo vietu vēsturē ziņu nav.
msgid "Pl. %1"
msgstr "Pl. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Rādīt video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Skaļums"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maksimizēt"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-06 12:48+0100\n"
"Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n"
"Language-Team: \n"
@@ -1038,7 +1038,7 @@ msgstr "Registratie is uitgeschakeld op deze server."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Laden"
@@ -1070,7 +1070,7 @@ msgid "Loading…"
msgstr "Laden…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1702,7 +1702,7 @@ msgstr "Eigen emoji's"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Antwoord wordt geladen"
@@ -1962,7 +1962,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 heeft u uitgenodigd"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1971,18 +1971,18 @@ msgstr ""
"Bestand is te groot om te downloaden.<br />Neem contact op met uw matrix-"
"serverbeheerder voor ondersteuning."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Geen identiteitsserver geconfigureerd"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Aanmaken van room is mislukt: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Ruimte aanmaken is mislukt: %1"
@@ -5896,86 +5896,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Selecteer toe te voegen parameter"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Verbergen"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Delen"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Verwijderen"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Voltooid"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Annuleren"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Landcode voor nieuw telefoonnummer"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Nieuw e-mailadres:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Nieuw telefoonnummer:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "We hebben u een e-mail gestuurd"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "We hebben u een tekstbericht gestuurd"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. Volg de instructies daar en klik daarna op de onderstaande knop"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "De ingevoerde e-mail is niet geldig"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Het ingevoerde telefoonnummer is niet geldig"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Verkeerd wachtwoord ingevoerd"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5984,7 +5984,7 @@ msgstr ""
"De e-mail is niet geverifieerd. Ga naar de e-mail en volg de instructies "
"daar en klik daarna op de onderstaande knop"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5993,25 +5993,25 @@ msgstr ""
"De telefoonnummer is niet geverifieerd. Ga naar het tekstbericht en volg de "
"instructies daar en klik daarna op de onderstaande knop"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Toevoegen"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Terug"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. Volg de instructies daar en klik daarna op de bovenstaande knop"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6020,7 +6020,7 @@ msgstr ""
"De e-mail is niet geverifieerd. Ga naar de e-mail en volg de instructies "
"daar en klik daarna op de bovenstaande knop"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6029,35 +6029,35 @@ msgstr ""
"De telefoonnummer is niet geverifieerd. Ga naar het tekstbericht en volg de "
"instructies daar en klik daarna op de bovenstaande knop"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 is verificatie van een gebruiker gestart"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Bewerking bevestigen"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Bericht in discussie posten"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Naar klembord kopiëren"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximaliseren"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6066,20 +6066,20 @@ msgstr ""
"Dit bericht is versleuteld en de verzender heeft de sleutel niet gedeeld met "
"dit apparaat."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Meer gebeurtenissen ophalen"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Downloaden"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6087,13 +6087,13 @@ msgctxt ""
msgid "Open File"
msgstr "Bestand openen"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6122,60 +6122,60 @@ msgstr "Inchecktijd: %1"
msgid "Check-out time: %1"
msgstr "Uitchecktijd: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Afbeelding tonen"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Naar KDE Itinerary zenden"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Voorbeeld verwijderen"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Voorbeeld invouwen"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Voorbeeld uitvouwen"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "URL voorbeeld laden"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Extern openen"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Gebaseerd op stem van %1 gebruiker"
msgstr[1] "Gebaseerd op stemmen van %1 gebruikers"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Beëindigd)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6187,7 +6187,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Laatst gelezen: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6207,24 +6207,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "Pl. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Video tonen"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Volume"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximaliseren"

View File

@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-10-27 15:01+0100\n"
"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
"Language-Team: Norwegian Nynorsk <l10n-no@lister.huftis.org>\n"
@@ -1038,7 +1038,7 @@ msgstr "Denne tenaren er stengd for nye registreringar."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Hentar inn"
@@ -1069,7 +1069,7 @@ msgid "Loading…"
msgstr "Lastar …"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1700,7 +1700,7 @@ msgstr "Eigne emojiar"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Hentar inn svar"
@@ -1964,25 +1964,25 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 inviterte deg til eit rom"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, fuzzy, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr "Ta kontakt med administratoren av Matrix-tenaren for brukarstøtte."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Ingen identitetstenar sett opp"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Feil ved romregistrering: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Feil ved registrering av område: %1"
@@ -5892,86 +5892,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Gøym"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Del"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Fjern"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Fullført"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Avbryt"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Landskode for nytt telefonnummer"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Ny e-postadresse:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Nytt telefonnummer:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Me har sendt deg ein e-post"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Me har sendt deg ei tekstmelding"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. Følg instruksjonane der, og trykk så på knappen nedanfor."
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "E-postadressa du skreiv inn, er ikkje gyldig"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Telefonnummeret du skreiv inn, er ikkje gyldig"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Du oppgav feil passord"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5980,7 +5980,7 @@ msgstr ""
"E-postadressa er ikkje stadfesta. Sjekk e-posten din, følg instruksjonane "
"der, og trykk så på knappen nedanfor."
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5989,25 +5989,25 @@ msgstr ""
"Telefonnummeret er ikkje stadfesta. Sjekk tekstmeldingane dine, følg "
"instruksjonane der, og trykk så på knappen nedanfor."
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Legg til"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Tilbake"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. Følg instruksjonane der, og trykk så på knappen ovanfor."
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6016,7 +6016,7 @@ msgstr ""
"E-postadressa er ikkje stadfesta. Sjekk e-posten din, følg instruksjonane "
"der, og trykk så på knappen ovanfor."
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6025,35 +6025,35 @@ msgstr ""
"Telefonnummeret er ikkje stadfesta. Sjekk tekstmeldingane dine, følg "
"instruksjonane der, og trykk så på knappen ovanfor."
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 starta brukarstadfesting"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Stadfest redigering"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Skriv innlegg i tråden"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Kopier til utklippstavla"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maksimer"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6062,20 +6062,20 @@ msgstr ""
"Meldinga er kryptert, og avsendaren har ikkje delt krypterings­nøkkelen med "
"denne eininga."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Last ned"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6083,13 +6083,13 @@ msgctxt ""
msgid "Open File"
msgstr "Opna fil"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6118,60 +6118,60 @@ msgstr "Innsjekk etter: %1"
msgid "Check-out time: %1"
msgstr "Utsjekk før: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Vis bilete"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Send til KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Fjern førehandsvising"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Krymp førehandsvising"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Utvid førehandsvising"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Lastar førehandsvising av nettside"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Opna eksternt"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Basert på avrøysting for %1 brukar"
msgstr[1] "Basert på avstemming blant %1 brukarar"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(avslutta)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6184,7 +6184,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Sist lese: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6203,24 +6203,24 @@ msgstr "Dette er starten på praten. Det finst ingen eldre meldingar."
msgid "Pl. %1"
msgstr "Pl. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Vis video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Lydstyrke"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maksimer"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2021-12-31 11:06-0800\n"
"Last-Translator: A S Alam <aalam@satluj.org>\n"
"Language-Team: Punjabi <punjabi-users@lists.sf.net>\n"
@@ -1129,7 +1129,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, fuzzy, kde-format
#| msgid "Loading"
msgid "Loading"
@@ -1163,7 +1163,7 @@ msgid "Loading…"
msgstr "ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1869,7 +1869,7 @@ msgstr "ਕਸਟਮ"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, fuzzy, kde-format
#| msgid "Loading"
msgid "Loading reply"
@@ -2173,26 +2173,26 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 ਨੇ ਤੁਹਾਨੂੰ ਰੂਮ ਲਈ ਸੱਦਾ ਦਿੱਤਾ"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr ""
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
msgid "Room creation failed: %1"
msgstr "ਰੂਮ ਬਣਾਉਣ ਲਈ ਫੇਲ੍ਹ: \"%1\""
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
msgid "Space creation failed: %1"
@@ -6380,46 +6380,46 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr ""
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button"
msgid "Remove"
msgstr "ਹਟਾਓ"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, fuzzy, kde-format
#| msgid "Compact"
msgctxt "@action:button"
msgid "Complete"
msgstr "ਸੰਖੇਪ"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, fuzzy, kde-format
#| msgid "Cancel"
msgctxt "@action:button"
msgid "Cancel"
msgstr "ਰੱਦ ਕਰੋ"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgctxt "their refers to a singular user"
#| msgid "cleared their display name"
@@ -6427,68 +6427,68 @@ msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "ਆਪਣੇ ਵੇਖਾਉਣ ਵਾਲੇ ਨਾਂ ਮਿਟਾਏ"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Members"
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "ਮੈਂਬਰ"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, fuzzy, kde-format
#| msgid "Send message"
msgid "We've sent you a text message"
msgstr "ਸੁਨੇਹਾ ਭੇਜੋ"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, fuzzy, kde-format
#| msgid "Wrong password entered"
msgid "Incorrect password entered"
msgstr "ਗਲਤ ਪਾਸਵਰਡ ਦਿੱਤਾ"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, fuzzy, kde-format
#| msgid "Add"
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "ਜੋੜੋ"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Back"
@@ -6496,80 +6496,80 @@ msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "ਪਿੱਛੇ"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, fuzzy, kde-format
#| msgid "withdrew %1's invitation"
msgid "%1 started a user verification"
msgstr "%1 ਲਈ ਸੱਦਾ ਵਾਪਸ ਲਵੋ"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "Confirm"
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "ਤਸਦੀਕ ਕਰੋ"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "No rooms found"
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "ਕੋਈ ਰੂਮ ਨਹੀਂ ਲੱਭਿਆ"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Copy address to clipboard"
msgid "Copy to clipboard"
msgstr "ਸਿਰਨਾਵਾਂ ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਕਰੋ"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr ""
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr ""
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "ਡਾਊਨਲੋਡ"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6577,13 +6577,13 @@ msgctxt ""
msgid "Open File"
msgstr "ਫਾਇਲ ਖੋਲ੍ਹੋ"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6612,63 +6612,63 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, fuzzy, kde-format
#| msgid "cleared the room name"
msgctxt "@action:button"
msgid "Show Image"
msgstr "ਰੂਮ ਦਾ ਨਾਂ ਮਿਟਾਇਆ"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, fuzzy, kde-format
#| msgid "Remove device"
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "ਡਿਵਾਈਸ ਨੂੰ ਹਟਾਓ"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr ""
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr ""
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, fuzzy, kde-format
#| msgid "Open Externally"
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "ਬਾਹਰ ਖੋਲ੍ਹੋ"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] ""
msgstr[1] ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr ""
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6681,7 +6681,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "ਆਖਰੀ ਪੜ੍ਹੇ: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6701,25 +6701,25 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "ਵੀਡੀਓ"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, fuzzy, kde-format
#| msgid "Video"
msgctxt "@action:button"
msgid "Show Video"
msgstr "ਵੀਡੀਓ"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr ""
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr ""

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-02-23 12:33+0100\n"
"Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>\n"
"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
@@ -1040,7 +1040,7 @@ msgstr "Rejestrowanie się na ten serwer jest wyłączone."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Wczytywanie"
@@ -1071,7 +1071,7 @@ msgid "Loading…"
msgstr "Wczytywanie…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1701,7 +1701,7 @@ msgstr "Własne emoji"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Wczytywanie odpowiedzi"
@@ -1964,7 +1964,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 zaprosił cię"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1973,18 +1973,18 @@ msgstr ""
"Plik jest zbyt duży do pobrania.<br /> Napisz do obsługi twojego serwera "
"Matriksa z prośbą o pomoc."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Nie ustawiono żadnego serwera tożsamości"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Nie udało się utworzyć pokoju: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Nie udało się utworzyć przestrzeni: %1"
@@ -5888,87 +5888,87 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Wybierz parametr do dodania"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Ukryj"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Udostępnij"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Usuń"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Ukończone"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Anuluj"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Kod kraju dla nowego numeru telefonu"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Nowy adres pocztowy:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Nowy numer telefonu:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Wysłaliśmy ci wiadomość tekstową"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Wysłaliśmy ci wiadomość tekstową"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
"%1. Przejdź przez wypisane tam kroki, a na końcu naciśnij poniższy przycisk."
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "Wpisany adres pocztowy jest nieprawidłowy"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Wpisany numer telefonu jest nieprawidłowy"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Wpisano złe hasło"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5977,7 +5977,7 @@ msgstr ""
"Adres pocztowy nie został potwierdzony. Wróć do wiadomości pocztowej i "
"przejdź przez wypisane tam kroki, a na końcu naciśnij poniższy przycisk."
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5986,26 +5986,26 @@ msgstr ""
"Numer telefonu nie został potwierdzony. Wróć do wiadomości tekstowej i "
"przejdź przez wypisane tam kroki, a na końcu naciśnij poniższy przycisk."
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Dodaj"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Wstecz"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
"%1. Przejdź przez wypisane tam kroki, a na końcu naciśnij powyższy przycisk."
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6014,7 +6014,7 @@ msgstr ""
"Adres pocztowy nie został potwierdzony. Wróć do wiadomości pocztowej i "
"przejdź przez wypisane tam kroki, a na końcu naciśnij powyższy przycisk."
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6023,35 +6023,35 @@ msgstr ""
"Numer telefonu nie został potwierdzony. Wróć do wiadomości tekstowej i "
"przejdź przez wypisane tam kroki, a na końcu naciśnij powyższy przycisk."
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 rozpoczął sprawdzanie użytkownika"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Potwierdź zmianę"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Wyślij wiadomość w wątku"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Skopiuj do schowka"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Zmaksymalizuj"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6060,20 +6060,20 @@ msgstr ""
"Ta wiadomość jest zaszyfrowana, a jej nadawca nie udostępnił klucza temu "
"urządzeniowi."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Pobierz więcej wydarzeń"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Pobierz"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6081,13 +6081,13 @@ msgctxt ""
msgid "Open File"
msgstr "Otwórz plik"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6116,47 +6116,47 @@ msgstr "Czas zameldowania: %1"
msgid "Check-out time: %1"
msgstr "Czas wymeldowania: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Pokaż obrazek"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Wyślij do KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Usuń podgląd"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Skurcz podgląd"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Rozpręż podgląd"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Wczytywanie podglądu adresu URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Otwórz zewnętrznie"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
@@ -6164,13 +6164,13 @@ msgstr[0] "Na podstawie głosu %1 użytkownika"
msgstr[1] "Na podstawie głosów %1 użytkowników"
msgstr[2] "Na podstawie głosów %1 użytkowników"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Zakończone)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6182,7 +6182,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Ostatnio odczytywany: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6202,24 +6202,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "Per. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Wideo"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Pokaż wideo"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Głośność"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Zmaksymalizuj"

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2023-06-24 10:17+0100\n"
"Last-Translator: José Nuno Coelho Pires <zepires@gmail.com>\n"
"Language-Team: Portuguese <kde-i18n-pt@kde.org>\n"
@@ -1128,7 +1128,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading"
@@ -1161,7 +1161,7 @@ msgid "Loading…"
msgstr "A carregar…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1815,7 +1815,7 @@ msgstr "Próprios Emojis"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading reply"
@@ -2148,7 +2148,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 convidou-o para uma sala"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, fuzzy, kde-format
#| msgid "Contact your matrix server administrator for support."
msgid ""
@@ -2157,18 +2157,18 @@ msgid ""
msgstr ""
"Contacte o administrador do seu servidor de Matrix para obter algum suporte."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Não foi possível criar a sala: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Não foi possível criar o espaço: %1"
@@ -6349,117 +6349,117 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, fuzzy, kde-format
#| msgid "Share"
msgctxt "@action:button"
msgid "Share"
msgstr "Partilhar"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button"
msgid "Remove"
msgstr "Remover"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, fuzzy, kde-format
#| msgid "Compact"
msgctxt "@action:button"
msgid "Complete"
msgstr "Compacto"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, fuzzy, kde-format
#| msgid "Cancel"
msgctxt "@action:button"
msgid "Cancel"
msgstr "Cancelar"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Confirm new display name"
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Confirmar o novo nome visível"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Members"
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Membros"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, fuzzy, kde-format
#| msgid "sent a message"
msgid "We've sent you a text message"
msgstr "enviou uma mensagem"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, fuzzy, kde-format
#| msgid "The entered text is not a valid url"
msgid "The entered email is not valid"
msgstr "O texto introduzido não é um URL válido"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, fuzzy, kde-format
#| msgid "The entered text is not a valid url"
msgid "The entered phone number is not valid"
msgstr "O texto introduzido não é um URL válido"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, fuzzy, kde-format
#| msgid "Wrong password entered"
msgid "Incorrect password entered"
msgstr "Foi introduzida uma senha errada"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, fuzzy, kde-format
#| msgid "Add"
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Adicionar"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Back"
@@ -6467,59 +6467,59 @@ msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Voltar"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, fuzzy, kde-format
#| msgid "withdrew a user's invitation"
msgid "%1 started a user verification"
msgstr "retirou o convite de um utilizador"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Confirmar a edição"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "No results found"
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Não foram encontrados resultados"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, fuzzy, kde-format
#| msgid "Copy room ID to clipboard"
msgid "Copy to clipboard"
msgstr "Copiar o ID da sala para a área de transferência"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, fuzzy, kde-format
#| msgid "Maximize"
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximizar"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6528,20 +6528,20 @@ msgstr ""
"Esta mensagem está encriptada e o remetente não partilhou a chave com este "
"dispositivo."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Transferir"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6549,13 +6549,13 @@ msgctxt ""
msgid "Open File"
msgstr "Abrir o Ficheiro"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6584,63 +6584,63 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, fuzzy, kde-format
#| msgid "Set Image"
msgctxt "@action:button"
msgid "Show Image"
msgstr "Definir uma Imagem"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, fuzzy, kde-format
#| msgid "Remove device"
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Remover o dispositivo"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Fechar a antevisão"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Expandir a antevisão"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "A carregar a antevisão do URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, fuzzy, kde-format
#| msgid "Open Externally"
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Abrir Externamente"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Com base nos votos de %1 utilizador"
msgstr[1] "Com base nos votos de %1 utilizadores"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Terminada)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6653,7 +6653,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Última leitura: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6673,25 +6673,25 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Vídeo"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, fuzzy, kde-format
#| msgid "Video"
msgctxt "@action:button"
msgid "Show Video"
msgstr "Vídeo"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Volume"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximizar"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-08-03 00:01-0300\n"
"Last-Translator: Geraldo Simiao <geraldosimiao@fedoraproject.org>\n"
"Language-Team: Brazilian Portuguese <kde-i18n-pt_BR@kde.org>\n"
@@ -1139,7 +1139,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading"
@@ -1172,7 +1172,7 @@ msgid "Loading…"
msgstr "Carregando..."
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1883,7 +1883,7 @@ msgstr "Emoji personalizado"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading reply"
@@ -2197,26 +2197,26 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 convidou você para uma sala"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr ""
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
msgid "Room creation failed: %1"
msgstr "Criação de sala falhou: \"%1\""
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
msgid "Space creation failed: %1"
@@ -6420,43 +6420,43 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Compartilhar"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Remover"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Completo"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Cancelar"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgctxt "their refers to a singular user"
#| msgid "cleared their display name"
@@ -6464,121 +6464,121 @@ msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "limpou seu nome de exibição"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Members"
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Membros"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, fuzzy, kde-format
#| msgid "Send a message…"
msgid "We've sent you a text message"
msgstr "Enviar uma mensagem…"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Senha digitada errada"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Adicionar"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Voltar"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 iniciou a verificação de usuário"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Confirmar edição"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "No rooms found"
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Nenhuma sala encontrada"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Copiar para a área de transferência"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr ""
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6587,20 +6587,20 @@ msgstr ""
"Esta mensagem está criptografada e o remetente não compartilhou a chave com "
"este dispositivo."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Baixar"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6608,13 +6608,13 @@ msgctxt ""
msgid "Open File"
msgstr "Abrir arquivo"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6643,62 +6643,62 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, fuzzy, kde-format
#| msgid "cleared the room name"
msgctxt "@action:button"
msgid "Show Image"
msgstr "limpou o nome da sala"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Remover visualização"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr ""
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr ""
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, fuzzy, kde-format
#| msgid "Open Externally"
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Abrir externamente"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] ""
msgstr[1] ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr ""
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6711,7 +6711,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Última leitura: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6731,25 +6731,25 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Vídeo"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, fuzzy, kde-format
#| msgid "Video"
msgctxt "@action:button"
msgid "Show Video"
msgstr "Vídeo"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr ""
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr ""

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-10-31 10:08+0300\n"
"Last-Translator: Olesya Gerasimenko <translation-team@basealt.ru>\n"
"Language-Team: Basealt Translation Team\n"
@@ -1060,7 +1060,7 @@ msgstr "Регистрация пользователей отключена н
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Загрузка"
@@ -1092,7 +1092,7 @@ msgid "Loading…"
msgstr "Загрузка..."
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1727,7 +1727,7 @@ msgstr "Свои эмодзи"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Загрузка ответа"
@@ -1994,25 +1994,25 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 пригласил вас в комнату"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, fuzzy, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr "Обратитесь за помощью к администратору сервера Matrix."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Не настроен сервер профилей"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Не удалось создать комнату: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Не удалось создать пространство: %1"
@@ -6012,65 +6012,65 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Скрыть"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Опубликовать"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Удалить"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Завершить"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Отменить"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Код страны для нового телефонного номера"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Новый адрес электронной почты"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Новый телефонный номер"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Вам отправлено письмо"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Вам отправлено текстовое сообщение"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
@@ -6078,22 +6078,22 @@ msgstr ""
"%1. Выполните приведённые инструкции и затем нажмите расположенную ниже "
"кнопку"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "Введённый адрес электронной почты не является допустимым"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Введённый телефонный номер не является допустимым"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Введён неверный пароль"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6102,7 +6102,7 @@ msgstr ""
"Письмо не было проверено. Перейдите к письму, выполните приведённые "
"инструкции и затем нажмите расположенную ниже кнопку"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6111,19 +6111,19 @@ msgstr ""
"Телефонный номер не был проверен. Перейдите к текстовому сообщению, "
"выполните приведённые инструкции и затем нажмите расположенную ниже кнопку"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Добавить"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Назад"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
@@ -6131,7 +6131,7 @@ msgstr ""
"%1. Выполните приведённые инструкции и затем нажмите расположенную выше "
"кнопку"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6140,7 +6140,7 @@ msgstr ""
"Письмо не было проверено. Перейдите к письму, выполните приведённые "
"инструкции и затем нажмите расположенную выше кнопку"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6149,35 +6149,35 @@ msgstr ""
"Телефонный номер не был проверен. Перейдите к текстовому сообщению, "
"выполните приведённые инструкции и затем нажмите расположенную выше кнопку"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 начал(а) проверку пользователя"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Подтвердить изменение"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Не найдено ни одного сообщения"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Скопировать в буфер обмена"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Развернуть"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6186,20 +6186,20 @@ msgstr ""
"Это сообщение зашифровано, и отправитель не поделился ключом с этим "
"устройством."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Загрузить"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6207,13 +6207,13 @@ msgctxt ""
msgid "Open File"
msgstr "Открыть файл"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6242,47 +6242,47 @@ msgstr "Время регистрации: %1"
msgid "Check-out time: %1"
msgstr "Время регистрации отъезда: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, fuzzy, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Установить изображение"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Передать в KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Удалить область предварительного просмотра"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Уменьшить область предварительного просмотра"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Увеличить область предварительного просмотра"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Загрузка предпросмотра содержимого по ссылке"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, fuzzy, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Открывать во внешней программе"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
@@ -6291,13 +6291,13 @@ msgstr[1] "Основано на голосах %1 пользователей"
msgstr[2] "Основано на голосах %1 пользователей"
msgstr[3] "Основано на голосе %1 пользователя"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Завершено)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6310,7 +6310,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Последнее сообщение прочитано: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6330,24 +6330,24 @@ msgstr "Это начало чата. Более ранних сообщений
msgid "Pl. %1"
msgstr "Пл. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Видео"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, fuzzy, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Видео"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Громкость"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Развернуть"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-12-29 23:07+0530\n"
"Last-Translator: kali <shreekantkalwar@gmail.com>\n"
"Language-Team: Sanskrit <kde-i18n-doc@kde.org>\n"
@@ -1036,7 +1036,7 @@ msgstr "अस्मिन् सर्वरे पञ्जीकरणं न
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "लोडिंग"
@@ -1068,7 +1068,7 @@ msgid "Loading…"
msgstr "लोडिंग..."
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1698,7 +1698,7 @@ msgstr "स्वकीय इमोजी"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "उत्तरं लोडयति"
@@ -1953,7 +1953,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 भवन्तं कक्षे आमन्त्रितवान्"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1962,18 +1962,18 @@ msgstr ""
"सञ्चिका अतीव विशाला डाउनलोड् कर्तुं।<br /> समर्थनार्थं स्वस्य matrix server प्रशासकेन सह "
"सम्पर्कं कुर्वन्तु ।"
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "कोऽपि परिचयसर्वरः विन्यस्तः नास्ति"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "कक्षनिर्माणं विफलम्: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "अन्तरिक्षनिर्माणं विफलम्: %1"
@@ -5849,86 +5849,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "जोड्यताम् परिमाणः"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "गोपयतु"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "संविभागः"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "अपाकरोति"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "पूर्णं करोतु"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "निरसयतु"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "नूतनस्य दूरभाषसङ्ख्यायाः कृते देशसङ्केतः"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "नवीनं ईमेल-सङ्केतं :"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "नवीनं दूरभाषसङ्ख्या :"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "वयं भवद्भ्यः ईमेल प्रेषितवन्तः"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "वयं भवद्भ्यः पाठसन्देशं प्रेषितवन्तः"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. तत्र निर्देशान् अनुसृत्य ततः अधोलिखितं बटनं नुदन्तु"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "प्रविष्टं ईमेल वैधं नास्ति"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "प्रविष्टः दूरभाषसङ्ख्या वैधः नास्ति"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "अशुद्धगुप्तशब्दः प्रविष्टः"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5936,7 +5936,7 @@ msgid ""
msgstr ""
"ईमेल सत्यापितं न कृतम्। कृपया ईमेल मध्ये गत्वा तत्र निर्देशान् अनुसृत्य ततः अधोलिखितं बटनं नुदन्तु"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5945,25 +5945,25 @@ msgstr ""
"दूरभाषसङ्ख्या सत्यापितं नास्ति। कृपया पाठसन्देशे गत्वा तत्र निर्देशान् अनुसृत्य ततः अधोलिखितं "
"बटनं नुदन्तु"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "संयोजयति"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "पृष्ठभागः"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. तत्र निर्देशान् अनुसृत्य ततः उपरि बटनं नुदन्तु"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5971,7 +5971,7 @@ msgid ""
msgstr ""
"ईमेल सत्यापितं न कृतम्। कृपया ईमेल मध्ये गत्वा तत्र निर्देशान् अनुसृत्य ततः उपरि बटनं नुदन्तु"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5980,55 +5980,55 @@ msgstr ""
"दूरभाषसङ्ख्या सत्यापितं नास्ति। कृपया पाठसन्देशं गत्वा तत्रत्याः निर्देशान् अनुसृत्य ततः उपरि "
"स्थापितं बटनं नुदन्तु"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 इत्यनेन उपयोक्तृसत्यापनम् आरब्धम्"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "सम्पादनस्य पुष्टिं कुर्वन्तु"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "सूत्रे सन्देशं स्थापयन्तु"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "क्लिप्बोर्ड् प्रति प्रतिलिख्यताम्"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "अधिकतमं कुरुत"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr "एषः सन्देशः गुप्तः अस्ति तथा च प्रेषकेन अस्मिन् यन्त्रेण सह कुञ्जी न साझा कृता ।"
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "अवाहरन"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6036,13 +6036,13 @@ msgctxt ""
msgid "Open File"
msgstr "सञ्चिकां उद्घाटयन्तु"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6071,60 +6071,60 @@ msgstr "चेक-इन समयः %1"
msgid "Check-out time: %1"
msgstr "चेक-आउट् समयः %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "चित्रं दर्शयतु"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "KDE यात्रासूचीं प्रेषयन्तु"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "पूर्वावलोकनं निष्कासयन्तु"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "पूर्वावलोकनं संकोचयतु"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "पूर्वावलोकनं विस्तारयतु"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "URL पूर्वावलोकनं लोड् भवति"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "बाह्यरूपेण उद्घाटयतु"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "%1 उपयोक्तुः मतानाम् आधारेण"
msgstr[1] "%1 उपयोक्तृणां मतानाम् आधारेण"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(समाप्तः)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6137,7 +6137,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "अन्तिमपठनं: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6156,24 +6156,24 @@ msgstr "इति चटस्य आरम्भः । अस्मात्
msgid "Pl. %1"
msgstr "प्ल. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "विडिओ"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "विडियो दर्शयतु"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "मात्रा"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "अधिकतमं कुरुत"

View File

@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-11-10 11:41+0100\n"
"Last-Translator: Roman Paholík <wizzardsk@gmail.com>\n"
"Language-Team: KDE-SK\n"
@@ -1129,7 +1129,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading"
@@ -1161,7 +1161,7 @@ msgid "Loading…"
msgstr "Načítava sa…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1874,7 +1874,7 @@ msgstr "Vlastné"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading reply"
@@ -2183,26 +2183,26 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "pozval %1 do miestnosti"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr ""
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
msgid "Room creation failed: %1"
msgstr "Vytvorenie miestnosti zlyhalo: \"%1\""
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
msgid "Space creation failed: %1"
@@ -6345,45 +6345,45 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Skryť"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, fuzzy, kde-format
#| msgid "Share"
msgctxt "@action:button"
msgid "Share"
msgstr "Zdieľať"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Odstrániť"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, fuzzy, kde-format
#| msgid "Compact"
msgctxt "@action:button"
msgid "Complete"
msgstr "Dokončené"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Zrušiť"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgctxt "their refers to a singular user"
#| msgid "cleared their display name"
@@ -6391,67 +6391,67 @@ msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "vymazali svoje zobrazované meno"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, fuzzy, kde-format
#| msgid "Members"
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Členovia"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, fuzzy, kde-format
#| msgid "Send message"
msgid "We've sent you a text message"
msgstr "Odoslať správu"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, fuzzy, kde-format
#| msgid "Wrong password entered"
msgid "Incorrect password entered"
msgstr "Zadané nesprávne heslo"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Pridať"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Back"
@@ -6459,78 +6459,78 @@ msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Späť"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, fuzzy, kde-format
#| msgid "withdrew %1's invitation"
msgid "%1 started a user verification"
msgstr "stiahol pozvanie %1"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "Confirm"
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Potvrdiť"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "No rooms found"
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Žiadne miestnosti neboli nájdené"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, fuzzy, kde-format
msgid "Copy to clipboard"
msgstr "Kopírovať do schránky"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximalizovať"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr ""
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Stiahnuť"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6538,13 +6538,13 @@ msgctxt ""
msgid "Open File"
msgstr "Otvoriť súbor"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6573,48 +6573,48 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Zobraziť obrázok"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, fuzzy, kde-format
#| msgid "Remove device"
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Odstrániť zariadenie"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr ""
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr ""
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Otvoriť externe"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
@@ -6622,13 +6622,13 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, fuzzy, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "ukončené"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, fuzzy, kde-format
#| msgid "React"
msgctxt "@button"
@@ -6641,7 +6641,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Naposledy prečítané: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, fuzzy, kde-format
#| msgid "Reply"
msgctxt "@action:button"
@@ -6661,24 +6661,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "Pl"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Zobraziť video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, fuzzy, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Hlasitosť"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximalizovať"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-06 07:39+0100\n"
"Last-Translator: Matjaž Jeran <matjaz.jeran@amis.net>\n"
"Language-Team: Slovenian <lugos-slo@lugos.si>\n"
@@ -1043,7 +1043,7 @@ msgstr "Registracija je onemogočena na tem strežniku."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Nalaganje"
@@ -1075,7 +1075,7 @@ msgid "Loading…"
msgstr "Nalaganje …"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1705,7 +1705,7 @@ msgstr "Lastni čustvenčki"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Nalaganje odgovora"
@@ -1966,7 +1966,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 vas je povabil"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1975,18 +1975,18 @@ msgstr ""
"Datoteka je prevelika za prenos.<br />Za podporo se obrnite na skrbnika "
"strežnika matrix."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Ni konfigurirana identiteta strežnika"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Ustvarjanje sobe ni uspelo: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Ustvarjanje prostora ni uspelo: %1"
@@ -5884,86 +5884,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Izberite parameter za dodajanje"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Skrij"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Deli"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Odstrani"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Dokončano"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Prekliči"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Koda države za novo telefonsko številko"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Novi naslov e-pošte:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Nova telefonska številka:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Poslali smo vam elektronsko sporočilo"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Poslali smo vam besedilno sporočilo"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. Sledite navodilom in nato kliknite na gumb spodaj"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "Vneseni naslov e-pošte ni veljaven"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Vnesena telefonska številka ni veljavna"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Vneseno napačno geslo"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5972,7 +5972,7 @@ msgstr ""
"E-pošta ni bila preverjena. Pojdite v e-pošto in sledite tamkajšnjim "
"navodilom ter nato kliknite spodnji gumb"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5981,25 +5981,25 @@ msgstr ""
"Telefonska številka ni bila preverjena. Pojdite na besedilno sporočilo in "
"sledite tamkajšnjim navodilom ter nato kliknite na gumb spodaj"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Dodaj"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Nazaj"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. Sledite navodilom in nato kliknite na gumb zgoraj"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6008,7 +6008,7 @@ msgstr ""
"E-pošta ni bila preverjena. Pojdite v e-pošto in sledite tamkajšnjim "
"navodilom ter nato kliknite gumb zgoraj"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6017,35 +6017,35 @@ msgstr ""
"Telefonska številka ni bila preverjena. Pojdite na besedilno sporočilo in "
"sledite tamkajšnjim navodilom ter nato kliknite na gumb zgoraj"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 je začel preverjanje uporabnika"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Potrdi urejanje"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Objavi sporočilo v niti"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Kopiraj na odložišče"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Razpni"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6053,20 +6053,20 @@ msgid ""
msgstr ""
"To sporočilo je šifrirano in pošiljatelj še ni delil ključa s to napravo."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Pridobi več dogodkov"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Prenos"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6074,13 +6074,13 @@ msgctxt ""
msgid "Open File"
msgstr "Odpri datoteko"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6109,47 +6109,47 @@ msgstr "Čas prijave: %1"
msgid "Check-out time: %1"
msgstr "Check-out time: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Prikaži sliko"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Pošlji v KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Odstrani predogled"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Skrči predogled"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Razširi predogled"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Nalaganje predogleda URL"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Odpri od zunaj"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
@@ -6158,13 +6158,13 @@ msgstr[1] "Glede na glas %1 uporabnika"
msgstr[2] "Glede na glasova %1 uporabnikov"
msgstr[3] "Glede na glasove %1 uporabnikov"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Končano)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6176,7 +6176,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Nazadnje prebrano: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6196,24 +6196,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "Pl. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Prikaži video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Glasnost"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Razpni"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-02-28 19:43+0100\n"
"Last-Translator: Stefan Asserhäll <stefan.asserhall@gmail.com>\n"
"Language-Team: Swedish <kde-i18n-doc@kde.org>\n"
@@ -1036,7 +1036,7 @@ msgstr "Registrering är inaktiverad på servern."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Läser in"
@@ -1068,7 +1068,7 @@ msgid "Loading…"
msgstr "Läser in…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1700,7 +1700,7 @@ msgstr "Egna emoji"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Läser in svar"
@@ -1957,7 +1957,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 bjöd in dig"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1966,18 +1966,18 @@ msgstr ""
"Filen är för stor för att ladda ner.<br />Kontakta matrix-"
"serveradministratören för support."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Ingen identitetsserver inställd"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Misslyckades skapa rum: \"%1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Misslyckades skapa utrymme: %1"
@@ -5872,86 +5872,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Välj parameter att lägga till"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Dölj"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Dela"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Ta bort"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Komplettera"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Avbryt"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Landskod för nytt telefonnummer"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Ny e-postadress"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Nytt telefonnummer"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Vi skickade e-post till dig"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Vi skickade ett textmeddelande till dig"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. Följ instruktionerna där och klicka sedan på knappen nedan."
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "Den angivna e-postadressen är inte giltig"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Det angivna telefonnumret är inte giltigt"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Felaktigt lösenord inmatat"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5960,7 +5960,7 @@ msgstr ""
"E-postmeddelandet har inte verifierats. Gå till e-postmeddelandet och följ "
"instruktionerna där och klicka sedan på knappen nedan."
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5969,25 +5969,25 @@ msgstr ""
"Telefonnumret har inte verifierats. Gå till textmeddelandet och följ "
"instruktionerna där och klicka sedan på knappen nedan."
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Lägg till"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Tillbaka"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. Följ instruktionerna där och klicka sedan på knappen ovan."
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5996,7 +5996,7 @@ msgstr ""
"E-postmeddelandet har inte verifierats. Gå till e-postmeddelandet och följ "
"instruktionerna där och klicka sedan på knappen ovan."
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6005,35 +6005,35 @@ msgstr ""
"Telefonnumret har inte verifierats. Gå till textmeddelandet och följ "
"instruktionerna där och klicka sedan på knappen ovan."
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 startade en användarverifikation"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Bekräfta redigering"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Skicka meddelande i tråd"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Kopiera till klippbordet"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Maximera"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6042,20 +6042,20 @@ msgstr ""
"Meddelandet är krypterat och avsändaren har inte delat nyckeln med den här "
"enheten."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Hämta fler händelser"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Ladda ner"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6063,13 +6063,13 @@ msgctxt ""
msgid "Open File"
msgstr "Öppna fil"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6098,60 +6098,60 @@ msgstr "Incheckningstid: %1"
msgid "Check-out time: %1"
msgstr "Utcheckningstid: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Visa bild"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Skicka till KDE-resplan"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Ta bort förhandsgranskning"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Krymp förhandsgranskning"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Expandera förhandsgranskning"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Läser in webbadressförhandsgranskning"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Öppna externt"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "Baserat på röster av %1 användare"
msgstr[1] "Baserat på röster av %1 användare"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Avslutad)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6163,7 +6163,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Senast läst: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6184,24 +6184,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "Pl. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Visa video"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Volym"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Maximera"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-02-16 16:26+0530\n"
"Last-Translator: Kishore G <kishore96@gmail.com>\n"
"Language-Team: Tamil <kde-i18n-doc@kde.org>\n"
@@ -1034,7 +1034,7 @@ msgstr "இச்சேவையகத்தில் கணக்குரு
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "ஏற்றப்படுகிறது…"
@@ -1066,7 +1066,7 @@ msgid "Loading…"
msgstr "ஏற்றப்படுகிறது…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1698,7 +1698,7 @@ msgstr "சொந்த முகவடிகள்"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "பதில் ஏற்றப்படுகிறது…"
@@ -1956,7 +1956,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 உங்களை ஒர் அரங்குக்கு வரவழைத்தார்"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1965,18 +1965,18 @@ msgstr ""
"கோப்பு பதிவிறக்கக்கூடியதைவிட பெரிதாக உள்ளது.<br />உதவிக்கு உங்கள் மேட்ரிக்ஸு சேவையக "
"நிர்வாகியை தொடர்புகொள்ளவும்."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "எந்த அடையாளச் சேவையகமும் அமைக்கப்பட்டிருக்கவில்லை"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "அரங்கு உருவாக்கம் தோல்வியடைந்தது: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "இட உருவாக்கம் தோல்வியடைந்தது: %1"
@@ -5848,86 +5848,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "சேர்க்க வேண்டிய அம்சம்"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "மறை"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "பகிர்"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "நீக்கு"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "நிரப்பு"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "ரத்து செய்"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "புதிய தொலைபேசி எண்ணுக்கான சர்வதேச குறியெண்"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "புதிய மின்னஞ்சல் முகவரி:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "புதிய தொலைபேசி எண்:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "உங்களுக்கு அஞ்சலனுப்பியுள்ளோம்"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "உங்களுக்கு குறுஞ்செய்தி அனுப்பியுள்ளோம்"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. அதிலுள்ளவாறு செய்தபின் கீழுள்ள பட்டனை அழுத்தவும்"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "உள்ளிட்ட மின்னஞ்சல் முகவரி செல்லுபடியாகாதது"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "உள்ளிட்ட தொலைபேசி எண் செல்லுபடியாகாதது"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "தவறான கடவுச்சொல் உள்ளிடப்பட்டது"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5936,7 +5936,7 @@ msgstr ""
"இந்த மின்னஞ்சல் முகவரி உறுதிசெய்யப்படாதது. உங்களுக்கு அனுப்பப்பட்ட அஞ்சலிலுள்ளவாறு "
"செய்தபின் கீழுள்ள பட்டனை அழுத்தவும்"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5945,25 +5945,25 @@ msgstr ""
"இந்த தொலைபேசி எண் உறுதிசெய்யப்படாதது. உங்களுக்கு அனுப்பப்பட்ட குறுஞ்செய்தியிலுள்ளவாறு "
"செய்தபின் கீழுள்ள பட்டனை அழுத்தவும்"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "சேர்"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "பின்னே"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. அதிலுள்ளவாறு செய்தபின் மேலுள்ள பட்டனை அழுத்தவும்"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5972,7 +5972,7 @@ msgstr ""
"இந்த மின்னஞ்சல் முகவரி உறுதிசெய்யப்படாதது. உங்களுக்கு அனுப்பப்பட்ட அஞ்சலிலுள்ளவாறு "
"செய்தபின் மேலுள்ள பட்டனை அழுத்தவும்"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5981,35 +5981,35 @@ msgstr ""
"இந்த தொலைபேசி எண் உறுதிசெய்யப்படாதது. உங்களுக்கு அனுப்பப்பட்ட குறுஞ்செய்தியிலுள்ளவாறு "
"செய்தபின் மேலுள்ள பட்டனை அழுத்தவும்"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 பயனர் உறுதிப்பாட்டைத் துவக்கினார்"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "திருத்தத்தை உறுதிசெய்"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "தொடரில் தகவலை இடு"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "பிடிப்புப்பலகைக்கு நகலெடு"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "அதிகபட்ச பெரிதாக்கு"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6017,20 +6017,20 @@ msgid ""
msgstr ""
"இந்த செய்தி மறையாக்கம் செய்யப்பட்டுள்ளது, ஆனால் அனுப்புநர் இச்சாதனத்துடன் சாவியை பகிரவில்லை."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "கூடுதல் நிகழ்வுகளை பெறு"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "பதிவிறக்கு"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6038,13 +6038,13 @@ msgctxt ""
msgid "Open File"
msgstr "கோப்பை திற"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6073,60 +6073,60 @@ msgstr "நுழைவுப்பதிவுக்கான நேரம்:
msgid "Check-out time: %1"
msgstr "வெளியேற்றப்பதிவுக்கான நேரம்: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "படத்தைக் காட்டு"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "KDE Itinerary-க்கு அனுப்பு"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "முன்னோட்டத்தை நீக்கு"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "முன்னோட்டத்தை சிறிதாக்கு"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "முன்னோட்டத்தை பெரிதாக்கு"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "முகவரியின் முன்னோட்டம் ஏற்றப்படுகிறது"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "வெளியமைவாகத் திற"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "%1 பயனரின் வாக்கின் அடிப்படையில்"
msgstr[1] "%1 பயனர்களின் வாக்குகளின் அடிப்படையில்"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(முடிந்துள்ளது)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6138,7 +6138,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "கடைசியாக படித்தது: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6157,24 +6157,24 @@ msgstr "உரையாடலின் துவக்கம் இது. இ
msgid "Pl. %1"
msgstr "நடைமேடை %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "நிகழ்படம்"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "நிகழ்படத்தை காட்டு"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "ஒலியளவு"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "அதிகபட்ச பெரிதாக்கு"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-01-08 19:47-0500\n"
"Last-Translator: Weblate Admin <admin@example.com>\n"
"Language-Team: Toki Pona <http://weblate.blackquill.cc/projects/ante-toki-pi-"
@@ -1082,7 +1082,7 @@ msgstr ""
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading"
@@ -1115,7 +1115,7 @@ msgid "Loading…"
msgstr "mi pali…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1774,7 +1774,7 @@ msgstr "sitelen Emosi sina"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, fuzzy, kde-format
#| msgid "Loading…"
msgid "Loading reply"
@@ -2054,7 +2054,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr ""
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, fuzzy, kde-format
#| msgid "Contact your matrix server administrator for support."
msgid ""
@@ -2062,18 +2062,18 @@ msgid ""
"for support."
msgstr "o toki tawa lawa sina pi ilo Matrix."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr ""
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr ""
@@ -6081,186 +6081,186 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr ""
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, fuzzy, kde-format
#| msgid "Edit Message"
msgctxt "@action:button"
msgid "Remove"
msgstr "o ante e toki"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr ""
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, fuzzy, kde-format
#| msgid "Cancel"
msgctxt "@action:button"
msgid "Cancel"
msgstr "o ala"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, fuzzy, kde-format
#| msgid "Send message"
msgid "We've sent you a text message"
msgstr "o pana e toki"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, fuzzy, kde-format
#| msgid "Add"
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "o lon e nimi len luka"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr ""
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr ""
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "Configure"
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "o ante e lawa"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, fuzzy, kde-format
#| msgid "Send message"
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "o pana e toki"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr ""
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr ""
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr "toki ni li len. jan pana li pana ala e ken pi lukin len tawa ilo ni."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "o kama jo"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6268,13 +6268,13 @@ msgctxt ""
msgid "Open File"
msgstr "o open e lipu ni"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6303,49 +6303,49 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, fuzzy, kde-format
#| msgid "Ban this user"
msgctxt "@action:button"
msgid "Show Image"
msgstr "o weka wawa e jan ni"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, fuzzy, kde-format
#| msgid "Edit Message"
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "o ante e toki"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr ""
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr ""
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
@@ -6354,13 +6354,13 @@ msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr ""
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6372,7 +6372,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr ""
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6391,25 +6391,25 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "sitelen tawa"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, fuzzy, kde-format
#| msgid "Video"
msgctxt "@action:button"
msgid "Show Video"
msgstr "sitelen tawa"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr ""
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-06 15:14+0300\n"
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
"Language-Team: Turkish <kde-l10n-tr@kde.org>\n"
@@ -1039,7 +1039,7 @@ msgstr "Bu sunucuda kayıt işlemi devre dışı."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Yükleniyor"
@@ -1070,7 +1070,7 @@ msgid "Loading…"
msgstr "Yükleniyor…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1701,7 +1701,7 @@ msgstr "Kendi Emojileriniz"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Yanıt yükleniyor"
@@ -1957,7 +1957,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1, sizi davet etti"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1966,18 +1966,18 @@ msgstr ""
"Dosya indirmek için pek büyük.<br />Destek için Matrix sunucusu yöneticisine "
"ulaşın."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Yapılandırılmış kimlik sunucusu yok"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Oda oluşturulamadı: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Alan oluşturma başarısız: %1"
@@ -5867,86 +5867,86 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Eklenecek Parametre Seç"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Gizle"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Paylaş"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Kaldır"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Tam"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "İptal"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Yeni telefon numarası için ülke kodu"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Yeni e-posta adresi:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Yeni telefon numarası:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Size bir e-posta gönderdik"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Size bir SMS gönderdik"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1. Oradaki yönergeleri izleyin ve aşağıdaki düğmeye tıklayın"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "Girilen e-posta geçerli değil"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Girilen telefon numarası geçerli değil"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Doğru olmayan bir parola girildi"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5955,7 +5955,7 @@ msgstr ""
"E-posta doğrulanmadı. Postanızııp oradaki yönergeleri izleyin ve "
"sonrasında aşağıdaki düğmeye tıklayın"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -5964,25 +5964,25 @@ msgstr ""
"Telefon numarası doğrulanmadı. Gelen SMSe gidin ve oradaki yönergeleri "
"izleyip aşağıdaki düğmeye tıklayın"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Ekle"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Geri"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1. Oradaki yönergeleri izleyin ve yukarıdaki düğmeye tıklayın"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -5991,7 +5991,7 @@ msgstr ""
"E-posta doğrulanmadı. Postanızııp oradaki yönergeleri izleyin ve "
"sonrasında yukarıdaki düğmeye tıklayın"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6000,55 +6000,55 @@ msgstr ""
"Telefon numarası doğrulanmadı. Gelen SMSe gidin ve oradaki yönergeleri "
"izleyip yukarıdaki düğmeye tıklayın"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 bir kullanıcı doğrulaması başlattı"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Düzenlemeyi onayla"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "İleti Dizisine İleti Gönder"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Panoya kopyala"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Ekranı Kapla"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr "Bu ileti şifreli ve gönderen, anahtarı bu aygıt ile paylaşmadı."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Daha Fazla Olay Getir"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "İndir"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6056,13 +6056,13 @@ msgctxt ""
msgid "Open File"
msgstr "Dosya Aç"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6091,60 +6091,60 @@ msgstr "Giriş zamanı: %1"
msgid "Check-out time: %1"
msgstr "Çıkış zamanı: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Görseli Göster"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "KDE Yol Kılavuzuna Gönder"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Önizlemeyi kaldır"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Önizlemeyi küçült"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Önizlemeyi genişlet"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "URL önizlemesi yükleniyor"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Dışarıda Aç"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "%1 kullanıcı tarafından verilen oylara istinaden"
msgstr[1] "%1 kullanıcı tarafından verilen oylara istinaden"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Bitti)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6156,7 +6156,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Son okunma: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6177,24 +6177,24 @@ msgstr ""
msgid "Pl. %1"
msgstr "Pl. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Video"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Videoyu Göster"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Ses Düzeyi"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Son Ses"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-03-06 09:14+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
@@ -1043,7 +1043,7 @@ msgstr "На цьому сервері реєстрацію вимкнено."
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "Завантаження"
@@ -1075,7 +1075,7 @@ msgid "Loading…"
msgstr "Завантаження…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1706,7 +1706,7 @@ msgstr "Власні емоційки"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "Завантаження відповіді"
@@ -1972,7 +1972,7 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "Вас запрошено %1"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
@@ -1981,18 +1981,18 @@ msgstr ""
"Файл є надто великим для отримання.<br />Зв'яжіться із адміністратором "
"вашого сервера matrix, щоб отримати допомогу."
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "Не налаштовано жодного сервера профілів"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "Не вдалося створити кімнату: %1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "Не вдалося створити простір: %1"
@@ -5912,65 +5912,65 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "Виберіть параметр для додавання"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "Приховати"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "Оприлюднити"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "Вилучити"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "Завершено"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "Скасувати"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "Код країни для нового номера телефону"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "Нова адреса електронної пошти:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "Новий номер телефону:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "Ми надіслали вам повідомлення електронної пошти"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "Ми надіслали вам текстове повідомлення"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
@@ -5978,22 +5978,22 @@ msgstr ""
"%1. Будь ласка, виконайте настанови з нього, а потім натисніть кнопку, яку "
"розташовано нижче"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "Введена адреса електронної пошти є некоректною"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "Введений номер телефону є некоректним"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "Введено помилковий пароль"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6003,7 +6003,7 @@ msgstr ""
"повідомлення електронної пошти і виконайте настанови з нього, а потім "
"натисніть кнопку, яку розташовано нижче"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6013,19 +6013,19 @@ msgstr ""
"повідомлення і виконайте настанови з нього, а потім натисніть кнопку, яку "
"розташовано нижче"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "Додати"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "Назад"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
@@ -6033,7 +6033,7 @@ msgstr ""
"%1. Будь ласка, виконайте настанови з нього, а потім натисніть кнопку, яку "
"розташовано вище"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
@@ -6043,7 +6043,7 @@ msgstr ""
"повідомлення електронної пошти і виконайте настанови з нього, а потім "
"натисніть кнопку, яку розташовано вище"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
@@ -6053,35 +6053,35 @@ msgstr ""
"повідомлення і виконайте настанови з нього, а потім натисніть кнопку, яку "
"розташовано вище"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 розпочато перевірку користувача"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "Підтвердити редагування"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "Додати повідомлення до гілки"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "Скопіювати до буфера"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "Максимізувати"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
@@ -6090,20 +6090,20 @@ msgstr ""
"Це повідомлення зашифровано, а відправник не поділився ключем із цим "
"пристроєм."
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "Отримати ще дані подій"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "Отримати"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -6111,13 +6111,13 @@ msgctxt ""
msgid "Open File"
msgstr "Відкрити файл"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 з %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6146,47 +6146,47 @@ msgstr "Час перевірки на вході: %1"
msgid "Check-out time: %1"
msgstr "Час перевірки на виході: %1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "Показати зображення"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "Надіслати до KDE Itinerary"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "Вилучити попередній перегляд"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "Стиснути попередній перегляд"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "Розгорнути попередній перегляд"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "Завантажуємо попередній перегляд адреси"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "Відкрити у сторонній програмі"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
@@ -6195,13 +6195,13 @@ msgstr[1] "На основі голосів %1 користувачів"
msgstr[2] "На основі голосів %1 користувачів"
msgstr[3] "На основі голосу %1 користувача"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(Завершено)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6213,7 +6213,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Востаннє прочитано: %1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6232,24 +6232,24 @@ msgstr "Це початок спілкування. У журналі немає
msgid "Pl. %1"
msgstr "Пл. %1"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "Відео"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "Показати відео"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "Гучність"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "Максимізувати"

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdeorg\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2024-04-23 19:24\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
@@ -1027,7 +1027,7 @@ msgstr "此服务器已禁用注册。"
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "加载中"
@@ -1057,7 +1057,7 @@ msgid "Loading…"
msgstr "加载中…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1691,7 +1691,7 @@ msgstr "自己的表情"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "正在加载回复"
@@ -1940,25 +1940,25 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr ""
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr ""
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr ""
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "聊天室创建失败:%1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "空间创建失败:%1"
@@ -5785,180 +5785,180 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr ""
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr ""
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "分享"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "移除"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr ""
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "取消"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr ""
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr ""
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr ""
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr ""
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr ""
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "添加"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr ""
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr ""
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr ""
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr ""
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "确认编辑"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr ""
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "复制到剪贴板"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "最大化"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr "此消息已加密,但发送者尚未与此设备共享密钥。"
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr ""
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "下载"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -5966,13 +5966,13 @@ msgctxt ""
msgid "Open File"
msgstr "打开文件"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6001,59 +6001,59 @@ msgstr ""
msgid "Check-out time: %1"
msgstr ""
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr ""
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr ""
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "移除预览"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "收缩预览"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "展开预览"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "正在加载 URL 预览"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "在外部打开"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "基于 %1 位用户的投票"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(已结束)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6065,7 +6065,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "上次查看:%1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6084,24 +6084,24 @@ msgstr ""
msgid "Pl. %1"
msgstr ""
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "视频"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr ""
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "音量"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "最大化"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-03-07 00:42+0000\n"
"POT-Creation-Date: 2025-03-11 00:41+0000\n"
"PO-Revision-Date: 2025-02-20 15:27+0900\n"
"Last-Translator: Kisaragi Hiu <mail@kisaragi-hiu.com>\n"
"Language-Team: Traditional Chinese <zh-l10n@lists.slat.org>\n"
@@ -1033,7 +1033,7 @@ msgstr "此伺服器已停用註冊。"
#: src/login/Homeserver.qml:41 src/login/Username.qml:38
#: src/models/messagecontentmodel.cpp:262
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:33
#: src/models/messagecontentmodel.cpp:290 src/timeline/LoadComponent.qml:30
#, kde-format
msgid "Loading"
msgstr "載入中"
@@ -1063,7 +1063,7 @@ msgid "Loading…"
msgstr "載入中…"
#: src/login/Login.qml:38 src/login/WelcomePage.qml:250
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button"
msgid "Continue"
@@ -1693,7 +1693,7 @@ msgstr "自己的表情符號"
#: src/models/messagecontentmodel.cpp:260
#: src/models/messagecontentmodel.cpp:288
#: src/timeline/LinkPreviewLoadComponent.qml:66
#: src/timeline/LinkPreviewLoadComponent.qml:63
#, kde-format
msgid "Loading reply"
msgstr "載入回覆中"
@@ -1943,25 +1943,25 @@ msgctxt "@info:label"
msgid "%1 invited you"
msgstr "%1 邀請了您"
#: src/neochatconnection.cpp:77
#: src/neochatconnection.cpp:75
#, kde-format
msgid ""
"File too large to download.<br />Contact your matrix server administrator "
"for support."
msgstr "檔案超過下載大小上限。請聯絡您的 matrix 伺服器管理員以求支援。"
#: src/neochatconnection.cpp:336
#: src/neochatconnection.cpp:329
#, kde-format
msgctxt "@info"
msgid "No identity server configured"
msgstr "未設定身份伺服器"
#: src/neochatconnection.cpp:367
#: src/neochatconnection.cpp:360
#, kde-format
msgid "Room creation failed: %1"
msgstr "聊天室建立失敗:%1"
#: src/neochatconnection.cpp:397
#: src/neochatconnection.cpp:390
#, kde-format
msgid "Space creation failed: %1"
msgstr "聊天空間建立失敗:%1"
@@ -5795,180 +5795,180 @@ msgctxt "@title:dialog"
msgid "Select Parameter to Add"
msgstr "選擇要加入的參數"
#: src/settings/ThreePIdCard.qml:55
#: src/settings/ThreePIdCard.qml:58
#, kde-format
msgctxt "@action:button"
msgid "Hide"
msgstr "隱藏"
#: src/settings/ThreePIdCard.qml:61
#: src/settings/ThreePIdCard.qml:64
#, kde-format
msgctxt "@action:button"
msgid "Share"
msgstr "分享"
#: src/settings/ThreePIdCard.qml:66
#: src/settings/ThreePIdCard.qml:69
#, kde-format
msgctxt "@action:button"
msgid "Remove"
msgstr "移除"
#: src/settings/ThreePIdCard.qml:85
#: src/settings/ThreePIdCard.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Complete"
msgstr "完成"
#: src/settings/ThreePIdCard.qml:90 src/timeline/ChatBarComponent.qml:110
#: src/settings/ThreePIdCard.qml:93 src/timeline/ChatBarComponent.qml:100
#, kde-format
msgctxt "@action:button"
msgid "Cancel"
msgstr "取消"
#: src/settings/ThreePIdCard.qml:130
#: src/settings/ThreePIdCard.qml:136
#, kde-format
msgctxt "@label:textbox"
msgid "Country Code for new phone number"
msgstr "新的電話號碼的國碼"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Email Address:"
msgstr "新的電子郵件地址:"
#: src/settings/ThreePIdCard.qml:146
#: src/settings/ThreePIdCard.qml:152
#, kde-format
msgctxt "@label:textbox"
msgid "New Phone Number:"
msgstr "新的電話號碼:"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you an email"
msgstr "我們已向您傳送電子郵件"
#: src/settings/ThreePIdCard.qml:150 src/threepidbindhelper.cpp:178
#: src/settings/ThreePIdCard.qml:156 src/threepidbindhelper.cpp:179
#, kde-format
msgid "We've sent you a text message"
msgstr "我們已向您傳送簡訊"
#: src/settings/ThreePIdCard.qml:150
#: src/settings/ThreePIdCard.qml:156
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button below"
msgstr "%1。請跟隨該訊息的指示後點擊下方的按鈕。"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered email is not valid"
msgstr "輸入的電子郵件無效"
#: src/settings/ThreePIdCard.qml:152 src/threepidbindhelper.cpp:180
#: src/settings/ThreePIdCard.qml:158 src/threepidbindhelper.cpp:181
#, kde-format
msgid "The entered phone number is not valid"
msgstr "輸入的電話號碼無效"
#: src/settings/ThreePIdCard.qml:154
#: src/settings/ThreePIdCard.qml:160
#, kde-format
msgid "Incorrect password entered"
msgstr "輸入了錯誤的密碼"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button below"
msgstr "電子郵件尚未驗證。請至電子郵件跟隨訊息的指示,之後點擊下方的按鈕"
#: src/settings/ThreePIdCard.qml:156
#: src/settings/ThreePIdCard.qml:162
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button below"
msgstr "電話號碼尚未驗證。請至簡訊並跟隨其的指示,之後點擊下方的按鈕"
#: src/settings/ThreePIdCard.qml:183
#: src/settings/ThreePIdCard.qml:189
#, kde-format
msgctxt "@action:button Add new email or phone number"
msgid "Add"
msgstr "新增"
#: src/settings/ThreePIdCard.qml:191
#: src/settings/ThreePIdCard.qml:197
#, kde-format
msgctxt "@action:button As in 'go back'"
msgid "Back"
msgstr "返回"
#: src/threepidbindhelper.cpp:177
#: src/threepidbindhelper.cpp:178
#, kde-format
msgid ""
"%1. Please follow the instructions there and then click the button above"
msgstr "%1。請跟隨該訊息的指示後點擊上方的按鈕"
#: src/threepidbindhelper.cpp:183
#: src/threepidbindhelper.cpp:184
#, kde-format
msgid ""
"The email has not been verified. Please go to the email and follow the "
"instructions there and then click the button above"
msgstr "電子郵件尚未驗證。請至電子郵件跟隨訊息的指示,之後點擊上方的按鈕"
#: src/threepidbindhelper.cpp:184
#: src/threepidbindhelper.cpp:185
#, kde-format
msgid ""
"The phone number has not been verified. Please go to the text message and "
"follow the instructions there and then click the button above"
msgstr "電話號碼尚未驗證。請至簡訊並跟隨其的指示,之後點擊上方的按鈕"
#: src/timeline/BaseMessageComponentChooser.qml:249
#: src/timeline/BaseMessageComponentChooser.qml:172
#, kde-format
msgid "%1 started a user verification"
msgstr "%1 開始了使用者驗證"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Confirm edit"
msgstr "確認編輯"
#: src/timeline/ChatBarComponent.qml:98
#: src/timeline/ChatBarComponent.qml:88
#, kde-format
msgctxt "@action:button"
msgid "Post message in thread"
msgstr "在對話串中張貼訊息"
#: src/timeline/CodeComponent.qml:164
#: src/timeline/CodeComponent.qml:159
#, kde-format
msgid "Copy to clipboard"
msgstr "複製到剪貼簿"
#: src/timeline/CodeComponent.qml:176
#: src/timeline/CodeComponent.qml:171
#, kde-format
msgctxt "@action:button"
msgid "Maximize"
msgstr "最大化"
#: src/timeline/EncryptedComponent.qml:21
#: src/timeline/EncryptedComponent.qml:18
#, kde-format
msgid ""
"This message is encrypted and the sender has not shared the key with this "
"device."
msgstr "這個訊息已加密而傳送者並未與本裝置分享金鑰。"
#: src/timeline/FetchButtonComponent.qml:41
#: src/timeline/FetchButtonComponent.qml:36
#, kde-format
msgctxt "@action:button"
msgid "Fetch More Events"
msgstr "取得更多事件"
#: src/timeline/FileComponent.qml:104 src/timeline/FileComponent.qml:187
#: src/timeline/FileComponent.qml:94 src/timeline/FileComponent.qml:177
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to download its file"
msgid "Download"
msgstr "下載"
#: src/timeline/FileComponent.qml:120 src/timeline/FileComponent.qml:177
#: src/timeline/FileComponent.qml:110 src/timeline/FileComponent.qml:167
#, kde-format
msgctxt ""
"tooltip for a button on a message; offers ability to open its downloaded "
@@ -5976,13 +5976,13 @@ msgctxt ""
msgid "Open File"
msgstr "開啟檔案"
#: src/timeline/FileComponent.qml:135
#: src/timeline/FileComponent.qml:125
#, kde-format
msgctxt "file download progress"
msgid "%1 / %2"
msgstr "%1 / %2"
#: src/timeline/FileComponent.qml:140
#: src/timeline/FileComponent.qml:130
#, kde-format
msgctxt ""
"tooltip for a button on a message; stops downloading the message's file"
@@ -6011,59 +6011,59 @@ msgstr "Check-in 時間:%1"
msgid "Check-out time: %1"
msgstr "Check-out 時間:%1"
#: src/timeline/ImageComponent.qml:140
#: src/timeline/ImageComponent.qml:120
#, kde-format
msgctxt "@action:button"
msgid "Show Image"
msgstr "設定影像"
#: src/timeline/ItineraryComponent.qml:57
#: src/timeline/ItineraryComponent.qml:54
#, kde-format
msgctxt "@action"
msgid "Send to KDE Itinerary"
msgstr "傳送到 KDE 旅程計劃"
#: src/timeline/LinkPreviewComponent.qml:136
#: src/timeline/LinkPreviewLoadComponent.qml:79
#: src/timeline/LinkPreviewComponent.qml:131
#: src/timeline/LinkPreviewLoadComponent.qml:76
#, kde-format
msgctxt "As in remove the link preview so it's no longer shown"
msgid "Remove preview"
msgstr "移除預覽"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Shrink preview"
msgstr "收起預覽"
#: src/timeline/LinkPreviewComponent.qml:154
#: src/timeline/LinkPreviewComponent.qml:149
#, kde-format
msgid "Expand preview"
msgstr "展開預覽"
#: src/timeline/LinkPreviewLoadComponent.qml:68
#: src/timeline/LinkPreviewLoadComponent.qml:65
#, kde-format
msgid "Loading URL preview"
msgstr "正在載入網址預覽"
#: src/timeline/LocationComponent.qml:116
#: src/timeline/LocationComponent.qml:111
#, kde-format
msgctxt "@action:button Open the location in an external program"
msgid "Open Externally"
msgstr "在外部開啟"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgid "Based on votes by %1 user"
msgid_plural "Based on votes by %1 users"
msgstr[0] "基於 %1 個使用者的投票"
#: src/timeline/PollComponent.qml:80
#: src/timeline/PollComponent.qml:70
#, kde-format
msgctxt "as in 'this vote has ended'"
msgid "(Ended)"
msgstr "(已結束)"
#: src/timeline/ReactionComponent.qml:97
#: src/timeline/ReactionComponent.qml:89
#, kde-format
msgctxt "@button"
msgid "React"
@@ -6075,7 +6075,7 @@ msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "最後閱讀:%1"
#: src/timeline/ReplyButtonComponent.qml:44
#: src/timeline/ReplyButtonComponent.qml:34
#, kde-format
msgctxt "@action:button"
msgid "Reply"
@@ -6094,24 +6094,24 @@ msgstr "這是此聊天的開頭。沒有比這更早的歷史訊息。"
msgid "Pl. %1"
msgstr "第 %1 月台"
#: src/timeline/VideoComponent.qml:217
#: src/timeline/VideoComponent.qml:197
#, kde-format
msgid "Video"
msgstr "影片"
#: src/timeline/VideoComponent.qml:257
#: src/timeline/VideoComponent.qml:237
#, kde-format
msgctxt "@action:button"
msgid "Show Video"
msgstr "顯示影片"
#: src/timeline/VideoComponent.qml:298
#: src/timeline/VideoComponent.qml:278
#, kde-format
msgctxt "@action:button"
msgid "Volume"
msgstr "音量"
#: src/timeline/VideoComponent.qml:382
#: src/timeline/VideoComponent.qml:362
#, kde-format
msgid "Maximize"
msgstr "最大化"

View File

@@ -10,192 +10,192 @@ endif()
add_library(neochat STATIC
controller.cpp
controller.h
models/emojimodel.cpp
models/emojimodel.h
emojitones.cpp
emojitones.h
models/customemojimodel.cpp
models/customemojimodel.h
clipboard.cpp
clipboard.h
models/timelinemessagemodel.cpp
models/timelinemessagemodel.h
models/messagefiltermodel.cpp
models/messagefiltermodel.h
models/roomlistmodel.cpp
models/roomlistmodel.h
models/sortfilterspacelistmodel.cpp
models/sortfilterspacelistmodel.h
models/accountemoticonmodel.cpp
models/accountemoticonmodel.h
spacehierarchycache.cpp
spacehierarchycache.h
roommanager.cpp
roommanager.h
# models/emojimodel.cpp
# models/emojimodel.h
# emojitones.cpp
# emojitones.h
# models/customemojimodel.cpp
# models/customemojimodel.h
# clipboard.cpp
# clipboard.h
# models/timelinemessagemodel.cpp
# models/timelinemessagemodel.h
# models/messagefiltermodel.cpp
# models/messagefiltermodel.h
# models/roomlistmodel.cpp
# models/roomlistmodel.h
# models/sortfilterspacelistmodel.cpp
# models/sortfilterspacelistmodel.h
# models/accountemoticonmodel.cpp
# models/accountemoticonmodel.h
# spacehierarchycache.cpp
# spacehierarchycache.h
# roommanager.cpp
# roommanager.h
neochatroom.cpp
neochatroom.h
models/userlistmodel.cpp
models/userlistmodel.h
models/userfiltermodel.cpp
models/userfiltermodel.h
models/publicroomlistmodel.cpp
models/publicroomlistmodel.h
models/spacechildrenmodel.cpp
models/spacechildrenmodel.h
models/spacechildsortfiltermodel.cpp
models/spacechildsortfiltermodel.h
models/spacetreeitem.cpp
models/spacetreeitem.h
models/userdirectorylistmodel.cpp
models/userdirectorylistmodel.h
# models/publicroomlistmodel.cpp
# models/publicroomlistmodel.h
# models/spacechildrenmodel.cpp
# models/spacechildrenmodel.h
# models/spacechildsortfiltermodel.cpp
# models/spacechildsortfiltermodel.h
# models/spacetreeitem.cpp
# models/spacetreeitem.h
# models/userdirectorylistmodel.cpp
# models/userdirectorylistmodel.h
models/pushrulemodel.cpp
models/pushrulemodel.h
models/emoticonfiltermodel.cpp
models/emoticonfiltermodel.h
notificationsmanager.cpp
notificationsmanager.h
models/sortfilterroomlistmodel.cpp
models/sortfilterroomlistmodel.h
# models/emoticonfiltermodel.cpp
# models/emoticonfiltermodel.h
# notificationsmanager.cpp
# notificationsmanager.h
# models/sortfilterroomlistmodel.cpp
# models/sortfilterroomlistmodel.h
models/roomtreemodel.cpp
models/roomtreemodel.h
chatdocumenthandler.cpp
chatdocumenthandler.h
models/devicesmodel.cpp
models/devicesmodel.h
models/devicesproxymodel.cpp
filetype.cpp
filetype.h
login.cpp
login.h
models/webshortcutmodel.cpp
models/webshortcutmodel.h
# models/devicesmodel.cpp
# models/devicesmodel.h
# models/devicesproxymodel.cpp
# filetype.cpp
# filetype.h
# login.cpp
# login.h
# models/webshortcutmodel.cpp
# models/webshortcutmodel.h
blurhash.cpp
blurhash.h
blurhashimageprovider.cpp
blurhashimageprovider.h
models/mediamessagefiltermodel.cpp
models/mediamessagefiltermodel.h
urlhelper.cpp
urlhelper.h
# models/mediamessagefiltermodel.cpp
# models/mediamessagefiltermodel.h
# urlhelper.cpp
# urlhelper.h
windowcontroller.cpp
windowcontroller.h
linkpreviewer.cpp
linkpreviewer.h
# linkpreviewer.cpp
# linkpreviewer.h
models/completionmodel.cpp
models/completionmodel.h
models/completionproxymodel.cpp
models/completionproxymodel.h
models/actionsmodel.cpp
models/actionsmodel.h
models/serverlistmodel.cpp
models/serverlistmodel.h
models/statemodel.cpp
models/statemodel.h
models/statefiltermodel.cpp
models/statefiltermodel.h
filetransferpseudojob.cpp
filetransferpseudojob.h
models/searchmodel.cpp
models/searchmodel.h
texthandler.cpp
texthandler.h
# models/completionproxymodel.cpp
# models/completionproxymodel.h
# models/actionsmodel.cpp
# models/actionsmodel.h
# models/serverlistmodel.cpp
# models/serverlistmodel.h
# models/statemodel.cpp
# models/statemodel.h
# models/statefiltermodel.cpp
# models/statefiltermodel.h
# filetransferpseudojob.cpp
# filetransferpseudojob.h
# models/searchmodel.cpp
# models/searchmodel.h
# texthandler.cpp
# texthandler.h
logger.cpp
logger.h
models/stickermodel.cpp
models/stickermodel.h
models/imagepacksmodel.cpp
models/imagepacksmodel.h
events/imagepackevent.cpp
events/imagepackevent.h
models/reactionmodel.cpp
models/reactionmodel.h
# models/stickermodel.cpp
# models/stickermodel.h
# models/imagepacksmodel.cpp
# models/imagepacksmodel.h
# events/imagepackevent.cpp
# events/imagepackevent.h
# models/reactionmodel.cpp
# models/reactionmodel.h
delegatesizehelper.cpp
delegatesizehelper.h
models/livelocationsmodel.cpp
models/livelocationsmodel.h
models/locationsmodel.cpp
models/locationsmodel.h
locationhelper.cpp
locationhelper.h
events/pollevent.cpp
pollhandler.cpp
# models/livelocationsmodel.cpp
# models/livelocationsmodel.h
# models/locationsmodel.cpp
# models/locationsmodel.h
# locationhelper.cpp
# locationhelper.h
# events/pollevent.cpp
# pollhandler.cpp
utils.h
utils.cpp
registration.cpp
# registration.cpp
neochatconnection.cpp
neochatconnection.h
jobs/neochatgetcommonroomsjob.cpp
jobs/neochatgetcommonroomsjob.h
# jobs/neochatgetcommonroomsjob.cpp
# jobs/neochatgetcommonroomsjob.h
mediasizehelper.cpp
mediasizehelper.h
eventhandler.cpp
enums/delegatetype.h
roomlastmessageprovider.cpp
roomlastmessageprovider.h
# eventhandler.cpp
# enums/delegatetype.h
# roomlastmessageprovider.cpp
# roomlastmessageprovider.h
chatbarcache.cpp
chatbarcache.h
colorschemer.cpp
colorschemer.h
models/notificationsmodel.cpp
models/notificationsmodel.h
models/timelinemodel.cpp
models/timelinemodel.h
# models/notificationsmodel.cpp
# models/notificationsmodel.h
# models/timelinemodel.cpp
# models/timelinemodel.h
enums/pushrule.h
models/itinerarymodel.cpp
models/itinerarymodel.h
# models/itinerarymodel.cpp
# models/itinerarymodel.h
proxycontroller.cpp
proxycontroller.h
models/linemodel.cpp
models/linemodel.h
events/locationbeaconevent.h
events/widgetevent.h
enums/messagecomponenttype.h
models/messagecontentmodel.cpp
models/messagecontentmodel.h
# events/locationbeaconevent.h
# events/widgetevent.h
# enums/messagecomponenttype.h
# models/messagecontentmodel.cpp
# models/messagecontentmodel.h
enums/neochatroomtype.h
models/sortfilterroomtreemodel.cpp
models/sortfilterroomtreemodel.h
mediamanager.cpp
mediamanager.h
models/statekeysmodel.cpp
models/statekeysmodel.h
sharehandler.cpp
sharehandler.h
# models/statekeysmodel.cpp
# models/statekeysmodel.h
# sharehandler.cpp
# sharehandler.h
models/roomtreeitem.cpp
models/roomtreeitem.h
foreigntypes.h
models/threepidmodel.cpp
models/threepidmodel.h
threepidaddhelper.cpp
threepidaddhelper.h
identityserverhelper.cpp
identityserverhelper.h
enums/powerlevel.cpp
enums/powerlevel.h
models/permissionsmodel.cpp
models/permissionsmodel.h
threepidbindhelper.cpp
threepidbindhelper.h
models/readmarkermodel.cpp
models/readmarkermodel.h
neochatroommember.cpp
neochatroommember.h
models/threadmodel.cpp
models/threadmodel.h
enums/messagetype.h
messagecomponent.h
# models/threepidmodel.cpp
# models/threepidmodel.h
# threepidaddhelper.cpp
# threepidaddhelper.h
# identityserverhelper.cpp
# identityserverhelper.h
# enums/powerlevel.cpp
# enums/powerlevel.h
# models/permissionsmodel.cpp
# models/permissionsmodel.h
# threepidbindhelper.cpp
# threepidbindhelper.h
# models/readmarkermodel.cpp
# models/readmarkermodel.h
# neochatroommember.cpp
# neochatroommember.h
# models/threadmodel.cpp
# models/threadmodel.h
# enums/messagetype.h
# messagecomponent.h
enums/roomsortparameter.cpp
enums/roomsortparameter.h
models/roomsortparametermodel.cpp
models/roomsortparametermodel.h
models/messagemodel.cpp
models/messagemodel.h
models/messagecontentfiltermodel.cpp
models/messagecontentfiltermodel.h
models/pinnedmessagemodel.cpp
models/pinnedmessagemodel.h
models/commonroomsmodel.cpp
models/commonroomsmodel.h
# models/roomsortparametermodel.cpp
# models/roomsortparametermodel.h
# models/messagemodel.cpp
# models/messagemodel.h
# models/messagecontentfiltermodel.cpp
# models/messagecontentfiltermodel.h
# models/pinnedmessagemodel.cpp
# models/pinnedmessagemodel.h
# models/commonroomsmodel.cpp
# models/commonroomsmodel.h
)
set_source_files_properties(qml/OsmLocationPlugin.qml PROPERTIES
@@ -296,6 +296,9 @@ ecm_add_qml_module(neochat URI org.kde.neochat GENERATE_PLUGIN_SOURCE
qml/HoverLinkIndicator.qml
qml/AvatarNotification.qml
qml/ReasonDialog.qml
SOURCES
# messageattached.cpp
# messageattached.h
DEPENDENCIES
QtCore
QtQuick
@@ -395,10 +398,10 @@ endif()
if (NOT ANDROID AND NOT WIN32 AND NOT APPLE AND NOT HAIKU)
target_compile_definitions(neochat PUBLIC -DHAVE_RUNNER)
target_compile_definitions(neochat PUBLIC -DHAVE_X11=1)
target_sources(neochat PRIVATE runner.cpp)
# target_sources(neochat PRIVATE runner.cpp)
if (TARGET KUnifiedPush)
target_sources(neochat PRIVATE fakerunner.cpp)
# target_sources(neochat PRIVATE fakerunner.cpp)
endif()
else()
target_compile_definitions(neochat PUBLIC -DHAVE_X11=0)
@@ -424,7 +427,7 @@ target_link_libraries(neochat PUBLIC
KF6::IconThemes
KF6::ColorScheme
KF6::ItemModels
QuotientQt6
Integral
cmark::cmark
QCoro::Core
QCoro::Network

View File

@@ -344,13 +344,13 @@ QQC2.Control {
Item {
implicitWidth: replyComponent.implicitWidth
implicitHeight: replyComponent.implicitHeight
ReplyComponent {
id: replyComponent
replyEventId: _private.chatBarCache.replyId
replyAuthor: _private.chatBarCache.relationAuthor
replyContentModel: _private.chatBarCache.relationEventContentModel
maxContentWidth: paneLoader.item.width
}
// ReplyComponent {
// id: replyComponent
// replyEventId: _private.chatBarCache.replyId
// replyAuthor: _private.chatBarCache.relationAuthor
// replyContentModel: _private.chatBarCache.relationEventContentModel
// Message.maxContentWidth: paneLoader.item.width
// }
QQC2.Button {
id: cancelButton
@@ -498,23 +498,23 @@ QQC2.Control {
}
}
EmojiDialog {
id: emojiDialog
x: root.width - width
y: -implicitHeight
modal: false
includeCustom: true
closeOnChosen: false
currentRoom: root.currentRoom
onChosen: emoji => insertText(emoji)
onClosed: if (emojiAction.checked) {
emojiAction.checked = false;
}
}
// EmojiDialog {
// id: emojiDialog
//
// x: root.width - width
// y: -implicitHeight
//
// modal: false
// includeCustom: true
// closeOnChosen: false
//
// currentRoom: root.currentRoom
//
// onChosen: emoji => insertText(emoji)
// onClosed: if (emojiAction.checked) {
// emojiAction.checked = false;
// }
// }
function insertText(text) {
let initialCursorPosition = textField.cursorPosition;

View File

@@ -2,14 +2,15 @@
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
#include "chatbarcache.h"
#include "chatdocumenthandler.h"
#include <Quotient/roommember.h>
#include "chatdocumenthandler.h"
#include "eventhandler.h"
#include "models/actionsmodel.h"
// #include "chatdocumenthandler.h"
// #include "eventhandler.h"
// #include "models/actionsmodel.h"
#include "neochatroom.h"
#include "texthandler.h"
// #include "texthandler.h"
using namespace Qt::StringLiterals;
@@ -88,7 +89,7 @@ void ChatBarCache::setReplyId(const QString &replyId)
m_relationType = Reply;
}
m_attachmentPath = QString();
delete m_relationContentModel;
// delete m_relationContentModel;
Q_EMIT relationIdChanged(oldEventId, m_relationId);
Q_EMIT attachmentPathChanged();
}
@@ -118,27 +119,27 @@ void ChatBarCache::setEditId(const QString &editId)
m_relationType = Edit;
}
m_attachmentPath = QString();
delete m_relationContentModel;
// delete m_relationContentModel;
Q_EMIT relationIdChanged(oldEventId, m_relationId);
Q_EMIT attachmentPathChanged();
}
Quotient::RoomMember ChatBarCache::relationAuthor() const
{
if (parent() == nullptr) {
qWarning() << "ChatBarCache created with no parent, a NeoChatRoom must be set as the parent on creation.";
return {};
}
auto room = dynamic_cast<NeoChatRoom *>(parent());
if (room == nullptr) {
qWarning() << "ChatBarCache created with incorrect parent, a NeoChatRoom must be set as the parent on creation.";
return {};
}
if (m_relationId.isEmpty()) {
return room->member(QString());
}
return room->member((*room->findInTimeline(m_relationId))->senderId());
}
// Quotient::RoomMember ChatBarCache::relationAuthor() const
// {
// if (parent() == nullptr) {
// qWarning() << "ChatBarCache created with no parent, a NeoChatRoom must be set as the parent on creation.";
// return {};
// }
// auto room = dynamic_cast<NeoChatRoom *>(parent());
// if (room == nullptr) {
// qWarning() << "ChatBarCache created with incorrect parent, a NeoChatRoom must be set as the parent on creation.";
// return {};
// }
// if (m_relationId.isEmpty()) {
// return room->member(QString());
// }
// return room->member((*room->findInTimeline(m_relationId))->senderId());
// }
QString ChatBarCache::relationMessage() const
{
@@ -155,33 +156,33 @@ QString ChatBarCache::relationMessage() const
return {};
}
if (auto event = room->findInTimeline(m_relationId); event != room->historyEdge()) {
return EventHandler::markdownBody(&**event);
}
// if (auto event = room->findInTimeline(m_relationId); event != room->historyEdge()) {
// return EventHandler::markdownBody(&**event);
// }
return {};
}
MessageContentModel *ChatBarCache::relationEventContentModel()
{
if (parent() == nullptr) {
qWarning() << "ChatBarCache created with no parent, a NeoChatRoom must be set as the parent on creation.";
return nullptr;
}
if (m_relationId.isEmpty()) {
return nullptr;
}
if (m_relationContentModel != nullptr) {
return m_relationContentModel;
}
auto room = dynamic_cast<NeoChatRoom *>(parent());
if (room == nullptr) {
qWarning() << "ChatBarCache created with incorrect parent, a NeoChatRoom must be set as the parent on creation.";
return nullptr;
}
m_relationContentModel = new MessageContentModel(room, m_relationId, true);
return m_relationContentModel;
}
// MessageContentModel *ChatBarCache::relationEventContentModel()
// {
// if (parent() == nullptr) {
// qWarning() << "ChatBarCache created with no parent, a NeoChatRoom must be set as the parent on creation.";
// return nullptr;
// }
// if (m_relationId.isEmpty()) {
// return nullptr;
// }
// if (m_relationContentModel != nullptr) {
// return m_relationContentModel;
// }
//
// auto room = dynamic_cast<NeoChatRoom *>(parent());
// if (room == nullptr) {
// qWarning() << "ChatBarCache created with incorrect parent, a NeoChatRoom must be set as the parent on creation.";
// return nullptr;
// }
// m_relationContentModel = new MessageContentModel(room, m_relationId, true);
// return m_relationContentModel;
// }
bool ChatBarCache::isThreaded() const
{
@@ -215,7 +216,7 @@ void ChatBarCache::setAttachmentPath(const QString &attachmentPath)
m_attachmentPath = attachmentPath;
m_relationType = None;
const auto oldEventId = std::exchange(m_relationId, QString());
delete m_relationContentModel;
// delete m_relationContentModel;
Q_EMIT attachmentPathChanged();
Q_EMIT relationIdChanged(oldEventId, m_relationId);
}
@@ -225,7 +226,7 @@ void ChatBarCache::clearRelations()
const auto oldEventId = std::exchange(m_relationId, QString());
const auto oldThreadId = std::exchange(m_threadId, QString());
m_attachmentPath = QString();
delete m_relationContentModel;
// delete m_relationContentModel;
Q_EMIT relationIdChanged(oldEventId, m_relationId);
Q_EMIT threadIdChanged(oldThreadId, m_threadId);
Q_EMIT attachmentPathChanged();
@@ -238,7 +239,7 @@ QList<Mention> *ChatBarCache::mentions()
void ChatBarCache::updateMentions(QQuickTextDocument *document, ChatDocumentHandler *documentHandler)
{
documentHandler->setDocument(document);
// documentHandler->setDocument(document);
if (parent() == nullptr) {
qWarning() << "ChatBarCache created with no parent, a NeoChatRoom must be set as the parent on creation.";
@@ -253,35 +254,35 @@ void ChatBarCache::updateMentions(QQuickTextDocument *document, ChatDocumentHand
return;
}
if (auto event = room->findInTimeline(m_relationId); event != room->historyEdge()) {
if (const auto &roomMessageEvent = &*event->viewAs<Quotient::RoomMessageEvent>()) {
// Replaces the mentions that are baked into the HTML but plaintext in the original markdown
const QRegularExpression re(uR"lit(<a\shref="https:\/\/matrix.to\/#\/([\S]*)"\s?>([\S]*)<\/a>)lit"_s);
m_mentions.clear();
int linkSize = 0;
auto matches = re.globalMatch(EventHandler::rawMessageBody(*roomMessageEvent));
while (matches.hasNext()) {
const QRegularExpressionMatch match = matches.next();
if (match.hasMatch()) {
const QString id = match.captured(1);
const QString name = match.captured(2);
const int position = match.capturedStart(0) - linkSize;
const int end = position + name.length();
linkSize += match.capturedLength(0) - name.length();
QTextCursor cursor(documentHandler->document()->textDocument());
cursor.setPosition(position);
cursor.setPosition(end, QTextCursor::KeepAnchor);
cursor.setKeepPositionOnInsert(true);
m_mentions.push_back(Mention{.cursor = cursor, .text = name, .start = position, .position = end, .id = id});
}
}
}
}
// if (auto event = room->findInTimeline(m_relationId); event != room->historyEdge()) {
// if (const auto &roomMessageEvent = &*event->viewAs<Quotient::RoomMessageEvent>()) {
// // Replaces the mentions that are baked into the HTML but plaintext in the original markdown
// const QRegularExpression re(uR"lit(<a\shref="https:\/\/matrix.to\/#\/([\S]*)"\s?>([\S]*)<\/a>)lit"_s);
//
// m_mentions.clear();
//
// int linkSize = 0;
// auto matches = re.globalMatch(EventHandler::rawMessageBody(*roomMessageEvent));
// while (matches.hasNext()) {
// const QRegularExpressionMatch match = matches.next();
// if (match.hasMatch()) {
// const QString id = match.captured(1);
// const QString name = match.captured(2);
//
// const int position = match.capturedStart(0) - linkSize;
// const int end = position + name.length();
// linkSize += match.capturedLength(0) - name.length();
//
// QTextCursor cursor(documentHandler->document()->textDocument());
// cursor.setPosition(position);
// cursor.setPosition(end, QTextCursor::KeepAnchor);
// cursor.setKeepPositionOnInsert(true);
//
// m_mentions.push_back(Mention{.cursor = cursor, .text = name, .start = position, .position = end, .id = id});
// }
// }
// }
// }
}
QString ChatBarCache::savedText() const
@@ -308,37 +309,37 @@ void ChatBarCache::postMessage()
return;
}
const auto result = ActionsModel::handleAction(room, this);
if (!result.second.has_value()) {
return;
}
// const auto result = ActionsModel::handleAction(room, this);
// if (!result.second.has_value()) {
// return;
// }
TextHandler textHandler;
textHandler.setData(*std::get<std::optional<QString>>(result));
const auto sendText = textHandler.handleSendText();
if (sendText.length() == 0) {
return;
}
// TextHandler textHandler;
// textHandler.setData(*std::get<std::optional<QString>>(result));
// const auto sendText = textHandler.handleSendText();
//
// if (sendText.length() == 0) {
// return;
// }
bool isReply = !replyId().isEmpty();
const auto replyIt = room->findInTimeline(replyId());
if (replyIt == room->historyEdge()) {
isReply = false;
}
// const auto replyIt = room->findInTimeline(replyId());
// if (replyIt == room->historyEdge()) {
// isReply = false;
// }
auto content = std::make_unique<Quotient::EventContent::TextContent>(sendText, u"text/html"_s);
std::optional<Quotient::EventRelation> relatesTo = std::nullopt;
// auto content = std::make_unique<Quotient::EventContent::TextContent>(sendText, u"text/html"_s);
// std::optional<Quotient::EventRelation> relatesTo = std::nullopt;
//
// if (!threadId().isEmpty()) {
// relatesTo = Quotient::EventRelation::replyInThread(threadId(), !isReply, isReply ? replyId() : threadId());
// } else if (!editId().isEmpty()) {
// relatesTo = Quotient::EventRelation::replace(editId());
// } else if (isReply) {
// relatesTo = Quotient::EventRelation::replyTo(replyId());
// }
if (!threadId().isEmpty()) {
relatesTo = Quotient::EventRelation::replyInThread(threadId(), !isReply, isReply ? replyId() : threadId());
} else if (!editId().isEmpty()) {
relatesTo = Quotient::EventRelation::replace(editId());
} else if (isReply) {
relatesTo = Quotient::EventRelation::replyTo(replyId());
}
room->post<Quotient::RoomMessageEvent>(text(), *std::get<std::optional<Quotient::RoomMessageEvent::MsgType>>(result), std::move(content), relatesTo);
// room->post<Quotient::RoomMessageEvent>(text(), *std::get<std::optional<Quotient::RoomMessageEvent::MsgType>>(result), std::move(content), relatesTo);
clearCache();
}

View File

@@ -8,7 +8,7 @@
#include <QQuickTextDocument>
#include <QTextCursor>
#include "models/messagecontentmodel.h"
// #include "models/messagecontentmodel.h"
class ChatDocumentHandler;
@@ -102,7 +102,7 @@ class ChatBarCache : public QObject
*
* @sa Quotient::RoomMember
*/
Q_PROPERTY(Quotient::RoomMember relationAuthor READ relationAuthor NOTIFY relationIdChanged)
// Q_PROPERTY(Quotient::RoomMember relationAuthor READ relationAuthor NOTIFY relationIdChanged)
/**
* @brief The content of the related message.
@@ -116,7 +116,7 @@ class ChatBarCache : public QObject
*
* Will be nullptr if no related message.
*/
Q_PROPERTY(MessageContentModel *relationEventContentModel READ relationEventContentModel NOTIFY relationIdChanged)
// Q_PROPERTY(MessageContentModel *relationEventContentModel READ relationEventContentModel NOTIFY relationIdChanged)
/**
* @brief Whether the chat bar is replying in a thread.
@@ -164,10 +164,10 @@ public:
QString editId() const;
void setEditId(const QString &editId);
Quotient::RoomMember relationAuthor() const;
// Quotient::RoomMember relationAuthor() const;
QString relationMessage() const;
MessageContentModel *relationEventContentModel();
// MessageContentModel *relationEventContentModel();
bool isThreaded() const;
QString threadId() const;
@@ -225,7 +225,7 @@ private:
QList<Mention> m_mentions;
QString m_savedText;
QPointer<MessageContentModel> m_relationContentModel;
// QPointer<MessageContentModel> m_relationContentModel;
void clearCache();
};

View File

@@ -105,7 +105,7 @@ ChatDocumentHandler::ChatDocumentHandler(QObject *parent)
, m_completionModel(new CompletionModel(this))
{
connect(this, &ChatDocumentHandler::roomChanged, this, [this]() {
m_completionModel->setRoom(m_room);
// m_completionModel->setRoom(m_room);
static QPointer<NeoChatRoom> previousRoom = nullptr;
if (previousRoom) {
disconnect(m_chatBarCache, &ChatBarCache::textChanged, this, nullptr);
@@ -113,7 +113,7 @@ ChatDocumentHandler::ChatDocumentHandler(QObject *parent)
previousRoom = m_room;
connect(m_chatBarCache, &ChatBarCache::textChanged, this, [this]() {
int start = completionStartIndex();
m_completionModel->setText(getText().mid(start, cursorPosition() - start), getText().mid(start));
// m_completionModel->setText(getText().mid(start, cursorPosition() - start), getText().mid(start));
});
});
connect(this, &ChatDocumentHandler::documentChanged, this, [this]() {
@@ -124,7 +124,7 @@ ChatDocumentHandler::ChatDocumentHandler(QObject *parent)
return;
}
int start = completionStartIndex();
m_completionModel->setText(getText().mid(start, cursorPosition() - start), getText().mid(start));
// m_completionModel->setText(getText().mid(start, cursorPosition() - start), getText().mid(start));
});
}
@@ -217,58 +217,58 @@ void ChatDocumentHandler::complete(int index)
qCWarning(ChatDocumentHandling) << "complete called with m_document set to nullptr.";
return;
}
if (m_completionModel->autoCompletionType() == CompletionModel::None) {
qCWarning(ChatDocumentHandling) << "complete called with m_completionModel->autoCompletionType() == CompletionModel::None.";
return;
}
// if (m_completionModel->autoCompletionType() == CompletionModel::None) {
// qCWarning(ChatDocumentHandling) << "complete called with m_completionModel->autoCompletionType() == CompletionModel::None.";
// return;
// }
// Ensure we only search for the beginning of the current completion identifier
const auto fromIndex = qMax(completionStartIndex(), 0);
if (m_completionModel->autoCompletionType() == CompletionModel::User) {
auto name = m_completionModel->data(m_completionModel->index(index, 0), CompletionModel::DisplayNameRole).toString();
auto id = m_completionModel->data(m_completionModel->index(index, 0), CompletionModel::SubtitleRole).toString();
auto text = getText();
auto at = text.indexOf(QLatin1Char('@'), fromIndex);
QTextCursor cursor(document()->textDocument());
cursor.setPosition(at);
cursor.setPosition(cursorPosition(), QTextCursor::KeepAnchor);
cursor.insertText(name + u" "_s);
cursor.setPosition(at);
cursor.setPosition(cursor.position() + name.size(), QTextCursor::KeepAnchor);
cursor.setKeepPositionOnInsert(true);
pushMention({cursor, name, 0, 0, id});
m_highlighter->rehighlight();
} else if (m_completionModel->autoCompletionType() == CompletionModel::Command) {
auto command = m_completionModel->data(m_completionModel->index(index, 0), CompletionModel::ReplacedTextRole).toString();
auto text = getText();
auto at = text.indexOf(QLatin1Char('/'), fromIndex);
QTextCursor cursor(document()->textDocument());
cursor.setPosition(at);
cursor.setPosition(cursorPosition(), QTextCursor::KeepAnchor);
cursor.insertText(u"/%1 "_s.arg(command));
} else if (m_completionModel->autoCompletionType() == CompletionModel::Room) {
auto alias = m_completionModel->data(m_completionModel->index(index, 0), CompletionModel::SubtitleRole).toString();
auto text = getText();
auto at = text.indexOf(QLatin1Char('#'), fromIndex);
QTextCursor cursor(document()->textDocument());
cursor.setPosition(at);
cursor.setPosition(cursorPosition(), QTextCursor::KeepAnchor);
cursor.insertText(alias + u" "_s);
cursor.setPosition(at);
cursor.setPosition(cursor.position() + alias.size(), QTextCursor::KeepAnchor);
cursor.setKeepPositionOnInsert(true);
pushMention({cursor, alias, 0, 0, alias});
m_highlighter->rehighlight();
} else if (m_completionModel->autoCompletionType() == CompletionModel::Emoji) {
auto shortcode = m_completionModel->data(m_completionModel->index(index, 0), CompletionModel::ReplacedTextRole).toString();
auto text = getText();
auto at = text.indexOf(QLatin1Char(':'), fromIndex);
QTextCursor cursor(document()->textDocument());
cursor.setPosition(at);
cursor.setPosition(cursorPosition(), QTextCursor::KeepAnchor);
cursor.insertText(shortcode);
}
// if (m_completionModel->autoCompletionType() == CompletionModel::User) {
// auto name = m_completionModel->data(m_completionModel->index(index, 0), CompletionModel::DisplayNameRole).toString();
// auto id = m_completionModel->data(m_completionModel->index(index, 0), CompletionModel::SubtitleRole).toString();
// auto text = getText();
// auto at = text.indexOf(QLatin1Char('@'), fromIndex);
// QTextCursor cursor(document()->textDocument());
// cursor.setPosition(at);
// cursor.setPosition(cursorPosition(), QTextCursor::KeepAnchor);
// cursor.insertText(name + u" "_s);
// cursor.setPosition(at);
// cursor.setPosition(cursor.position() + name.size(), QTextCursor::KeepAnchor);
// cursor.setKeepPositionOnInsert(true);
// pushMention({cursor, name, 0, 0, id});
// m_highlighter->rehighlight();
// } else if (m_completionModel->autoCompletionType() == CompletionModel::Command) {
// auto command = m_completionModel->data(m_completionModel->index(index, 0), CompletionModel::ReplacedTextRole).toString();
// auto text = getText();
// auto at = text.indexOf(QLatin1Char('/'), fromIndex);
// QTextCursor cursor(document()->textDocument());
// cursor.setPosition(at);
// cursor.setPosition(cursorPosition(), QTextCursor::KeepAnchor);
// cursor.insertText(u"/%1 "_s.arg(command));
// } else if (m_completionModel->autoCompletionType() == CompletionModel::Room) {
// auto alias = m_completionModel->data(m_completionModel->index(index, 0), CompletionModel::SubtitleRole).toString();
// auto text = getText();
// auto at = text.indexOf(QLatin1Char('#'), fromIndex);
// QTextCursor cursor(document()->textDocument());
// cursor.setPosition(at);
// cursor.setPosition(cursorPosition(), QTextCursor::KeepAnchor);
// cursor.insertText(alias + u" "_s);
// cursor.setPosition(at);
// cursor.setPosition(cursor.position() + alias.size(), QTextCursor::KeepAnchor);
// cursor.setKeepPositionOnInsert(true);
// pushMention({cursor, alias, 0, 0, alias});
// m_highlighter->rehighlight();
// } else if (m_completionModel->autoCompletionType() == CompletionModel::Emoji) {
// auto shortcode = m_completionModel->data(m_completionModel->index(index, 0), CompletionModel::ReplacedTextRole).toString();
// auto text = getText();
// auto at = text.indexOf(QLatin1Char(':'), fromIndex);
// QTextCursor cursor(document()->textDocument());
// cursor.setPosition(at);
// cursor.setPosition(cursorPosition(), QTextCursor::KeepAnchor);
// cursor.insertText(shortcode);
// }
}
CompletionModel *ChatDocumentHandler::completionModel() const

View File

@@ -8,19 +8,16 @@
#include <KLocalizedString>
#include <QFile>
#include <QGuiApplication>
#include <QTimer>
#include <signal.h>
#include <Quotient/csapi/notifications.h>
#include <Quotient/qt_connection_util.h>
#include <Quotient/settings.h>
#include "neochatconfig.h"
#include "neochatconnection.h"
#include "neochatroom.h"
#include "notificationsmanager.h"
// #include "neochatroom.h"
// #include "notificationsmanager.h"
#include "proxycontroller.h"
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
@@ -43,12 +40,13 @@
bool testMode = false;
using namespace Quotient;
using namespace Integral;
using namespace Qt::Literals::StringLiterals;
Controller::Controller(QObject *parent)
: QObject(parent)
{
Connection::setRoomType<NeoChatRoom>();
// Connection::setRoomType<NeoChatRoom>();
ProxyController::instance().setApplicationProxy();
@@ -57,18 +55,18 @@ Controller::Controller(QObject *parent)
connect(NeoChatConfig::self(), &NeoChatConfig::SystemTrayChanged, this, &Controller::setQuitOnLastWindowClosed);
#endif
if (!testMode) {
QTimer::singleShot(0, this, [this] {
invokeLogin();
});
} else {
auto c = new NeoChatConnection(this);
c->assumeIdentity(u"@user:localhost:1234"_s, u"device_1234"_s, u"token_1234"_s);
connect(c, &Connection::connected, this, [c, this]() {
m_accountRegistry.add(c);
c->syncLoop();
});
}
// if (!testMode) {
// QTimer::singleShot(0, this, [this] {
// invokeLogin();
// });
// } else {
// auto c = new NeoChatConnection(this);
// c->assumeIdentity(u"@user:localhost:1234"_s, u"device_1234"_s, u"token_1234"_s);
// connect(c, &Connection::connected, this, [c, this]() {
// m_accountRegistry.add(c);
// c->syncLoop();
// });
// }
QObject::connect(QGuiApplication::instance(), &QCoreApplication::aboutToQuit, QGuiApplication::instance(), [this] {
delete m_trayIcon;
@@ -99,31 +97,31 @@ Controller::Controller(QObject *parent)
#endif
static int oldAccountCount = 0;
connect(&m_accountRegistry, &AccountRegistry::accountCountChanged, this, [this]() {
if (m_accountRegistry.size() > oldAccountCount) {
auto connection = dynamic_cast<NeoChatConnection *>(m_accountRegistry.accounts()[m_accountRegistry.size() - 1]);
connect(
connection,
&NeoChatConnection::syncDone,
this,
[this, connection] {
if (!m_endpoint.isEmpty()) {
connection->setupPushNotifications(m_endpoint);
}
},
Qt::SingleShotConnection);
}
oldAccountCount = m_accountRegistry.size();
});
// connect(&m_accountRegistry, &AccountRegistry::accountCountChanged, this, [this]() {
// if (m_accountRegistry.size() > oldAccountCount) {
// auto connection = dynamic_cast<NeoChatConnection *>(m_accountRegistry.accounts()[m_accountRegistry.size() - 1]);
// connect(
// connection,
// &NeoChatConnection::syncDone,
// this,
// [this, connection] {
// if (!m_endpoint.isEmpty()) {
// connection->setupPushNotifications(m_endpoint);
// }
// },
// Qt::SingleShotConnection);
// }
// oldAccountCount = m_accountRegistry.size();
// });
#ifdef HAVE_KUNIFIEDPUSH
auto connector = new KUnifiedPush::Connector(u"org.kde.neochat"_s);
connect(connector, &KUnifiedPush::Connector::endpointChanged, this, [this](const QString &endpoint) {
m_endpoint = endpoint;
for (auto &quotientConnection : m_accountRegistry) {
auto connection = dynamic_cast<NeoChatConnection *>(quotientConnection);
connection->setupPushNotifications(endpoint);
}
// for (auto &quotientConnection : m_accountRegistry) {
// auto connection = dynamic_cast<NeoChatConnection *>(quotientConnection);
// connection->setupPushNotifications(endpoint);
// }
});
connector->registerClient(
@@ -140,147 +138,6 @@ Controller &Controller::instance()
return _instance;
}
void Controller::addConnection(NeoChatConnection *c)
{
Q_ASSERT_X(c, __FUNCTION__, "Attempt to add a null connection");
m_accountRegistry.add(c);
c->setLazyLoading(true);
connect(c, &NeoChatConnection::syncDone, this, [c] {
c->sync(30000);
c->saveState();
});
connect(c, &NeoChatConnection::loggedOut, this, [this, c] {
if (accounts().count() > 1) {
// Only set the connection if the account being logged out is currently active
if (c == activeConnection()) {
setActiveConnection(dynamic_cast<NeoChatConnection *>(accounts().accounts()[0]));
}
} else {
setActiveConnection(nullptr);
}
dropConnection(c);
});
connect(c, &NeoChatConnection::badgeNotificationCountChanged, this, &Controller::updateBadgeNotificationCount);
connect(c, &NeoChatConnection::syncDone, this, [this, c]() {
m_notificationsManager.handleNotifications(c);
});
c->sync();
Q_EMIT connectionAdded(c);
}
void Controller::dropConnection(NeoChatConnection *c)
{
Q_ASSERT_X(c, __FUNCTION__, "Attempt to drop a null connection");
c->disconnect(this);
c->disconnect(&m_notificationsManager);
m_accountRegistry.drop(c);
Q_EMIT connectionDropped(c);
}
void Controller::invokeLogin()
{
const auto accounts = SettingsGroup("Accounts"_L1).childGroups();
for (const auto &accountId : accounts) {
AccountSettings account{accountId};
m_accountsLoading += accountId;
Q_EMIT accountsLoadingChanged();
if (!account.homeserver().isEmpty()) {
auto accessTokenLoadingJob = loadAccessTokenFromKeyChain(account.userId());
connect(accessTokenLoadingJob, &QKeychain::Job::finished, this, [accountId, this, accessTokenLoadingJob](QKeychain::Job *) {
AccountSettings account{accountId};
QString accessToken;
if (accessTokenLoadingJob->error() == QKeychain::Error::NoError) {
accessToken = QString::fromLatin1(accessTokenLoadingJob->binaryData());
} else {
return;
}
auto connection = new NeoChatConnection(account.homeserver());
m_connectionsLoading[accountId] = connection;
connect(connection, &NeoChatConnection::connected, this, [this, connection, accountId] {
connection->loadState();
if (connection->allRooms().size() == 0 || connection->allRooms()[0]->currentState().get<RoomCreateEvent>()) {
addConnection(connection);
m_accountsLoading.removeAll(connection->userId());
m_connectionsLoading.remove(accountId);
Q_EMIT accountsLoadingChanged();
} else {
connect(
connection->allRooms()[0],
&Room::baseStateLoaded,
this,
[this, connection, accountId]() {
addConnection(connection);
m_accountsLoading.removeAll(connection->userId());
m_connectionsLoading.remove(accountId);
Q_EMIT accountsLoadingChanged();
},
Qt::SingleShotConnection);
}
});
connection->assumeIdentity(account.userId(), account.deviceId(), accessToken);
});
}
}
}
QKeychain::ReadPasswordJob *Controller::loadAccessTokenFromKeyChain(const QString &userId)
{
qDebug() << "Reading access token from the keychain for" << userId;
auto job = new QKeychain::ReadPasswordJob(qAppName(), this);
job->setKey(userId);
// Handling of errors
connect(job, &QKeychain::Job::finished, this, [this, job]() {
if (job->error() == QKeychain::Error::NoError) {
return;
}
switch (job->error()) {
case QKeychain::EntryNotFound:
Q_EMIT errorOccured(i18n("Access token wasn't found: Maybe it was deleted?"));
break;
case QKeychain::AccessDeniedByUser:
case QKeychain::AccessDenied:
Q_EMIT errorOccured(i18n("Access to keychain was denied: Please allow NeoChat to read the access token"));
break;
case QKeychain::NoBackendAvailable:
Q_EMIT errorOccured(i18n("No keychain available: Please install a keychain, e.g. KWallet or GNOME keyring on Linux"));
break;
case QKeychain::OtherError:
Q_EMIT errorOccured(i18n("Unable to read access token: %1", job->errorString()));
break;
default:
break;
}
});
job->start();
return job;
}
void Controller::saveAccessTokenToKeyChain(const QString &userId, const QByteArray &accessToken)
{
qDebug() << "Save the access token to the keychain for " << userId;
auto job = new QKeychain::WritePasswordJob(qAppName());
job->setAutoDelete(true);
job->setKey(userId);
job->setBinaryData(accessToken);
connect(job, &QKeychain::WritePasswordJob::finished, this, [job]() {
if (job->error()) {
qWarning() << "Could not save access token to the keychain: " << qPrintable(job->errorString());
}
});
job->start();
}
bool Controller::supportSystemTray() const
{
#ifdef Q_OS_ANDROID
@@ -322,7 +179,7 @@ void Controller::setActiveConnection(NeoChatConnection *connection)
if (m_connection != nullptr) {
m_connection->disconnect(this);
m_connection->disconnect(&m_notificationsManager);
// m_connection->disconnect(&m_notificationsManager);
}
m_connection = connection;
@@ -331,7 +188,7 @@ void Controller::setActiveConnection(NeoChatConnection *connection)
m_connection->refreshBadgeNotificationCount();
updateBadgeNotificationCount(m_connection, m_connection->badgeNotificationCount());
connect(m_connection, &NeoChatConnection::errorOccured, this, &Controller::errorOccured);
// connect(m_connection, &NeoChatConnection::errorOccured, this, &Controller::errorOccured);
}
Q_EMIT activeConnectionChanged(m_connection);
@@ -346,7 +203,7 @@ void Controller::listenForNotifications()
connect(timer, &QTimer::timeout, qGuiApp, &QGuiApplication::quit);
connect(connector, &KUnifiedPush::Connector::messageReceived, [timer](const QByteArray &data) {
instance().m_notificationsManager.postPushNotification(data);
// instance().m_notificationsManager.postPushNotification(data);
timer->stop();
});
@@ -360,7 +217,7 @@ void Controller::listenForNotifications()
void Controller::clearInvitationNotification(const QString &roomId)
{
m_notificationsManager.clearInvitationNotification(roomId);
// m_notificationsManager.clearInvitationNotification(roomId);
}
void Controller::updateBadgeNotificationCount(NeoChatConnection *connection, int count)
@@ -402,9 +259,9 @@ bool Controller::isFlatpak() const
#endif
}
AccountRegistry &Controller::accounts()
Accounts &Controller::accounts()
{
return m_accountRegistry;
return m_accounts;
}
QString Controller::loadFileContent(const QString &path) const
@@ -420,20 +277,6 @@ void Controller::setTestMode(bool test)
testMode = test;
}
void Controller::removeConnection(const QString &userId)
{
// When loadAccessTokenFromKeyChain() fails m_connectionsLoading won't have an
// entry for it so we need to check both separately.
if (m_accountsLoading.contains(userId)) {
m_accountsLoading.removeAll(userId);
Q_EMIT accountsLoadingChanged();
}
if (m_connectionsLoading.contains(userId) && m_connectionsLoading[userId]) {
auto connection = m_connectionsLoading[userId];
SettingsGroup("Accounts"_L1).remove(userId);
}
}
bool Controller::csSupported() const
{
return true;

View File

@@ -7,8 +7,8 @@
#include <QQmlEngine>
#include "neochatconnection.h"
#include "notificationsmanager.h"
#include <Quotient/accountregistry.h>
// #include "notificationsmanager.h"
#include <Integral/Accounts>
class TrayIcon;
@@ -63,21 +63,6 @@ public:
void setActiveConnection(NeoChatConnection *connection);
[[nodiscard]] NeoChatConnection *activeConnection() const;
/**
* @brief Add a new connection to the account registry.
*/
void addConnection(NeoChatConnection *c);
/**
* @brief Drop a connection from the account registry.
*/
void dropConnection(NeoChatConnection *c);
/**
* @brief Save an access token to the keychain for the given account.
*/
void saveAccessTokenToKeyChain(const QString &userId, const QByteArray &accessToken);
[[nodiscard]] bool supportSystemTray() const;
bool isFlatpak() const;
@@ -97,12 +82,10 @@ public:
Q_INVOKABLE QString loadFileContent(const QString &path) const;
Quotient::AccountRegistry &accounts();
Integral::Accounts &accounts();
static void setTestMode(bool testMode);
Q_INVOKABLE void removeConnection(const QString &userId);
bool csSupported() const;
/**
@@ -122,18 +105,15 @@ private:
QPointer<NeoChatConnection> m_connection;
TrayIcon *m_trayIcon = nullptr;
QKeychain::ReadPasswordJob *loadAccessTokenFromKeyChain(const QString &account);
Quotient::AccountRegistry m_accountRegistry;
Integral::Accounts m_accounts;
QStringList m_accountsLoading;
QMap<QString, QPointer<NeoChatConnection>> m_connectionsLoading;
QString m_endpoint;
QStringList m_shownImages;
NotificationsManager m_notificationsManager;
// NotificationsManager m_notificationsManager;
private Q_SLOTS:
void invokeLogin();
void setQuitOnLastWindowClosed();
void updateBadgeNotificationCount(NeoChatConnection *connection, int count);

View File

@@ -4,12 +4,12 @@
#pragma once
#include <QObject>
#include "neochatroom.h"
#include <Quotient/quotient_common.h>
#include <QQmlEngine>
#include <KLocalizedString>
#include <Integral/lib.rs.h>
using namespace Qt::StringLiterals;
class NeoChatRoomType : public QObject
@@ -22,7 +22,7 @@ public:
/**
* @brief Defines the room list categories a room can be assigned.
*/
enum Types {
enum Type {
Invited, /**< The user has been invited to the room. */
Favorite, /**< The room is set as a favourite. */
Direct, /**< The room is a direct chat. */
@@ -32,23 +32,23 @@ public:
AddDirect, /**< So we can show the add friend delegate. */
TypesCount, /**< Number of different types (this should always be last). */
};
Q_ENUM(Types);
Q_ENUM(Type);
static NeoChatRoomType::Types typeForRoom(const NeoChatRoom *room)
static NeoChatRoomType::Type typeForRoom(rust::Box<sdk::RoomListRoom> room)
{
if (room->isSpace()) {
if (room->is_space()) {
return NeoChatRoomType::Space;
}
if (room->joinState() == Quotient::JoinState::Invite) {
if (room->state() == 2) {
return NeoChatRoomType::Invited;
}
if (room->isFavourite()) {
if (room->is_favourite()) {
return NeoChatRoomType::Favorite;
}
if (room->isLowPriority()) {
if (room->is_low_priority()) {
return NeoChatRoomType::Deprioritized;
}
if (room->isDirectChat()) {
if (false /*room->isDirectChat()*/) {
return NeoChatRoomType::Direct;
}
return NeoChatRoomType::Normal;

View File

@@ -1,3 +1,4 @@
// SPDX-FileCopyrightText: 2024 James Graham <james.h.graham@protonmail.com>
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
@@ -5,8 +6,8 @@
#include <algorithm>
#include "neochatconfig.h"
#include "neochatroom.h"
// #include "neochatconfig.h"
#include <Integral/Utils>
namespace
{
@@ -56,27 +57,27 @@ QList<RoomSortParameter::Parameter> RoomSortParameter::allParameterList()
QList<RoomSortParameter::Parameter> RoomSortParameter::currentParameterList()
{
QList<RoomSortParameter::Parameter> configParamList;
switch (static_cast<NeoChatConfig::EnumSortOrder::type>(NeoChatConfig::sortOrder())) {
case NeoChatConfig::EnumSortOrder::Activity:
configParamList = activitySortPriorities;
break;
case NeoChatConfig::EnumSortOrder::Alphabetical:
configParamList = alphabeticalSortPriorities;
break;
case NeoChatConfig::EnumSortOrder::LastMessage:
configParamList = lastMessageSortPriorities;
break;
case NeoChatConfig::EnumSortOrder::Custom: {
const auto intList = NeoChatConfig::customSortOrder();
std::transform(intList.constBegin(), intList.constEnd(), std::back_inserter(configParamList), [](int param) {
return static_cast<Parameter>(param);
});
break;
}
default:
break;
}
QList<RoomSortParameter::Parameter> configParamList = activitySortPriorities;
// switch (static_cast<NeoChatConfig::EnumSortOrder::type>(NeoChatConfig::sortOrder())) {
// case NeoChatConfig::EnumSortOrder::Activity:
// configParamList = activitySortPriorities;
// break;
// case NeoChatConfig::EnumSortOrder::Alphabetical:
// configParamList = alphabeticalSortPriorities;
// break;
// case NeoChatConfig::EnumSortOrder::LastMessage:
// configParamList = lastMessageSortPriorities;
// break;
// case NeoChatConfig::EnumSortOrder::Custom: {
// const auto intList = NeoChatConfig::customSortOrder();
// std::transform(intList.constBegin(), intList.constEnd(), std::back_inserter(configParamList), [](int param) {
// return static_cast<Parameter>(param);
// });
// break;
// }
// default:
// break;
// }
if (configParamList.isEmpty()) {
return activitySortPriorities;
@@ -90,73 +91,74 @@ void RoomSortParameter::saveNewParameterList(const QList<Parameter> &newList)
std::transform(newList.constBegin(), newList.constEnd(), std::back_inserter(intList), [](Parameter param) {
return static_cast<int>(param);
});
NeoChatConfig::setCustomSortOrder(intList);
NeoChatConfig::setSortOrder(NeoChatConfig::EnumSortOrder::Custom);
NeoChatConfig::self()->save();
// NeoChatConfig::setCustomSortOrder(intList);
// NeoChatConfig::setSortOrder(NeoChatConfig::EnumSortOrder::Custom);
// NeoChatConfig::self()->save();
}
int RoomSortParameter::compareParameter(Parameter parameter, NeoChatRoom *leftRoom, NeoChatRoom *rightRoom)
int RoomSortParameter::compareParameter(Parameter parameter, rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom)
{
switch (parameter) {
case AlphabeticalAscending:
return compareParameter<AlphabeticalAscending>(leftRoom, rightRoom);
return compareParameter<AlphabeticalAscending>(leftRoom->box_me(), rightRoom->box_me());
case AlphabeticalDescending:
return compareParameter<AlphabeticalDescending>(leftRoom, rightRoom);
return compareParameter<AlphabeticalDescending>(leftRoom->box_me(), rightRoom->box_me());
case HasUnread:
return compareParameter<HasUnread>(leftRoom, rightRoom);
return compareParameter<HasUnread>(leftRoom->box_me(), rightRoom->box_me());
case MostUnread:
return compareParameter<MostUnread>(leftRoom, rightRoom);
return compareParameter<MostUnread>(leftRoom->box_me(), rightRoom->box_me());
case HasHighlight:
return compareParameter<HasHighlight>(leftRoom, rightRoom);
return compareParameter<HasHighlight>(leftRoom->box_me(), rightRoom->box_me());
case MostHighlights:
return compareParameter<MostHighlights>(leftRoom, rightRoom);
return compareParameter<MostHighlights>(leftRoom->box_me(), rightRoom->box_me());
case LastActive:
return compareParameter<LastActive>(leftRoom, rightRoom);
return compareParameter<LastActive>(leftRoom->box_me(), rightRoom->box_me());
default:
return 0;
}
}
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::AlphabeticalAscending>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom)
int RoomSortParameter::compareParameter<RoomSortParameter::AlphabeticalAscending>(rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom)
{
return -typeCompare(leftRoom->displayName(), rightRoom->displayName());
return -typeCompare(stringFromRust(leftRoom->display_name()), stringFromRust(rightRoom->display_name()));
}
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::AlphabeticalDescending>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom)
int RoomSortParameter::compareParameter<RoomSortParameter::AlphabeticalDescending>(rust::Box<sdk::RoomListRoom> leftRoom,
rust::Box<sdk::RoomListRoom> rightRoom)
{
return typeCompare(leftRoom->displayName(), rightRoom->displayName());
return typeCompare(stringFromRust(leftRoom->display_name()), stringFromRust(rightRoom->display_name()));
}
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::HasUnread>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom)
int RoomSortParameter::compareParameter<RoomSortParameter::HasUnread>(rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom)
{
return typeCompare(leftRoom->contextAwareNotificationCount() > 0, rightRoom->contextAwareNotificationCount() > 0);
return typeCompare(leftRoom->num_unread_messages() > 0, rightRoom->num_unread_messages() > 0);
}
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::MostUnread>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom)
int RoomSortParameter::compareParameter<RoomSortParameter::MostUnread>(rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom)
{
return typeCompare(leftRoom->contextAwareNotificationCount(), rightRoom->contextAwareNotificationCount());
return typeCompare(leftRoom->num_unread_messages(), rightRoom->num_unread_messages());
}
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::HasHighlight>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom)
int RoomSortParameter::compareParameter<RoomSortParameter::HasHighlight>(rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom)
{
const auto leftHighlight = leftRoom->highlightCount() > 0 && leftRoom->contextAwareNotificationCount() > 0;
const auto rightHighlight = rightRoom->highlightCount() > 0 && rightRoom->contextAwareNotificationCount() > 0;
const auto leftHighlight = leftRoom->num_unread_mentions() > 0 && leftRoom->num_unread_messages() > 0;
const auto rightHighlight = rightRoom->num_unread_mentions() > 0 && rightRoom->num_unread_messages() > 0;
return typeCompare(leftHighlight, rightHighlight);
}
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::MostHighlights>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom)
int RoomSortParameter::compareParameter<RoomSortParameter::MostHighlights>(rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom)
{
return typeCompare(int(leftRoom->highlightCount()), int(rightRoom->highlightCount()));
return typeCompare(int(leftRoom->num_unread_mentions()), int(rightRoom->num_unread_mentions()));
}
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::LastActive>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom)
int RoomSortParameter::compareParameter<RoomSortParameter::LastActive>(rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom)
{
return typeCompare(leftRoom->lastActiveTime(), rightRoom->lastActiveTime());
return 1;
}

View File

@@ -8,7 +8,9 @@
#include <KLocalizedString>
class NeoChatRoom;
#include <Integral/lib.rs.h>
class Room;
/**
* @class RoomSortParameter
@@ -116,27 +118,29 @@ public:
*
* @sa Parameter
*/
static int compareParameter(Parameter parameter, NeoChatRoom *leftRoom, NeoChatRoom *rightRoom);
static int compareParameter(Parameter parameter, rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom);
private:
template<Parameter parameter>
static int compareParameter(NeoChatRoom *, NeoChatRoom *)
static int compareParameter(rust::Box<sdk::RoomListRoom>, rust::Box<sdk::RoomListRoom>)
{
return false;
}
};
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::AlphabeticalAscending>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom);
int RoomSortParameter::compareParameter<RoomSortParameter::AlphabeticalAscending>(rust::Box<sdk::RoomListRoom> leftRoom,
rust::Box<sdk::RoomListRoom> rightRoom);
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::AlphabeticalDescending>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom);
int RoomSortParameter::compareParameter<RoomSortParameter::AlphabeticalDescending>(rust::Box<sdk::RoomListRoom> leftRoom,
rust::Box<sdk::RoomListRoom> rightRoom);
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::HasUnread>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom);
int RoomSortParameter::compareParameter<RoomSortParameter::HasUnread>(rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom);
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::MostUnread>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom);
int RoomSortParameter::compareParameter<RoomSortParameter::MostUnread>(rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom);
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::HasHighlight>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom);
int RoomSortParameter::compareParameter<RoomSortParameter::HasHighlight>(rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom);
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::MostHighlights>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom);
int RoomSortParameter::compareParameter<RoomSortParameter::MostHighlights>(rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom);
template<>
int RoomSortParameter::compareParameter<RoomSortParameter::LastActive>(NeoChatRoom *leftRoom, NeoChatRoom *rightRoom);
int RoomSortParameter::compareParameter<RoomSortParameter::LastActive>(rust::Box<sdk::RoomListRoom> leftRoom, rust::Box<sdk::RoomListRoom> rightRoom);

View File

@@ -5,44 +5,36 @@
#include <QQmlEngine>
#include <Quotient/accountregistry.h>
#include <Quotient/e2ee/sssshandler.h>
#include <Quotient/keyimport.h>
#include <Quotient/keyverificationsession.h>
#include <Quotient/roommember.h>
#include <Integral/Accounts>
#include <Integral/Homeserver>
#include "controller.h"
#include "neochatconfig.h"
struct ForeignAccountRegistry {
struct ForeignAccounts {
Q_GADGET
QML_FOREIGN(Quotient::AccountRegistry)
QML_NAMED_ELEMENT(AccountRegistry)
QML_ELEMENT
QML_SINGLETON
public:
static Quotient::AccountRegistry *create(QQmlEngine *, QJSEngine *)
QML_FOREIGN(Integral::Accounts)
QML_NAMED_ELEMENT(Accounts)
static Integral::Accounts *create(QQmlEngine *, QJSEngine *)
{
QQmlEngine::setObjectOwnership(&Controller::instance().accounts(), QQmlEngine::CppOwnership);
return &Controller::instance().accounts();
auto &accounts = Controller::instance().accounts();
QQmlEngine::setObjectOwnership(&accounts, QQmlEngine::CppOwnership);
return &accounts;
}
};
struct ForeignKeyVerificationSession {
struct ForeignHomeserver {
Q_GADGET
QML_FOREIGN(Quotient::KeyVerificationSession)
QML_NAMED_ELEMENT(KeyVerificationSession)
QML_UNCREATABLE("")
QML_ELEMENT
QML_FOREIGN(Integral::Homeserver)
QML_NAMED_ELEMENT(Homeserver)
};
struct ForeignSSSSHandler {
struct ForeignConnection {
Q_GADGET
QML_FOREIGN(Quotient::SSSSHandler)
QML_NAMED_ELEMENT(SSSSHandler)
};
struct ForeignKeyImport {
Q_GADGET
QML_SINGLETON
QML_FOREIGN(Quotient::KeyImport)
QML_NAMED_ELEMENT(KeyImport)
QML_ELEMENT
QML_FOREIGN(Integral::Connection)
QML_NAMED_ELEMENT(Connection)
};

View File

@@ -16,8 +16,15 @@ LoginStep {
onActiveFocusChanged: if (activeFocus)
matrixIdField.forceActiveFocus()
Component.onCompleted: {
LoginHelper.matrixId = "";
property Homeserver homeserver
Timer {
id: timer
interval: 500
repeat: false
onTriggered: if (matrixIdField.text.length > 0) {
root.homeserver.resolveFromMatrixId(matrixIdField.text)
}
}
FormCard.FormTextFieldDelegate {
@@ -26,7 +33,7 @@ LoginStep {
placeholderText: "@user:example.org"
Accessible.name: i18n("Matrix ID")
onTextChanged: {
LoginHelper.matrixId = text;
timer.restart()
}
Keys.onReturnPressed: {
@@ -35,17 +42,17 @@ LoginStep {
}
nextAction: Kirigami.Action {
text: LoginHelper.isLoggedIn ? i18n("Already logged in") : (LoginHelper.testing && matrixIdField.acceptableInput) ? i18n("Loading…") : i18nc("@action:button", "Continue")
// text: LoginHelper.isLoggedIn ? i18n("Already logged in") : (LoginHelper.testing && matrixIdField.acceptableInput) ? i18n("Loading…") : i18nc("@action:button", "Continue")
onTriggered: {
if (LoginHelper.supportsSso && LoginHelper.supportsPassword) {
if (root.homeserver.ssoLoginSupported && root.homeserver.passwordLoginSupported) {
processed("LoginMethod");
} else if (LoginHelper.supportsSso) {
} else if (root.homeserver.ssoLoginSupported) {
processed("Sso");
} else {
processed("Password");
}
}
enabled: LoginHelper.homeserverReachable
enabled: root.homeserver.loginFlowsLoaded
}
previousAction: Kirigami.Action {
onTriggered: {

View File

@@ -12,6 +12,8 @@ import org.kde.neochat
LoginStep {
id: root
property Homeserver homeserver
Connections {
target: LoginHelper
function onConnected() {
@@ -26,7 +28,6 @@ LoginStep {
id: passwordField
label: i18n("Password:")
onTextChanged: LoginHelper.password = text
enabled: !LoginHelper.isLoggingIn
echoMode: TextInput.Password
Accessible.name: i18n("Password")
@@ -39,10 +40,10 @@ LoginStep {
nextAction: Kirigami.Action {
text: i18nc("@action:button", "Login")
enabled: passwordField.text.length > 0 && !LoginHelper.isLoggingIn
// enabled: passwordField.text.length > 0 && !LoginHelper.isLoggingIn
onTriggered: {
root.clearError();
LoginHelper.login();
let pending = Accounts.loginWithPassword(root.homeserver.matrixId, passwordField.text)
}
}
previousAction: Kirigami.Action {

View File

@@ -27,6 +27,10 @@ Kirigami.Page {
title: i18n("Welcome")
globalToolBarStyle: Kirigami.ApplicationHeaderStyle.None
Homeserver {
id: homeserver
}
header: QQC2.Control {
topPadding: 0
bottomPadding: 0
@@ -81,7 +85,7 @@ Kirigami.Page {
FormCard.FormHeader {
id: existingAccountsHeader
title: i18nc("@title", "Continue with an existing account")
visible: (loadedAccounts.count > 0 || loadingAccounts.count > 0) && root._showExisting
// visible: (loadedAccounts.count > 0 || loadingAccounts.count > 0) && root._showExisting
maximumWidth: Kirigami.Units.gridUnit * 20
}
@@ -90,15 +94,21 @@ Kirigami.Page {
maximumWidth: Kirigami.Units.gridUnit * 20
Repeater {
id: loadedAccounts
model: AccountRegistry
model: Accounts
delegate: FormCard.FormButtonDelegate {
id: delegate
required property string userId
required property NeoChatConnection connection
required property string matrixId
required property string displayName
required property string avatarUrl
required property int index
required property bool ready
required property Connection connection
text: QmlUtils.escapeString(connection.localUser.displayName)
description: connection.localUser.id
enabled: ready
text: QmlUtils.escapeString(delegate.displayName)
description: delegate.matrixId
leadingPadding: Kirigami.Units.largeSpacing
onClicked: {
@@ -109,62 +119,12 @@ Kirigami.Page {
id: avatar
name: delegate.text
// Note: User::avatarUrl does not set user_id, and thus cannot be used directly here. Hence the makeMediaUrl.
source: delegate.connection.localUser.avatarUrl.toString().length > 0 ? delegate.connection.makeMediaUrl(delegate.connection.localUser.avatarUrl) : ""
source: delegate.avatarUrl
implicitWidth: Kirigami.Units.iconSizes.medium
implicitHeight: Kirigami.Units.iconSizes.medium
}
}
}
Repeater {
id: loadingAccounts
model: Controller.accountsLoading
delegate: FormCard.AbstractFormDelegate {
id: loadingDelegate
topPadding: Kirigami.Units.smallSpacing
bottomPadding: Kirigami.Units.smallSpacing
background: null
contentItem: RowLayout {
spacing: 0
QQC2.Label {
Layout.fillWidth: true
text: i18nc("As in 'this account is still loading'", "%1 (loading)", modelData)
elide: Text.ElideRight
wrapMode: Text.Wrap
maximumLineCount: 2
color: Kirigami.Theme.disabledTextColor
Accessible.ignored: true // base class sets this text on root already
}
QQC2.ToolButton {
text: i18nc("@action:button", "Log out of this account")
icon.name: "im-kick-user"
onClicked: Controller.removeConnection(modelData)
display: QQC2.Button.IconOnly
QQC2.ToolTip.text: text
QQC2.ToolTip.visible: hovered
QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay
enabled: true
Layout.preferredHeight: Kirigami.Units.gridUnit * 2
}
FormCard.FormArrow {
Layout.leftMargin: Kirigami.Units.smallSpacing
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
direction: Qt.RightArrow
visible: root.background.visible
}
}
}
onCountChanged: {
if (loadingAccounts.count === 0 && loadedAccounts.count === 1 && showExisting) {
Controller.activeConnection = AccountRegistry.data(AccountRegistry.index(0, 0), 257);
root.connectionChosen();
}
}
}
}
FormCard.FormHeader {
@@ -188,6 +148,7 @@ Kirigami.Page {
root.currentStepString = nextStep;
headerMessage.text = "";
headerMessage.visible = false;
module.item.homeserver = homeserver
if (!module.item.noControls) {
module.item.forceActiveFocus();
} else {
@@ -211,33 +172,33 @@ Kirigami.Page {
}
}
Connections {
target: Registration
function onNextStepChanged() {
if (Registration.nextStep === "m.login.recaptcha") {
stepConnections.onProcessed("Captcha");
}
if (Registration.nextStep === "m.login.terms") {
stepConnections.onProcessed("Terms");
}
if (Registration.nextStep === "m.login.email.identity") {
stepConnections.onProcessed("Email");
}
if (Registration.nextStep === "loading") {
stepConnections.onProcessed("Loading");
}
}
}
Connections {
target: LoginHelper
function onLoginErrorOccured(message) {
headerMessage.text = message;
headerMessage.visible = message.length > 0;
headerMessage.type = Kirigami.MessageType.Error;
}
}
// Connections {
// target: Registration
//
// function onNextStepChanged() {
// if (Registration.nextStep === "m.login.recaptcha") {
// stepConnections.onProcessed("Captcha");
// }
// if (Registration.nextStep === "m.login.terms") {
// stepConnections.onProcessed("Terms");
// }
// if (Registration.nextStep === "m.login.email.identity") {
// stepConnections.onProcessed("Email");
// }
// if (Registration.nextStep === "loading") {
// stepConnections.onProcessed("Loading");
// }
// }
// }
// Connections {
// target: LoginHelper
//
// function onLoginErrorOccured(message) {
// headerMessage.text = message;
// headerMessage.visible = message.length > 0;
// headerMessage.type = Kirigami.MessageType.Error;
// }
// }
}
FormCard.FormDelegateSeparator {
@@ -276,11 +237,11 @@ Kirigami.Page {
}
}
Component.onCompleted: {
LoginHelper.init();
module.item.forceActiveFocus();
Registration.username = "";
Registration.password = "";
Registration.email = "";
}
// Component.onCompleted: {
// LoginHelper.init();
// module.item.forceActiveFocus();
// Registration.username = "";
// Registration.password = "";
// Registration.email = "";
// }
}

View File

@@ -13,7 +13,12 @@
#include <QQuickStyle>
#include <QQuickWindow>
#include <QtQml/QQmlExtensionPlugin>
#include <Quotient/connection.h>
#include <Integral/Connection_p>
#include <Integral/NetworkAccessManager>
#include <Integral/PendingConnection>
// #include <Quotient/connection.h>
#ifdef Q_OS_ANDROID
#include <QGuiApplication>
@@ -43,31 +48,35 @@
#include "neochat-version.h"
#include <Quotient/networkaccessmanager.h>
// #include <Quotient/networkaccessmanager.h>
#include "blurhashimageprovider.h"
#include "colorschemer.h"
#include "controller.h"
// #include "controller.h"
#include "logger.h"
#include "roommanager.h"
#include "sharehandler.h"
// #include "roommanager.h"
// #include "sharehandler.h"
#include "neochatconnection.h"
#include "neochatroom.h"
#include "windowcontroller.h"
#ifdef HAVE_RUNNER
#include "runner.h"
// #include "runner.h"
#include <QDBusConnection>
#include <QDBusMetaType>
#endif
#if defined(HAVE_RUNNER) && defined(HAVE_KUNIFIEDPUSH)
#include "fakerunner.h"
// #include "fakerunner.h"
#endif
#ifdef Q_OS_WINDOWS
#include <Windows.h>
#endif
using namespace Quotient;
using namespace Qt::Literals::StringLiterals;
using namespace Integral;
void qml_register_types_org_kde_neochat();
@@ -158,14 +167,14 @@ int main(int argc, char *argv[])
about.setTranslator(i18nc("NAME OF TRANSLATORS", "Your names"), i18nc("EMAIL OF TRANSLATORS", "Your emails"));
about.setOrganizationDomain("kde.org");
about.addComponent(u"libQuotient"_s,
i18n("A Qt library to write cross-platform clients for Matrix"),
i18nc("<version number> (built against <possibly different version number>)",
"%1 (built against %2)",
Quotient::versionString(),
QStringLiteral(Quotient_VERSION_STRING)),
u"https://github.com/quotient-im/libquotient"_s,
KAboutLicense::LGPL_V2_1);
// about.addComponent(u"libQuotient"_s,
// i18n("A Qt library to write cross-platform clients for Matrix"),
// i18nc("<version number> (built against <possibly different version number>)",
// "%1 (built against %2)",
// Quotient::versionString(),
// QStringLiteral(Quotient_VERSION_STRING)),
// u"https://github.com/quotient-im/libquotient"_s,
// KAboutLicense::LGPL_V2_1);
KAboutData::setApplicationData(about);
QGuiApplication::setWindowIcon(QIcon::fromTheme(u"org.kde.neochat"_s));
@@ -174,10 +183,13 @@ int main(int argc, char *argv[])
KCrash::initialize();
#endif
PendingConnection::setConnectionType<NeoChatConnection>();
Connection::setRoomType<NeoChatRoom>();
initLogging();
Connection::setEncryptionDefault(true);
Connection::setDirectChatEncryptionDefault(true);
// Connection::setEncryptionDefault(true);
// Connection::setDirectChatEncryptionDefault(true);
#ifdef NEOCHAT_FLATPAK
// Copy over the included FontConfig configuration to the
@@ -185,7 +197,7 @@ int main(int argc, char *argv[])
QFile::copy(u"/app/etc/fonts/conf.d/99-noto-mono-color-emoji.conf"_s, u"/var/config/fontconfig/conf.d/99-noto-mono-color-emoji.conf"_s);
#endif
ColorSchemer colorScheme;
// ColorSchemer colorScheme;
QCommandLineParser parser;
parser.setApplicationDescription(i18n("Client for the matrix communication protocol"));
@@ -208,7 +220,7 @@ int main(int argc, char *argv[])
about.setupCommandLine(&parser);
parser.process(app);
about.processCommandLine(&parser);
Controller::setTestMode(parser.isSet("test"_L1));
// Controller::setTestMode(parser.isSet("test"_L1));
#ifdef HAVE_KUNIFIEDPUSH
if (parser.isSet(dbusActivatedOption)) {
@@ -220,10 +232,10 @@ int main(int argc, char *argv[])
// Because KRunner may call us on the D-Bus (under the same service name org.kde.neochat) then it may
// accidentally activate us for push notifications instead. If this happens, then immediately quit if the fake
// runner is called.
QDBusConnection::sessionBus().registerObject("/RoomRunner"_L1, new FakeRunner(), QDBusConnection::ExportScriptableContents);
// QDBusConnection::sessionBus().registerObject("/RoomRunner"_L1, new FakeRunner(), QDBusConnection::ExportScriptableContents);
#endif
Controller::listenForNotifications();
// Controller::listenForNotifications();
return QCoreApplication::exec();
}
#endif
@@ -239,51 +251,51 @@ int main(int argc, char *argv[])
Q_IMPORT_QML_PLUGIN(org_kde_neochat_chatbarPlugin)
qml_register_types_org_kde_neochat();
qmlRegisterUncreatableMetaObject(Quotient::staticMetaObject, "Quotient", 1, 0, "JoinRule", u"Access to JoinRule enum only"_s);
// qmlRegisterUncreatableMetaObject(Quotient::staticMetaObject, "Quotient", 1, 0, "JoinRule", u"Access to JoinRule enum only"_s);
QQmlApplicationEngine engine;
#ifdef HAVE_KDBUSADDONS
service.connect(&service,
&KDBusService::activateRequested,
&RoomManager::instance(),
[&engine](const QStringList &arguments, const QString &workingDirectory) {
Q_UNUSED(workingDirectory);
QWindow *window = windowFromEngine(&engine);
KWindowSystem::updateStartupId(window);
WindowController::instance().showAndRaiseWindow(QString());
// Open matrix uri
if (arguments.isEmpty()) {
return;
}
auto args = arguments;
args.removeFirst();
if (args.length() == 2 && args[0] == "--share"_L1) {
ShareHandler::instance().setText(args[1]);
return;
}
for (const auto &arg : args) {
RoomManager::instance().resolveResource(arg);
}
});
#endif
// #ifdef HAVE_KDBUSADDONS
// service.connect(&service,
// &KDBusService::activateRequested,
// &RoomManager::instance(),
// [&engine](const QStringList &arguments, const QString &workingDirectory) {
// Q_UNUSED(workingDirectory);
//
// QWindow *window = windowFromEngine(&engine);
// KWindowSystem::updateStartupId(window);
//
// // WindowController::instance().showAndRaiseWindow(QString());
//
// // Open matrix uri
// if (arguments.isEmpty()) {
// return;
// }
//
// auto args = arguments;
// args.removeFirst();
// if (args.length() == 2 && args[0] == "--share"_L1) {
// // ShareHandler::instance().setText(args[1]);
// return;
// }
//
// for (const auto &arg : args) {
// // RoomManager::instance().resolveResource(arg);
// }
// });
// #endif
engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
engine.setNetworkAccessManagerFactory(new NetworkAccessManagerFactory());
if (parser.isSet("ignore-ssl-errors"_L1)) {
QObject::connect(NetworkAccessManager::instance(), &QNetworkAccessManager::sslErrors, NetworkAccessManager::instance(), [](QNetworkReply *reply) {
reply->ignoreSslErrors();
});
// QObject::connect(NetworkAccessManager::instance(), &QNetworkAccessManager::sslErrors, NetworkAccessManager::instance(), [](QNetworkReply *reply) {
// reply->ignoreSslErrors();
// });
}
if (parser.isSet("share"_L1)) {
ShareHandler::instance().setText(parser.value(shareOption));
// ShareHandler::instance().setText(parser.value(shareOption));
}
engine.addImageProvider(u"blurhash"_s, new BlurhashImageProvider);
@@ -294,12 +306,12 @@ int main(int argc, char *argv[])
}
if (!parser.positionalArguments().isEmpty() && !parser.isSet("share"_L1)) {
RoomManager::instance().setUrlArgument(parser.positionalArguments()[0]);
// RoomManager::instance().setUrlArgument(parser.positionalArguments()[0]);
}
#ifdef HAVE_RUNNER
auto runner = Runner::create(&engine, &engine);
QDBusConnection::sessionBus().registerObject("/RoomRunner"_L1, runner, QDBusConnection::ExportScriptableContents);
// auto runner = Runner::create(&engine, &engine);
// QDBusConnection::sessionBus().registerObject("/RoomRunner"_L1, runner, QDBusConnection::ExportScriptableContents);
#endif
QWindow *window = windowFromEngine(&engine);

126
src/messageattached.cpp Normal file
View File

@@ -0,0 +1,126 @@
// SPDX-FileCopyrightText: 2025 James Graham <james.h.graham@protonmail.com>
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
#include "messageattached.h"
MessageAttached::MessageAttached(QObject *parent)
: QQuickAttachedPropertyPropagator(parent)
{
if (parent == nullptr) {
qWarning() << "Message must be attached to an Item" << parent;
return;
}
initialize();
}
MessageAttached *MessageAttached::qmlAttachedProperties(QObject *object)
{
return new MessageAttached(object);
}
NeoChatRoom *MessageAttached::room() const
{
return m_room;
}
void MessageAttached::setRoom(NeoChatRoom *room)
{
m_explicitRoom = true;
if (m_room == room) {
return;
}
m_room = room;
propagateMessage(this);
Q_EMIT roomChanged();
}
QQuickItem *MessageAttached::timeline() const
{
return m_timeline;
}
void MessageAttached::setTimeline(QQuickItem *timeline)
{
m_explicitTimeline = true;
if (m_timeline == timeline) {
return;
}
m_timeline = timeline;
propagateMessage(this);
Q_EMIT timelineChanged();
}
int MessageAttached::index() const
{
return m_index;
}
void MessageAttached::setIndex(int index)
{
m_explicitIndex = true;
if (m_index == index) {
return;
}
m_index = index;
propagateMessage(this);
Q_EMIT indexChanged();
}
qreal MessageAttached::maxContentWidth() const
{
return m_maxContentWidth;
}
void MessageAttached::setMaxContentWidth(qreal maxContentWidth)
{
m_explicitMaxContentWidth = true;
if (m_maxContentWidth == maxContentWidth) {
return;
}
m_maxContentWidth = maxContentWidth;
propagateMessage(this);
Q_EMIT maxContentWidthChanged();
}
void MessageAttached::propagateMessage(MessageAttached *message)
{
if (m_explicitRoom || m_room != message->room()) {
m_room = message->room();
Q_EMIT roomChanged();
}
if (m_explicitTimeline || m_timeline != message->timeline()) {
m_timeline = message->timeline();
Q_EMIT timelineChanged();
}
if (m_explicitIndex || m_index != message->index()) {
m_index = message->index();
Q_EMIT indexChanged();
}
if (m_explicitMaxContentWidth || m_maxContentWidth != message->maxContentWidth()) {
m_maxContentWidth = message->maxContentWidth();
Q_EMIT maxContentWidthChanged();
}
const auto styles = attachedChildren();
for (auto *child : attachedChildren()) {
MessageAttached *message = qobject_cast<MessageAttached *>(child);
if (message != nullptr) {
message->propagateMessage(this);
}
}
}
void MessageAttached::attachedParentChange(QQuickAttachedPropertyPropagator *newParent, QQuickAttachedPropertyPropagator *oldParent)
{
Q_UNUSED(oldParent);
MessageAttached *attachedParent = qobject_cast<MessageAttached *>(newParent);
if (attachedParent) {
propagateMessage(attachedParent);
}
}
#include "moc_messageattached.cpp"

78
src/messageattached.h Normal file
View File

@@ -0,0 +1,78 @@
// SPDX-FileCopyrightText: 2025 James Graham <james.h.graham@protonmail.com>
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
#pragma once
#include <QQmlEngine>
#include <QQuickAttachedPropertyPropagator>
#include <QQuickItem>
#include "neochatroom.h"
class MessageAttached : public QQuickAttachedPropertyPropagator
{
Q_OBJECT
QML_NAMED_ELEMENT(Message)
QML_ATTACHED(MessageAttached)
QML_UNCREATABLE("")
/**
* @brief The room that the message comes from.
*/
Q_PROPERTY(NeoChatRoom *room READ room WRITE setRoom NOTIFY roomChanged FINAL)
/**
* @brief The timeline for the current message.
*/
Q_PROPERTY(QQuickItem *timeline READ timeline WRITE setTimeline NOTIFY timelineChanged FINAL)
/**
* @brief The index of the message in the timeline
*/
Q_PROPERTY(int index READ index WRITE setIndex NOTIFY indexChanged FINAL)
/**
* @brief The width available to the message content.
*/
Q_PROPERTY(qreal maxContentWidth READ maxContentWidth WRITE setMaxContentWidth NOTIFY maxContentWidthChanged FINAL)
public:
explicit MessageAttached(QObject *parent = nullptr);
static MessageAttached *qmlAttachedProperties(QObject *object);
NeoChatRoom *room() const;
void setRoom(NeoChatRoom *room);
QQuickItem *timeline() const;
void setTimeline(QQuickItem *timeline);
int index() const;
void setIndex(int index);
qreal maxContentWidth() const;
void setMaxContentWidth(qreal maxContentWidth);
Q_SIGNALS:
void roomChanged();
void timelineChanged();
void indexChanged();
void maxContentWidthChanged();
protected:
void propagateMessage(MessageAttached *message);
void attachedParentChange(QQuickAttachedPropertyPropagator *newParent, QQuickAttachedPropertyPropagator *oldParent) override;
private:
QPointer<NeoChatRoom> m_room;
bool m_explicitRoom = false;
QPointer<QQuickItem> m_timeline;
bool m_explicitTimeline = false;
int m_index;
bool m_explicitIndex = false;
qreal m_maxContentWidth = -1;
bool m_explicitMaxContentWidth = false;
};

View File

@@ -4,23 +4,23 @@
#include "completionmodel.h"
#include <QDebug>
#include "actionsmodel.h"
#include "completionproxymodel.h"
#include "customemojimodel.h"
#include "emojimodel.h"
// #include "actionsmodel.h"
// #include "completionproxymodel.h"
// #include "customemojimodel.h"
// #include "emojimodel.h"
#include "neochatroom.h"
#include "roommanager.h"
#include "userlistmodel.h"
// #include "roommanager.h"
// #include "userlistmodel.h"
CompletionModel::CompletionModel(QObject *parent)
: QAbstractListModel(parent)
, m_filterModel(new CompletionProxyModel())
, m_userListModel(RoomManager::instance().userListModel())
// , m_filterModel(new CompletionProxyModel())
// , m_userListModel(RoomManager::instance().userListModel())
, m_emojiModel(new QConcatenateTablesProxyModel(this))
{
connect(this, &CompletionModel::textChanged, this, &CompletionModel::updateCompletion);
m_emojiModel->addSourceModel(&CustomEmojiModel::instance());
m_emojiModel->addSourceModel(&EmojiModel::instance());
// m_emojiModel->addSourceModel(&CustomEmojiModel::instance());
// m_emojiModel->addSourceModel(&EmojiModel::instance());
}
QString CompletionModel::text() const
@@ -41,67 +41,68 @@ int CompletionModel::rowCount(const QModelIndex &parent) const
if (m_autoCompletionType == None) {
return 0;
}
return m_filterModel->rowCount();
// return m_filterModel->rowCount();
return {};
}
QVariant CompletionModel::data(const QModelIndex &index, int role) const
{
if (index.row() < 0 || index.row() >= m_filterModel->rowCount()) {
return {};
}
auto filterIndex = m_filterModel->index(index.row(), 0);
if (m_autoCompletionType == User) {
if (role == DisplayNameRole) {
return m_filterModel->data(filterIndex, UserListModel::DisplayNameRole);
}
if (role == SubtitleRole) {
return m_filterModel->data(filterIndex, UserListModel::UserIdRole);
}
if (role == IconNameRole) {
return m_filterModel->data(filterIndex, UserListModel::AvatarRole);
}
}
if (m_autoCompletionType == Command) {
if (role == DisplayNameRole) {
return u"%1 %2"_s.arg(m_filterModel->data(filterIndex, ActionsModel::Prefix).toString(),
m_filterModel->data(filterIndex, ActionsModel::Parameters).toString());
}
if (role == SubtitleRole) {
return m_filterModel->data(filterIndex, ActionsModel::Description);
}
if (role == IconNameRole) {
return u"invalid"_s;
}
if (role == ReplacedTextRole) {
return m_filterModel->data(filterIndex, ActionsModel::Prefix);
}
}
if (m_autoCompletionType == Room) {
if (role == DisplayNameRole) {
return m_filterModel->data(filterIndex, RoomListModel::DisplayNameRole);
}
if (role == SubtitleRole) {
return m_filterModel->data(filterIndex, RoomListModel::CanonicalAliasRole);
}
if (role == IconNameRole) {
return m_filterModel->data(filterIndex, RoomListModel::AvatarRole).toString();
}
}
if (m_autoCompletionType == Emoji) {
if (role == DisplayNameRole) {
return m_filterModel->data(filterIndex, CustomEmojiModel::DisplayRole);
}
if (role == IconNameRole) {
return m_filterModel->data(filterIndex, CustomEmojiModel::MxcUrl);
}
if (role == ReplacedTextRole) {
return m_filterModel->data(filterIndex, CustomEmojiModel::ReplacedTextRole);
}
if (role == SubtitleRole) {
return m_filterModel->data(filterIndex, EmojiModel::DescriptionRole);
}
}
// if (index.row() < 0 || index.row() >= m_filterModel->rowCount()) {
// return {};
// }
// auto filterIndex = m_filterModel->index(index.row(), 0);
// if (m_autoCompletionType == User) {
// if (role == DisplayNameRole) {
// return m_filterModel->data(filterIndex, UserListModel::DisplayNameRole);
// }
// if (role == SubtitleRole) {
// return m_filterModel->data(filterIndex, UserListModel::UserIdRole);
// }
// if (role == IconNameRole) {
// return m_filterModel->data(filterIndex, UserListModel::AvatarRole);
// }
// }
//
// if (m_autoCompletionType == Command) {
// if (role == DisplayNameRole) {
// return u"%1 %2"_s.arg(m_filterModel->data(filterIndex, ActionsModel::Prefix).toString(),
// m_filterModel->data(filterIndex, ActionsModel::Parameters).toString());
// }
// if (role == SubtitleRole) {
// return m_filterModel->data(filterIndex, ActionsModel::Description);
// }
// if (role == IconNameRole) {
// return u"invalid"_s;
// }
// if (role == ReplacedTextRole) {
// return m_filterModel->data(filterIndex, ActionsModel::Prefix);
// }
// }
// if (m_autoCompletionType == Room) {
// if (role == DisplayNameRole) {
// return m_filterModel->data(filterIndex, RoomListModel::DisplayNameRole);
// }
// if (role == SubtitleRole) {
// return m_filterModel->data(filterIndex, RoomListModel::CanonicalAliasRole);
// }
// if (role == IconNameRole) {
// return m_filterModel->data(filterIndex, RoomListModel::AvatarRole).toString();
// }
// }
// if (m_autoCompletionType == Emoji) {
// if (role == DisplayNameRole) {
// return m_filterModel->data(filterIndex, CustomEmojiModel::DisplayRole);
// }
// if (role == IconNameRole) {
// return m_filterModel->data(filterIndex, CustomEmojiModel::MxcUrl);
// }
// if (role == ReplacedTextRole) {
// return m_filterModel->data(filterIndex, CustomEmojiModel::ReplacedTextRole);
// }
// if (role == SubtitleRole) {
// return m_filterModel->data(filterIndex, EmojiModel::DescriptionRole);
// }
// }
return {};
}
@@ -118,50 +119,50 @@ QHash<int, QByteArray> CompletionModel::roleNames() const
void CompletionModel::updateCompletion()
{
if (text().startsWith(QLatin1Char('@'))) {
m_filterModel->setSourceModel(m_userListModel);
m_filterModel->setFilterRole(UserListModel::UserIdRole);
m_filterModel->setSecondaryFilterRole(UserListModel::DisplayNameRole);
m_filterModel->setFullText(m_fullText);
m_filterModel->setFilterText(m_text);
m_autoCompletionType = User;
m_filterModel->invalidate();
} else if (text().startsWith(QLatin1Char('/'))) {
m_filterModel->setSourceModel(&ActionsModel::instance());
m_filterModel->setFilterRole(ActionsModel::Prefix);
m_filterModel->setSecondaryFilterRole(-1);
m_filterModel->setFullText(m_fullText);
m_filterModel->setFilterText(m_text.mid(1));
m_autoCompletionType = Command;
m_filterModel->invalidate();
} else if (text().startsWith(QLatin1Char('#'))) {
m_autoCompletionType = Room;
m_filterModel->setSourceModel(m_roomListModel);
m_filterModel->setFilterRole(RoomListModel::CanonicalAliasRole);
m_filterModel->setSecondaryFilterRole(RoomListModel::DisplayNameRole);
m_filterModel->setFullText(m_fullText);
m_filterModel->setFilterText(m_text);
m_filterModel->invalidate();
} else if (text().startsWith(QLatin1Char(':')) && text().size() > 1 && !text()[1].isUpper()
&& (m_fullText.indexOf(QLatin1Char(':'), 1) == -1
|| (m_fullText.indexOf(QLatin1Char(' ')) != -1 && m_fullText.indexOf(QLatin1Char(':'), 1) > m_fullText.indexOf(QLatin1Char(' '), 1)))) {
m_filterModel->setSourceModel(m_emojiModel);
m_autoCompletionType = Emoji;
m_filterModel->setFilterRole(CustomEmojiModel::Name);
m_filterModel->setSecondaryFilterRole(EmojiModel::DescriptionRole);
m_filterModel->setFullText(m_fullText);
m_filterModel->setFilterText(m_text);
m_filterModel->invalidate();
} else {
m_autoCompletionType = None;
}
// if (text().startsWith(QLatin1Char('@'))) {
// m_filterModel->setSourceModel(m_userListModel);
// m_filterModel->setFilterRole(UserListModel::UserIdRole);
// m_filterModel->setSecondaryFilterRole(UserListModel::DisplayNameRole);
// m_filterModel->setFullText(m_fullText);
// m_filterModel->setFilterText(m_text);
// m_autoCompletionType = User;
// m_filterModel->invalidate();
// } else if (text().startsWith(QLatin1Char('/'))) {
// m_filterModel->setSourceModel(&ActionsModel::instance());
// m_filterModel->setFilterRole(ActionsModel::Prefix);
// m_filterModel->setSecondaryFilterRole(-1);
// m_filterModel->setFullText(m_fullText);
// m_filterModel->setFilterText(m_text.mid(1));
// m_autoCompletionType = Command;
// m_filterModel->invalidate();
// } else if (text().startsWith(QLatin1Char('#'))) {
// m_autoCompletionType = Room;
// m_filterModel->setSourceModel(m_roomListModel);
// m_filterModel->setFilterRole(RoomListModel::CanonicalAliasRole);
// m_filterModel->setSecondaryFilterRole(RoomListModel::DisplayNameRole);
// m_filterModel->setFullText(m_fullText);
// m_filterModel->setFilterText(m_text);
// m_filterModel->invalidate();
// } else if (text().startsWith(QLatin1Char(':')) && text().size() > 1 && !text()[1].isUpper()
// && (m_fullText.indexOf(QLatin1Char(':'), 1) == -1
// || (m_fullText.indexOf(QLatin1Char(' ')) != -1 && m_fullText.indexOf(QLatin1Char(':'), 1) > m_fullText.indexOf(QLatin1Char(' '), 1)))) {
// m_filterModel->setSourceModel(m_emojiModel);
// m_autoCompletionType = Emoji;
// m_filterModel->setFilterRole(CustomEmojiModel::Name);
// m_filterModel->setSecondaryFilterRole(EmojiModel::DescriptionRole);
// m_filterModel->setFullText(m_fullText);
// m_filterModel->setFilterText(m_text);
// m_filterModel->invalidate();
// } else {
// m_autoCompletionType = None;
// }
beginResetModel();
endResetModel();
}
NeoChatRoom *CompletionModel::room() const
{
return m_room;
return m_room.get();
}
void CompletionModel::setRoom(NeoChatRoom *room)

View File

@@ -7,7 +7,7 @@
#include <QQmlEngine>
#include <QSortFilterProxyModel>
#include "roomlistmodel.h"
// #include "roomlistmodel.h"
class CompletionProxyModel;
class UserListModel;
@@ -47,7 +47,7 @@ class CompletionModel : public QAbstractListModel
/**
* @brief The RoomListModel to be used for room completions.
*/
Q_PROPERTY(RoomListModel *roomListModel READ roomListModel WRITE setRoomListModel NOTIFY roomListModelChanged)
// Q_PROPERTY(RoomListModel *roomListModel READ roomListModel WRITE setRoomListModel NOTIFY roomListModelChanged)
public:
/**

View File

@@ -5,10 +5,10 @@
#include <QDebug>
#include <Quotient/converters.h>
#include <Quotient/csapi/definitions/push_ruleset.h>
#include <Quotient/csapi/pushrules.h>
#include <Quotient/jobs/basejob.h>
// #include <Quotient/converters.h>
// #include <Quotient/csapi/definitions/push_ruleset.h>
// #include <Quotient/csapi/pushrules.h>
// #include <Quotient/jobs/basejob.h>
#include "neochatconfig.h"
@@ -74,18 +74,18 @@ void PushRuleModel::updateNotificationRules(const QString &type)
return;
}
const QJsonObject ruleDataJson = m_connection->accountDataJson(u"m.push_rules"_s);
const Quotient::PushRuleset ruleData = Quotient::fromJson<Quotient::PushRuleset>(ruleDataJson["global"_L1].toObject());
// const QJsonObject ruleDataJson = m_connection->accountDataJson(u"m.push_rules"_s);
// const Quotient::PushRuleset ruleData = Quotient::fromJson<Quotient::PushRuleset>(ruleDataJson["global"_L1].toObject());
beginResetModel();
m_rules.clear();
// Doing this 5 times because PushRuleset is a struct.
setRules(ruleData.override, PushRuleKind::Override);
setRules(ruleData.content, PushRuleKind::Content);
setRules(ruleData.room, PushRuleKind::Room);
setRules(ruleData.sender, PushRuleKind::Sender);
setRules(ruleData.underride, PushRuleKind::Underride);
// setRules(ruleData.override, PushRuleKind::Override);
// setRules(ruleData.content, PushRuleKind::Content);
// setRules(ruleData.room, PushRuleKind::Room);
// setRules(ruleData.sender, PushRuleKind::Sender);
// setRules(ruleData.underride, PushRuleKind::Underride);
Q_EMIT globalNotificationsEnabledChanged();
Q_EMIT globalNotificationsSetChanged();
@@ -93,28 +93,28 @@ void PushRuleModel::updateNotificationRules(const QString &type)
endResetModel();
}
void PushRuleModel::setRules(QList<Quotient::PushRule> rules, PushRuleKind::Kind kind)
{
for (const auto &rule : rules) {
QString roomId;
if (rule.conditions.size() > 0) {
for (const auto &condition : std::as_const(rule.conditions)) {
if (condition.key == u"room_id"_s) {
roomId = condition.pattern;
}
}
}
m_rules.append(Rule{
rule.ruleId,
kind,
variantToAction(rule.actions, rule.enabled),
getSection(rule),
rule.enabled,
roomId,
});
}
}
// void PushRuleModel::setRules(QList<Quotient::PushRule> rules, PushRuleKind::Kind kind)
// {
// for (const auto &rule : rules) {
// QString roomId;
// if (rule.conditions.size() > 0) {
// for (const auto &condition : std::as_const(rule.conditions)) {
// if (condition.key == u"room_id"_s) {
// roomId = condition.pattern;
// }
// }
// }
//
// m_rules.append(Rule{
// rule.ruleId,
// kind,
// variantToAction(rule.actions, rule.enabled),
// getSection(rule),
// rule.enabled,
// roomId,
// });
// }
// }
int PushRuleModel::getRuleIndex(const QString &ruleId) const
{
@@ -126,51 +126,51 @@ int PushRuleModel::getRuleIndex(const QString &ruleId) const
return -1;
}
PushRuleSection::Section PushRuleModel::getSection(Quotient::PushRule rule)
{
auto ruleId = rule.ruleId;
if (defaultSections.contains(ruleId)) {
return defaultSections.value(ruleId);
} else {
if (rule.ruleId.startsWith(u'.')) {
return PushRuleSection::Unknown;
}
/**
* If the rule name resolves to a matrix id for a room that the user is part
* of it shouldn't appear in the global list as it's overriding the global
* state for that room.
*
* Rooms that the user hasn't joined shouldn't have a rule.
*/
if (m_connection->room(ruleId) != nullptr) {
return PushRuleSection::Undefined;
}
/**
* If the rule name resolves to a matrix id for a user it shouldn't appear
* in the global list as it's a rule to block notifications from a user and
* is handled elsewhere.
*/
auto testUserId = ruleId;
// Rules for user matrix IDs often don't have the @ on the beginning so add
// if not there to avoid malformed ID.
if (!testUserId.startsWith(u'@')) {
testUserId.prepend(u'@');
}
if (testUserId.startsWith(u'@') && !Quotient::serverPart(testUserId).isEmpty() && m_connection->user(testUserId) != nullptr) {
return PushRuleSection::Undefined;
}
// If the rule has push conditions and one is a room ID it is a room only keyword.
if (!rule.conditions.isEmpty()) {
for (const auto &condition : std::as_const(rule.conditions)) {
if (condition.key == u"room_id"_s) {
return PushRuleSection::RoomKeywords;
}
}
}
return PushRuleSection::Keywords;
}
}
// PushRuleSection::Section PushRuleModel::getSection(Quotient::PushRule rule)
// {
// auto ruleId = rule.ruleId;
//
// if (defaultSections.contains(ruleId)) {
// return defaultSections.value(ruleId);
// } else {
// if (rule.ruleId.startsWith(u'.')) {
// return PushRuleSection::Unknown;
// }
// /**
// * If the rule name resolves to a matrix id for a room that the user is part
// * of it shouldn't appear in the global list as it's overriding the global
// * state for that room.
// *
// * Rooms that the user hasn't joined shouldn't have a rule.
// */
// if (m_connection->room(ruleId) != nullptr) {
// return PushRuleSection::Undefined;
// }
// /**
// * If the rule name resolves to a matrix id for a user it shouldn't appear
// * in the global list as it's a rule to block notifications from a user and
// * is handled elsewhere.
// */
// auto testUserId = ruleId;
// // Rules for user matrix IDs often don't have the @ on the beginning so add
// // if not there to avoid malformed ID.
// if (!testUserId.startsWith(u'@')) {
// testUserId.prepend(u'@');
// }
// if (testUserId.startsWith(u'@') && !Quotient::serverPart(testUserId).isEmpty() && m_connection->user(testUserId) != nullptr) {
// return PushRuleSection::Undefined;
// }
// // If the rule has push conditions and one is a room ID it is a room only keyword.
// if (!rule.conditions.isEmpty()) {
// for (const auto &condition : std::as_const(rule.conditions)) {
// if (condition.key == u"room_id"_s) {
// return PushRuleSection::RoomKeywords;
// }
// }
// }
// return PushRuleSection::Keywords;
// }
// }
PushRuleAction::Action PushRuleModel::defaultState() const
{
@@ -294,33 +294,33 @@ void PushRuleModel::addKeyword(const QString &keyword, const QString &roomId)
{
PushRuleKind::Kind kind = PushRuleKind::Content;
const QList<QVariant> actions = actionToVariant(m_defaultKeywordAction);
QList<Quotient::PushCondition> pushConditions;
if (!roomId.isEmpty()) {
kind = PushRuleKind::Override;
Quotient::PushCondition roomCondition;
roomCondition.kind = u"event_match"_s;
roomCondition.key = u"room_id"_s;
roomCondition.pattern = roomId;
pushConditions.append(roomCondition);
Quotient::PushCondition keywordCondition;
keywordCondition.kind = u"event_match"_s;
keywordCondition.key = u"content.body"_s;
keywordCondition.pattern = keyword;
pushConditions.append(keywordCondition);
}
auto job = m_connection->callApi<Quotient::SetPushRuleJob>(PushRuleKind::kindString(kind),
keyword,
actions,
QString(),
QString(),
pushConditions,
roomId.isEmpty() ? keyword : QString());
connect(job, &Quotient::BaseJob::failure, this, [job, keyword]() {
qWarning() << "Unable to set push rule for keyword %1: "_L1.arg(keyword) << job->errorString();
});
// QList<Quotient::PushCondition> pushConditions;
// if (!roomId.isEmpty()) {
// kind = PushRuleKind::Override;
//
// Quotient::PushCondition roomCondition;
// roomCondition.kind = u"event_match"_s;
// roomCondition.key = u"room_id"_s;
// roomCondition.pattern = roomId;
// pushConditions.append(roomCondition);
//
// Quotient::PushCondition keywordCondition;
// keywordCondition.kind = u"event_match"_s;
// keywordCondition.key = u"content.body"_s;
// keywordCondition.pattern = keyword;
// pushConditions.append(keywordCondition);
// }
//
// auto job = m_connection->callApi<Quotient::SetPushRuleJob>(PushRuleKind::kindString(kind),
// keyword,
// actions,
// QString(),
// QString(),
// pushConditions,
// roomId.isEmpty() ? keyword : QString());
// connect(job, &Quotient::BaseJob::failure, this, [job, keyword]() {
// qWarning() << "Unable to set push rule for keyword %1: "_L1.arg(keyword) << job->errorString();
// });
}
/**
@@ -336,20 +336,20 @@ void PushRuleModel::removeKeyword(const QString &keyword)
}
auto kind = PushRuleKind::kindString(m_rules[index].kind);
auto job = m_connection->callApi<Quotient::DeletePushRuleJob>(kind, m_rules[index].id);
connect(job, &Quotient::BaseJob::failure, this, [this, job, index]() {
qWarning() << "Unable to remove push rule for keyword %1: "_L1.arg(m_rules[index].id) << job->errorString();
});
// auto job = m_connection->callApi<Quotient::DeletePushRuleJob>(kind, m_rules[index].id);
// connect(job, &Quotient::BaseJob::failure, this, [this, job, index]() {
// qWarning() << "Unable to remove push rule for keyword %1: "_L1.arg(m_rules[index].id) << job->errorString();
// });
}
void PushRuleModel::setNotificationRuleEnabled(const QString &kind, const QString &ruleId, bool enabled)
{
auto job = m_connection->callApi<Quotient::IsPushRuleEnabledJob>(kind, ruleId);
connect(job, &Quotient::BaseJob::success, this, [job, kind, ruleId, enabled, this]() {
if (job->enabled() != enabled) {
m_connection->callApi<Quotient::SetPushRuleEnabledJob>(kind, ruleId, enabled);
}
});
// auto job = m_connection->callApi<Quotient::IsPushRuleEnabledJob>(kind, ruleId);
// connect(job, &Quotient::BaseJob::success, this, [job, kind, ruleId, enabled, this]() {
// if (job->enabled() != enabled) {
// m_connection->callApi<Quotient::SetPushRuleEnabledJob>(kind, ruleId, enabled);
// }
// });
}
void PushRuleModel::setNotificationRuleActions(const QString &kind, const QString &ruleId, PushRuleAction::Action action)
@@ -361,7 +361,7 @@ void PushRuleModel::setNotificationRuleActions(const QString &kind, const QStrin
actions = actionToVariant(action);
}
m_connection->callApi<Quotient::SetPushRuleActionsJob>(kind, ruleId, actions);
// m_connection->callApi<Quotient::SetPushRuleActionsJob>(kind, ruleId, actions);
}
PushRuleAction::Action PushRuleModel::variantToAction(const QList<QVariant> &actions, bool enabled)
@@ -378,14 +378,14 @@ PushRuleAction::Action PushRuleModel::variantToAction(const QList<QVariant> &act
continue;
}
QJsonObject action = i.toJsonObject();
if (action["set_tweak"_L1].toString() == u"sound"_s) {
isNoisy = true;
} else if (action["set_tweak"_L1].toString() == u"highlight"_s) {
if (action["value"_L1].toString() != u"false"_s) {
highlightEnabled = true;
}
}
// QJsonObject action = i.toJsonObject();
// if (action["set_tweak"_L1].toString() == u"sound"_s) {
// isNoisy = true;
// } else if (action["set_tweak"_L1].toString() == u"highlight"_s) {
// if (action["value"_L1].toString() != u"false"_s) {
// highlightEnabled = true;
// }
// }
}
if (!enabled) {
@@ -424,15 +424,15 @@ QList<QVariant> PushRuleModel::actionToVariant(PushRuleAction::Action action, co
actions.append(u"dont_notify"_s);
}
if (action == PushRuleAction::Noisy || action == PushRuleAction::NoisyHighlight) {
QJsonObject soundTweak;
soundTweak.insert("set_tweak"_L1, u"sound"_s);
soundTweak.insert("value"_L1, sound);
actions.append(soundTweak);
// QJsonObject soundTweak;
// soundTweak.insert("set_tweak"_L1, u"sound"_s);
// soundTweak.insert("value"_L1, sound);
// actions.append(soundTweak);
}
if (action == PushRuleAction::Highlight || action == PushRuleAction::NoisyHighlight) {
QJsonObject highlightTweak;
highlightTweak.insert("set_tweak"_L1, u"highlight"_s);
actions.append(highlightTweak);
// QJsonObject highlightTweak;
// highlightTweak.insert("set_tweak"_L1, u"highlight"_s);
// actions.append(highlightTweak);
}
return actions;
@@ -452,7 +452,7 @@ void PushRuleModel::setConnection(NeoChatConnection *connection)
Q_EMIT connectionChanged();
if (m_connection) {
connect(m_connection, &NeoChatConnection::accountDataChanged, this, &PushRuleModel::updateNotificationRules);
// connect(m_connection, &NeoChatConnection::accountDataChanged, this, &PushRuleModel::updateNotificationRules);
updateNotificationRules(u"m.push_rules"_s);
}
}

View File

@@ -6,7 +6,7 @@
#include <QAbstractListModel>
#include <QQmlEngine>
#include <Quotient/csapi/definitions/push_rule.h>
// #include <Quotient/csapi/definitions/push_rule.h>
#include "enums/pushrule.h"
#include "neochatconnection.h"
@@ -130,10 +130,10 @@ private:
QList<Rule> m_rules;
QPointer<NeoChatConnection> m_connection;
void setRules(QList<Quotient::PushRule> rules, PushRuleKind::Kind kind);
// void setRules(QList<Quotient::PushRule> rules, PushRuleKind::Kind kind);
int getRuleIndex(const QString &ruleId) const;
PushRuleSection::Section getSection(Quotient::PushRule rule);
// PushRuleSection::Section getSection(Quotient::PushRule rule);
void setNotificationRuleEnabled(const QString &kind, const QString &ruleId, bool enabled);
void setNotificationRuleActions(const QString &kind, const QString &ruleId, PushRuleAction::Action action);

View File

@@ -12,11 +12,11 @@ RoomTreeItem::RoomTreeItem(TreeData data, RoomTreeItem *parent)
bool RoomTreeItem::operator==(const RoomTreeItem &other) const
{
if (std::holds_alternative<NeoChatRoomType::Types>(m_data) && std::holds_alternative<NeoChatRoomType::Types>(other.data())) {
return std::get<NeoChatRoomType::Types>(m_data) == std::get<NeoChatRoomType::Types>(m_data);
if (std::holds_alternative<NeoChatRoomType::Type>(m_data) && std::holds_alternative<NeoChatRoomType::Type>(other.data())) {
return std::get<NeoChatRoomType::Type>(m_data) == std::get<NeoChatRoomType::Type>(m_data);
}
if (std::holds_alternative<NeoChatRoom *>(m_data) && std::holds_alternative<NeoChatRoom *>(other.data())) {
return std::get<NeoChatRoom *>(m_data)->id() == std::get<NeoChatRoom *>(m_data)->id();
if (std::holds_alternative<RoomWrapper *>(m_data) && std::holds_alternative<RoomWrapper *>(other.data())) {
return (*std::get<RoomWrapper *>(m_data)->item)->id() == (*std::get<RoomWrapper *>(other.data())->item)->id();
}
return false;
}
@@ -84,13 +84,13 @@ RoomTreeItem::TreeData RoomTreeItem::data() const
return m_data;
}
std::optional<int> RoomTreeItem::rowForRoom(Quotient::Room *room) const
std::optional<int> RoomTreeItem::rowForRoom(rust::Box<sdk::RoomListRoom> room) const
{
Q_ASSERT_X(std::holds_alternative<NeoChatRoomType::Types>(m_data), __FUNCTION__, "rowForRoom only works items for rooms not categories");
Q_ASSERT_X(std::holds_alternative<NeoChatRoomType::Type>(m_data), __FUNCTION__, "rowForRoom only works items for rooms not categories");
int i = 0;
for (const auto &child : m_children) {
if (std::get<NeoChatRoom *>(child->data()) == room) {
if ((*std::get<RoomWrapper *>(child->data())->item)->id() == room->id()) {
return i;
}
i++;

View File

@@ -1,27 +1,28 @@
// SPDX-FileCopyrightText: 2024 Carl Schwan <carl@carlschwan.eu>
// SPDX-FileCopyrightText: 2024 James Graham <james.h.graham@protonmail.com>
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
#include "enums/neochatroomtype.h"
#include "neochatroomtype.h"
class NeoChatRoom;
namespace sdk
{
struct RoomListRoom;
}
struct RoomWrapper {
std::optional<rust::Box<sdk::RoomListRoom>> item;
};
/**
* @class RoomTreeItem
*
* This class defines an item in the space tree hierarchy model.
*
* @note This is separate from Quotient::Room and NeoChatRoom because we don't have
* full room information for any room/space the user hasn't joined and we
* don't want to create one for ever possible child in a space as that would
* be expensive.
*
* @sa Quotient::Room, NeoChatRoom
* This class defines an item in a room tree.
*/
class RoomTreeItem
{
public:
using TreeData = std::variant<NeoChatRoom *, NeoChatRoomType::Types>;
using TreeData = std::variant<RoomWrapper *, NeoChatRoomType::Type>;
explicit RoomTreeItem(TreeData data, RoomTreeItem *parent = nullptr);
@@ -68,7 +69,7 @@ public:
*/
TreeData data() const;
std::optional<int> rowForRoom(Quotient::Room *room) const;
std::optional<int> rowForRoom(rust::Box<sdk::RoomListRoom> room) const;
private:
std::vector<std::unique_ptr<RoomTreeItem>> m_children;

View File

@@ -1,23 +1,45 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
#include "roomtreemodel.h"
#include <Quotient/room.h>
#include "eventhandler.h"
#include "neochatconnection.h"
// #include "eventhandler.h"
#include "neochatroomtype.h"
#include "spacehierarchycache.h"
#include "rust/cxx.h"
#include <Integral/lib.rs.h>
// #include "spacehierarchycache.h"
#include <Integral/RoomStream>
#include <Integral/Utils>
using namespace Quotient;
using namespace Integral;
class RoomTreeModel::Private
{
public:
QPointer<Integral::Connection> connection;
std::unique_ptr<RoomStream> roomStream = nullptr;
std::unique_ptr<RoomTreeItem> rootItem;
// Since the rooms are streamed as vector diffs we need to keep track of them
// for things like the index value of insert to make sense.
QList<QPersistentModelIndex> roomIndexes;
void roomsUpdate();
void resetTree();
RoomTreeModel *q = nullptr;
};
RoomTreeModel::RoomTreeModel(QObject *parent)
: QAbstractItemModel(parent)
, m_rootItem(new RoomTreeItem(nullptr))
, d(std::make_unique<Private>())
{
d->q = this;
}
RoomTreeModel::~RoomTreeModel() = default;
RoomTreeItem *RoomTreeModel::getItem(const QModelIndex &index) const
{
if (index.isValid()) {
@@ -26,179 +48,226 @@ RoomTreeItem *RoomTreeModel::getItem(const QModelIndex &index) const
return item;
}
}
return m_rootItem.get();
return d->rootItem.get();
}
void RoomTreeModel::resetModel()
{
if (m_connection == nullptr) {
if (d->connection == nullptr) {
beginResetModel();
m_rootItem.reset();
d->rootItem.reset();
d->roomStream.reset();
endResetModel();
return;
}
beginResetModel();
m_rootItem.reset(new RoomTreeItem(nullptr));
d->resetTree();
for (int i = 0; i < NeoChatRoomType::TypesCount; i++) {
m_rootItem->insertChild(std::make_unique<RoomTreeItem>(NeoChatRoomType::Types(i), m_rootItem.get()));
}
d->roomStream = d->connection->roomStream();
connect(d->roomStream.get(), &RoomStream::roomsUpdate, this, [this]() {
d->roomsUpdate();
});
for (const auto &r : m_connection->allRooms()) {
const auto room = dynamic_cast<NeoChatRoom *>(r);
const auto type = NeoChatRoomType::typeForRoom(room);
const auto categoryItem = m_rootItem->child(type);
if (categoryItem->insertChild(std::make_unique<RoomTreeItem>(room, categoryItem))) {
connectRoomSignals(room);
}
}
d->roomStream->startStream();
endResetModel();
}
void RoomTreeModel::setConnection(NeoChatConnection *connection)
void RoomTreeModel::Private::resetTree()
{
if (m_connection == connection) {
rootItem.reset(new RoomTreeItem(nullptr));
for (int i = 0; i < NeoChatRoomType::TypesCount; i++) {
rootItem->insertChild(std::make_unique<RoomTreeItem>(NeoChatRoomType::Type(i), rootItem.get()));
}
}
void RoomTreeModel::setConnection(Connection *connection)
{
if (d->connection == connection) {
return;
}
if (m_connection) {
disconnect(m_connection.get(), nullptr, this, nullptr);
if (d->connection) {
d->connection->disconnect(this);
}
m_connection = connection;
d->connection = connection;
resetModel();
connect(connection, &Connection::newRoom, this, &RoomTreeModel::newRoom);
connect(connection, &Connection::leftRoom, this, &RoomTreeModel::leftRoom);
connect(connection, &Connection::aboutToDeleteRoom, this, &RoomTreeModel::leftRoom);
Q_EMIT connectionChanged();
}
void RoomTreeModel::newRoom(Room *r)
void RoomTreeModel::Private::roomsUpdate()
{
const auto room = dynamic_cast<NeoChatRoom *>(r);
const auto type = NeoChatRoomType::typeForRoom(room);
// Check if the room is already in the model.
const auto checkRoomIndex = indexForRoom(room);
if (checkRoomIndex.isValid()) {
// If the room is in the wrong type category for whatever reason, move it.
if (checkRoomIndex.parent().row() != type) {
moveRoom(room);
const auto diff = roomStream->next();
switch (diff->op()) {
case 0: { // Append
for (const auto &it : diff->items_vec()) {
const auto type = NeoChatRoomType::typeForRoom(it.box_me());
const auto parentItem = rootItem->child(type);
q->beginInsertRows(q->index(parentItem->row(), 0), parentItem->childCount(), parentItem->childCount());
if (parentItem->insertChild(std::make_unique<RoomTreeItem>(new RoomWrapper{it.box_me()}, parentItem))) {
// connectRoomSignals(room);
}
q->endInsertRows();
roomIndexes.append(q->indexForRoom(it.box_me()));
}
return;
break;
}
const auto parentItem = m_rootItem->child(type);
beginInsertRows(index(parentItem->row(), 0), parentItem->childCount(), parentItem->childCount());
parentItem->insertChild(std::make_unique<RoomTreeItem>(room, parentItem));
connectRoomSignals(room);
endInsertRows();
}
void RoomTreeModel::leftRoom(Room *r)
{
const auto room = dynamic_cast<NeoChatRoom *>(r);
auto index = indexForRoom(room);
if (!index.isValid()) {
return;
case 1: { // Clear
q->beginResetModel();
resetTree();
roomIndexes.clear();
q->endResetModel();
break;
}
const auto parentItem = getItem(index.parent());
Q_ASSERT(parentItem);
beginRemoveRows(index.parent(), index.row(), index.row());
parentItem->removeChild(index.row());
room->disconnect(this);
endRemoveRows();
}
void RoomTreeModel::moveRoom(Quotient::Room *room)
{
// We can't assume the type as it has changed so currently the return of
// NeoChatRoomType::typeForRoom doesn't match it's current location. So find the room.
NeoChatRoomType::Types oldType;
int oldRow = -1;
for (int i = 0; i < NeoChatRoomType::TypesCount; i++) {
const auto categoryItem = m_rootItem->child(i);
const auto row = categoryItem->rowForRoom(room);
if (row) {
oldType = static_cast<NeoChatRoomType::Types>(i);
oldRow = *row;
case 2: { // Push Front
const auto type = NeoChatRoomType::typeForRoom(diff->item());
const auto parentItem = rootItem->child(type);
q->beginInsertRows(q->index(parentItem->row(), 0), 0, 0);
if (parentItem->insertChild(std::make_unique<RoomTreeItem>(new RoomWrapper{diff->item()}, parentItem))) {
// connectRoomSignals(room);
}
q->endInsertRows();
roomIndexes.prepend(q->indexForRoom(diff->item()));
break;
}
if (oldRow == -1) {
return;
case 3: { // Push Back
const auto type = NeoChatRoomType::typeForRoom(diff->item());
const auto parentItem = rootItem->child(type);
q->beginInsertRows(q->index(parentItem->row(), 0), parentItem->childCount(), parentItem->childCount());
if (parentItem->insertChild(std::make_unique<RoomTreeItem>(new RoomWrapper{diff->item()}, parentItem))) {
// connectRoomSignals(room);
}
q->endInsertRows();
roomIndexes.append(q->indexForRoom(diff->item()));
break;
}
auto neochatRoom = dynamic_cast<NeoChatRoom *>(room);
const auto newType = NeoChatRoomType::typeForRoom(neochatRoom);
if (newType == oldType) {
return;
case 4: { // Pop Front
const auto index = roomIndexes.front();
q->beginRemoveRows(index.parent(), index.row(), index.row());
const auto parentItem = q->getItem(index.parent());
parentItem->removeChild(index.row());
roomIndexes.removeFirst();
q->endRemoveRows();
break;
}
case 5: { // Pop Back
const auto index = roomIndexes.back();
q->beginRemoveRows(index.parent(), index.row(), index.row());
const auto parentItem = q->getItem(index.parent());
parentItem->removeChild(index.row());
roomIndexes.removeLast();
q->endRemoveRows();
break;
}
case 6: { // Insert
const auto type = NeoChatRoomType::typeForRoom(diff->item());
const auto parentItem = rootItem->child(type);
q->beginInsertRows(q->index(parentItem->row(), 0), parentItem->childCount(), parentItem->childCount());
if (parentItem->insertChild(std::make_unique<RoomTreeItem>(new RoomWrapper{diff->item()}, parentItem))) {
// connectRoomSignals(room);
}
q->endInsertRows();
roomIndexes.insert(diff->index(), q->indexForRoom(diff->item()));
break;
}
case 7: { // Set
const auto index = roomIndexes.at(diff->index());
q->beginRemoveRows(index.parent(), index.row(), index.row());
q->getItem(index.parent())->removeChild(index.row());
q->endRemoveRows();
const auto oldParent = index(oldType, 0, {});
auto oldParentItem = getItem(oldParent);
Q_ASSERT(oldParentItem);
const auto type = NeoChatRoomType::typeForRoom(diff->item());
const auto parentItem = rootItem->child(type);
q->beginInsertRows(q->index(parentItem->row(), 0), parentItem->childCount(), parentItem->childCount());
if (parentItem->insertChild(std::make_unique<RoomTreeItem>(new RoomWrapper{diff->item()}, parentItem))) {
// connectRoomSignals(room);
}
q->endInsertRows();
roomIndexes[diff->index()] = q->indexForRoom(diff->item());
break;
}
case 8: { // Remove
const auto index = roomIndexes.at(diff->index());
q->beginRemoveRows(index.parent(), index.row(), index.row());
q->getItem(index.parent())->removeChild(index.row());
q->endRemoveRows();
roomIndexes.removeAt(diff->index());
break;
}
case 9: { // Truncate
for (int i = q->rowCount({}) - 1; i >= int(diff->index()); i--) {
const auto index = roomIndexes.at(i);
q->beginRemoveRows(index.parent(), index.row(), index.row());
q->getItem(index.parent())->removeChild(index.row());
q->endRemoveRows();
roomIndexes.removeAt(i);
}
break;
}
case 10: { // Reset
q->beginResetModel();
resetTree();
roomIndexes.clear();
q->endResetModel();
const auto newParent = index(newType, 0, {});
auto newParentItem = getItem(newParent);
Q_ASSERT(newParentItem);
// HACK: We're doing this as a remove then insert because moving doesn't work
// properly with DelegateChooser for whatever reason.
Q_ASSERT(checkIndex(index(oldRow, 0, oldParent), QAbstractItemModel::CheckIndexOption::IndexIsValid));
beginRemoveRows(oldParent, oldRow, oldRow);
const bool success = oldParentItem->removeChild(oldRow);
Q_ASSERT(success);
endRemoveRows();
beginInsertRows(newParent, newParentItem->childCount(), newParentItem->childCount());
newParentItem->insertChild(std::make_unique<RoomTreeItem>(neochatRoom, newParentItem));
endInsertRows();
for (const auto &it : diff->items_vec()) {
const auto type = NeoChatRoomType::typeForRoom(it.box_me());
const auto parentItem = rootItem->child(type);
q->beginInsertRows(q->index(parentItem->row(), 0), parentItem->childCount(), parentItem->childCount());
if (parentItem->insertChild(std::make_unique<RoomTreeItem>(new RoomWrapper{it.box_me()}, parentItem))) {
// connectRoomSignals(room);
}
q->endInsertRows();
roomIndexes.append(q->indexForRoom(it.box_me()));
}
break;
}
}
}
void RoomTreeModel::connectRoomSignals(NeoChatRoom *room)
{
connect(room, &Room::displaynameChanged, this, [this, room] {
refreshRoomRoles(room, {DisplayNameRole});
});
connect(room, &Room::unreadStatsChanged, this, [this, room] {
refreshRoomRoles(room, {ContextNotificationCountRole, HasHighlightNotificationsRole});
});
connect(room, &Room::avatarChanged, this, [this, room] {
refreshRoomRoles(room, {AvatarRole});
});
connect(room, &Room::tagsChanged, this, [this, room] {
moveRoom(room);
});
connect(room, &Room::joinStateChanged, this, [this, room] {
refreshRoomRoles(room);
});
connect(room, &Room::addedMessages, this, [this, room] {
refreshRoomRoles(room, {SubtitleTextRole});
});
connect(room, &Room::pendingEventMerged, this, [this, room] {
refreshRoomRoles(room, {SubtitleTextRole});
});
connect(room, &NeoChatRoom::pushNotificationStateChanged, this, [this, room] {
refreshRoomRoles(room, {ContextNotificationCountRole, HasHighlightNotificationsRole});
});
}
// void RoomTreeModel::connectRoomSignals(NeoChatRoom *room)
// {
// connect(room, &Room::displaynameChanged, this, [this, room] {
// refreshRoomRoles(room, {DisplayNameRole});
// });
// connect(room, &Room::unreadStatsChanged, this, [this, room] {
// refreshRoomRoles(room, {ContextNotificationCountRole, HasHighlightNotificationsRole});
// });
// connect(room, &Room::avatarChanged, this, [this, room] {
// refreshRoomRoles(room, {AvatarRole});
// });
// connect(room, &Room::tagsChanged, this, [this, room] {
// moveRoom(room);
// });
// connect(room, &Room::joinStateChanged, this, [this, room] {
// refreshRoomRoles(room);
// });
// connect(room, &Room::addedMessages, this, [this, room] {
// refreshRoomRoles(room, {SubtitleTextRole});
// });
// connect(room, &Room::pendingEventMerged, this, [this, room] {
// refreshRoomRoles(room, {SubtitleTextRole});
// });
// connect(room, &NeoChatRoom::pushNotificationStateChanged, this, [this, room] {
// refreshRoomRoles(room, {ContextNotificationCountRole, HasHighlightNotificationsRole});
// });
// }
void RoomTreeModel::refreshRoomRoles(NeoChatRoom *room, const QList<int> &roles)
{
const auto index = indexForRoom(room);
if (!index.isValid()) {
qCritical() << "Room" << room->id() << "not found in the room list";
return;
}
Q_EMIT dataChanged(index, index, roles);
}
// void RoomTreeModel::refreshRoomRoles(NeoChatRoom *room, const QList<int> &roles)
// {
// const auto index = indexForRoom(room);
// if (!index.isValid()) {
// qCritical() << "Room" << room->id() << "not found in the room list";
// return;
// }
// Q_EMIT dataChanged(index, index, roles);
// }
NeoChatConnection *RoomTreeModel::connection() const
Connection *RoomTreeModel::connection() const
{
return m_connection;
return d->connection;
}
int RoomTreeModel::columnCount(const QModelIndex &parent) const
@@ -215,7 +284,7 @@ int RoomTreeModel::rowCount(const QModelIndex &parent) const
}
if (!parent.isValid()) {
parentItem = m_rootItem.get();
parentItem = d->rootItem.get();
} else {
parentItem = static_cast<RoomTreeItem *>(parent.internalPointer());
}
@@ -239,7 +308,7 @@ QModelIndex RoomTreeModel::parent(const QModelIndex &index) const
}
RoomTreeItem *parentItem = childItem->parentItem();
if (parentItem == m_rootItem.get()) {
if (parentItem == d->rootItem.get()) {
return QModelIndex();
}
@@ -295,7 +364,7 @@ QVariant RoomTreeModel::data(const QModelIndex &index, int role) const
}
RoomTreeItem *child = getItem(index);
if (std::holds_alternative<NeoChatRoomType::Types>(child->data())) {
if (std::holds_alternative<NeoChatRoomType::Type>(child->data())) {
if (role == DisplayNameRole) {
return NeoChatRoomType::typeName(index.row());
}
@@ -314,98 +383,91 @@ QVariant RoomTreeModel::data(const QModelIndex &index, int role) const
return {};
}
const auto room = std::get<NeoChatRoom *>(child->data());
const auto room = std::get<RoomWrapper *>(child->data());
Q_ASSERT(room);
if (role == DisplayNameRole) {
return room->displayName();
return stringFromRust((*room->item)->display_name()).toHtmlEscaped();
}
if (role == AvatarRole) {
return room->avatarMediaUrl();
return u"%1?user_id=%2"_s.arg(stringFromRust((*room->item)->avatar_url()), d->connection->matrixId());
}
if (role == CanonicalAliasRole) {
return room->canonicalAlias();
return stringFromRust((*room->item)->canonical_alias()).toHtmlEscaped();
}
if (role == TopicRole) {
return room->topic();
return stringFromRust((*room->item)->topic()).toHtmlEscaped();
}
if (role == CategoryRole) {
return NeoChatRoomType::typeForRoom(room);
return NeoChatRoomType::typeForRoom((*room->item)->box_me());
}
if (role == ContextNotificationCountRole) {
return int(room->contextAwareNotificationCount());
return int((*room->item)->num_unread_messages());
}
if (role == HasHighlightNotificationsRole) {
return room->highlightCount() > 0 && room->contextAwareNotificationCount() > 0;
return (*room->item)->num_unread_mentions() > 0 && (*room->item)->num_unread_messages() > 0;
}
if (role == JoinStateRole) {
if (!room->successorId().isEmpty()) {
if (!(*room->item)->tombstone()->replacement_room().empty()) {
return u"upgraded"_s;
}
return QVariant::fromValue(room->joinState());
return QVariant::fromValue((*room->item)->state());
}
if (role == CurrentRoomRole) {
return QVariant::fromValue(room);
return {};
// return QVariant::fromValue(room);
}
if (role == SubtitleTextRole) {
if (room->isInvite()) {
if (room->isDirectChat()) {
return i18nc("@info:label", "Invited you to chat");
}
return i18nc("@info:label", "%1 invited you", room->member(room->invitingUserId()).displayName());
}
if (room->lastEvent() == nullptr || room->lastEventIsSpoiler()) {
return QString();
}
return EventHandler::subtitleText(room, room->lastEvent());
return {};
// if (room->lastEvent() == nullptr || room->lastEventIsSpoiler()) {
// return QString();
// }
// return EventHandler::subtitleText(room, room->lastEvent());
}
if (role == AvatarImageRole) {
return room->avatar(128);
return {};
// return room->avatar(128);
}
if (role == RoomIdRole) {
return room->id();
return stringFromRust((*room->item)->id()).toHtmlEscaped();
}
if (role == IsSpaceRole) {
return room->isSpace();
return (*room->item)->is_space();
}
if (role == IsChildSpaceRole) {
return SpaceHierarchyCache::instance().isChild(room->id());
return false;
// return SpaceHierarchyCache::instance().isChild(room->id());
}
if (role == ReplacementIdRole) {
return room->successorId();
return stringFromRust((*room->item)->tombstone()->replacement_room()).toHtmlEscaped();
}
if (role == IsDirectChat) {
return room->isDirectChat();
return false;
// return room->isDirectChat();
}
if (role == DelegateTypeRole) {
return u"normal"_s;
}
if (role == RoomTypeRole) {
if (room->creation()) {
return room->creation()->contentPart<QString>("type"_L1);
}
return stringFromRust((*room->item)->room_type()).toHtmlEscaped();
}
return {};
}
QModelIndex RoomTreeModel::indexForRoom(NeoChatRoom *room) const
QModelIndex RoomTreeModel::indexForRoom(rust::Box<sdk::RoomListRoom> room) const
{
if (room == nullptr) {
return {};
}
// Try and find by checking type.
const auto type = NeoChatRoomType::typeForRoom(room);
const auto parentItem = m_rootItem->child(type);
const auto row = parentItem->rowForRoom(room);
const auto type = NeoChatRoomType::typeForRoom(room->box_me());
const auto parentItem = d->rootItem->child(type);
const auto row = parentItem->rowForRoom(room->box_me());
if (row) {
return index(*row, 0, index(type, 0));
}
// Double check that the room isn't in the wrong category.
for (int i = 0; i < NeoChatRoomType::TypesCount; i++) {
const auto parentItem = m_rootItem->child(i);
const auto row = parentItem->rowForRoom(room);
const auto parentItem = d->rootItem->child(i);
const auto row = parentItem->rowForRoom(room->box_me());
if (row) {
return index(*row, 0, index(i, 0));
}
@@ -414,4 +476,13 @@ QModelIndex RoomTreeModel::indexForRoom(NeoChatRoom *room) const
return {};
}
std::optional<rust::Box<sdk::RoomListRoom>> RoomTreeModel::roomForIndex(QModelIndex index) const
{
RoomTreeItem *child = getItem(index);
if (std::holds_alternative<NeoChatRoomType::Type>(child->data())) {
return std::nullopt;
}
return (*std::get<RoomWrapper *>(child->data())->item)->box_me();
}
#include "moc_roomtreemodel.cpp"

View File

@@ -1,3 +1,4 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
@@ -6,23 +7,20 @@
#include <QAbstractItemModel>
#include <QPointer>
#include "enums/neochatroomtype.h"
#include "roomtreeitem.h"
namespace Quotient
namespace Integral
{
class Connection;
class Room;
}
class NeoChatConnection;
class NeoChatRoom;
class RoomTreeModel : public QAbstractItemModel
{
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(NeoChatConnection *connection READ connection WRITE setConnection NOTIFY connectionChanged)
Q_PROPERTY(Integral::Connection *connection READ connection WRITE setConnection NOTIFY connectionChanged)
public:
/**
@@ -51,9 +49,10 @@ public:
};
Q_ENUM(EventRoles)
explicit RoomTreeModel(QObject *parent = nullptr);
~RoomTreeModel();
void setConnection(NeoChatConnection *connection);
NeoChatConnection *connection() const;
void setConnection(Integral::Connection *connection);
Integral::Connection *connection() const;
/**
* @brief Get the given role value at the given index.
@@ -75,23 +74,21 @@ public:
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
Q_INVOKABLE QModelIndex indexForRoom(NeoChatRoom *room) const;
QModelIndex indexForRoom(rust::Box<sdk::RoomListRoom> room) const;
std::optional<rust::Box<sdk::RoomListRoom>> roomForIndex(QModelIndex index) const;
Q_SIGNALS:
void connectionChanged();
private:
QPointer<NeoChatConnection> m_connection;
std::unique_ptr<RoomTreeItem> m_rootItem;
class Private;
std::unique_ptr<Private> d;
RoomTreeItem *getItem(const QModelIndex &index) const;
void resetModel();
void connectRoomSignals(NeoChatRoom *room);
void newRoom(Quotient::Room *room);
void leftRoom(Quotient::Room *room);
void moveRoom(Quotient::Room *room);
// void connectRoomSignals(NeoChatRoom *room);
void refreshRoomRoles(NeoChatRoom *room, const QList<int> &roles = {});
// void refreshRoomRoles(NeoChatRoom *room, const QList<int> &roles = {});
};

View File

@@ -4,26 +4,26 @@
#include "sortfilterroomtreemodel.h"
#include "enums/roomsortparameter.h"
#include "neochatconfig.h"
#include "roomsortparameter.h"
// #include "neochatconfig.h"
#include "neochatconnection.h"
#include "neochatroom.h"
#include "neochatroomtype.h"
#include "roommanager.h"
#include <Integral/Room>
// #include "roommanager.h"
#include "roomtreemodel.h"
#include "spacehierarchycache.h"
// #include "spacehierarchycache.h"
SortFilterRoomTreeModel::SortFilterRoomTreeModel(RoomTreeModel *sourceModel, QObject *parent)
SortFilterRoomTreeModel::SortFilterRoomTreeModel(QObject *parent)
: QSortFilterProxyModel(parent)
{
Q_ASSERT(sourceModel);
setSourceModel(sourceModel);
// Q_ASSERT(sourceModel);
// setSourceModel(sourceModel);
setRoomSortOrder(static_cast<RoomSortOrder>(NeoChatConfig::sortOrder()));
connect(NeoChatConfig::self(), &NeoChatConfig::SortOrderChanged, this, [this]() {
setRoomSortOrder(static_cast<RoomSortOrder>(NeoChatConfig::sortOrder()));
invalidateFilter();
});
// setRoomSortOrder(static_cast<RoomSortOrder>(NeoChatConfig::sortOrder()));
// connect(NeoChatConfig::self(), &NeoChatConfig::SortOrderChanged, this, [this]() {
// setRoomSortOrder(static_cast<RoomSortOrder>(NeoChatConfig::sortOrder()));
// invalidateFilter();
// });
setRecursiveFilteringEnabled(true);
sort(0);
@@ -34,13 +34,13 @@ SortFilterRoomTreeModel::SortFilterRoomTreeModel(RoomTreeModel *sourceModel, QOb
connect(this->sourceModel(), &QAbstractItemModel::rowsRemoved, this, &SortFilterRoomTreeModel::invalidateFilter);
});
connect(NeoChatConfig::self(), &NeoChatConfig::CollapsedChanged, this, &SortFilterRoomTreeModel::invalidateFilter);
connect(NeoChatConfig::self(), &NeoChatConfig::AllRoomsInHomeChanged, this, [this]() {
invalidateFilter();
if (NeoChatConfig::self()->allRoomsInHome()) {
RoomManager::instance().resetState();
}
});
// connect(NeoChatConfig::self(), &NeoChatConfig::CollapsedChanged, this, &SortFilterRoomTreeModel::invalidateFilter);
// connect(NeoChatConfig::self(), &NeoChatConfig::AllRoomsInHomeChanged, this, [this]() {
// invalidateFilter();
// if (NeoChatConfig::self()->allRoomsInHome()) {
// RoomManager::instance().resetState();
// }
// });
}
void SortFilterRoomTreeModel::setRoomSortOrder(SortFilterRoomTreeModel::RoomSortOrder sortOrder)
@@ -78,14 +78,14 @@ bool SortFilterRoomTreeModel::lessThan(const QModelIndex &source_left, const QMo
return false;
}
const auto leftRoom = dynamic_cast<NeoChatRoom *>(treeModel->connection()->room(source_left.data(RoomTreeModel::RoomIdRole).toString()));
const auto rightRoom = dynamic_cast<NeoChatRoom *>(treeModel->connection()->room(source_right.data(RoomTreeModel::RoomIdRole).toString()));
if (leftRoom == nullptr || rightRoom == nullptr) {
const auto leftRoom = treeModel->roomForIndex(source_left);
const auto rightRoom = treeModel->roomForIndex(source_right);
if (!leftRoom.has_value() || !rightRoom.has_value()) {
return false;
}
for (auto sortRole : RoomSortParameter::currentParameterList()) {
auto result = RoomSortParameter::compareParameter(sortRole, leftRoom, rightRoom);
auto result = RoomSortParameter::compareParameter(sortRole, leftRoom.value()->box_me(), rightRoom.value()->box_me());
if (result != 0) {
return result > 0;
@@ -141,20 +141,22 @@ bool SortFilterRoomTreeModel::filterAcceptsRow(int source_row, const QModelIndex
return false;
}
static auto config = NeoChatConfig::self();
if (config->allRoomsInHome() && RoomManager::instance().currentSpace().isEmpty()) {
return acceptRoom;
}
return acceptRoom;
if (m_activeSpaceId.isEmpty()) {
if (!SpaceHierarchyCache::instance().isChild(sourceModel()->data(index, RoomTreeModel::RoomIdRole).toString())) {
return acceptRoom;
}
return false;
} else {
const auto &rooms = SpaceHierarchyCache::instance().getRoomListForSpace(m_activeSpaceId, false);
return std::find(rooms.begin(), rooms.end(), sourceModel()->data(index, RoomTreeModel::RoomIdRole).toString()) != rooms.end() && acceptRoom;
}
// static auto config = NeoChatConfig::self();
// if (config->allRoomsInHome() && RoomManager::instance().currentSpace().isEmpty()) {
// return acceptRoom;
// }
//
// if (m_activeSpaceId.isEmpty()) {
// if (!SpaceHierarchyCache::instance().isChild(sourceModel()->data(index, RoomTreeModel::RoomIdRole).toString())) {
// return acceptRoom;
// }
// return false;
// } else {
// const auto &rooms = SpaceHierarchyCache::instance().getRoomListForSpace(m_activeSpaceId, false);
// return std::find(rooms.begin(), rooms.end(), sourceModel()->data(index, RoomTreeModel::RoomIdRole).toString()) != rooms.end() && acceptRoom;
// }
}
QString SortFilterRoomTreeModel::activeSpaceId() const
@@ -192,7 +194,7 @@ QModelIndex SortFilterRoomTreeModel::currentRoomIndex() const
return {};
}
return mapFromSource(roomModel->indexForRoom(RoomManager::instance().currentRoom()));
return {}; // mapFromSource(roomModel->indexForRoom(RoomManager::instance().currentRoom()));
}
#include "moc_sortfilterroomtreemodel.cpp"

View File

@@ -32,7 +32,7 @@ class SortFilterRoomTreeModel : public QSortFilterProxyModel
{
Q_OBJECT
QML_ELEMENT
QML_UNCREATABLE("")
// QML_UNCREATABLE("")
/**
* @brief The text to use to filter room names.
@@ -64,7 +64,7 @@ public:
};
Q_ENUM(Mode)
explicit SortFilterRoomTreeModel(RoomTreeModel *sourceModel, QObject *parent = nullptr);
explicit SortFilterRoomTreeModel(QObject *parent = nullptr);
void setRoomSortOrder(RoomSortOrder sortOrder);

View File

@@ -13,13 +13,35 @@
using namespace Qt::StringLiterals;
ThreePIdModel::ThreePIdModel(NeoChatConnection *connection)
: QAbstractListModel(connection)
ThreePIdModel::ThreePIdModel(QObject *parent)
: QAbstractListModel(parent)
{
Q_ASSERT(connection);
connect(connection, &NeoChatConnection::stateChanged, this, [this]() {
}
NeoChatConnection *ThreePIdModel::connection() const
{
return m_connection;
}
void ThreePIdModel::setConnection(NeoChatConnection *connection)
{
if (m_connection == connection) {
return;
}
if (m_connection != nullptr) {
m_connection->disconnect(this);
}
m_connection = connection;
if (m_connection) {
connect(m_connection, &NeoChatConnection::stateChanged, this, [this]() {
refreshModel();
});
refreshModel();
});
}
Q_EMIT connectionChanged();
}
QVariant ThreePIdModel::data(const QModelIndex &index, int role) const
@@ -62,12 +84,14 @@ QHash<int, QByteArray> ThreePIdModel::roleNames() const
void ThreePIdModel::refreshModel()
{
const auto connection = dynamic_cast<NeoChatConnection *>(this->parent());
if (connection != nullptr && connection->isLoggedIn()) {
const auto threePIdJob = connection->callApi<Quotient::GetAccount3PIDsJob>();
connect(threePIdJob, &Quotient::BaseJob::success, this, [this, threePIdJob]() {
if (m_connection != nullptr && m_connection->isLoggedIn()) {
if (m_job.isRunning()) {
m_job.cancel();
}
m_job = m_connection->callApi<Quotient::GetAccount3PIDsJob>();
connect(m_job, &Quotient::BaseJob::success, this, [this]() {
beginResetModel();
m_threePIds = threePIdJob->threepids();
m_threePIds = m_job->threepids();
endResetModel();
refreshBindStatus();
@@ -77,25 +101,24 @@ void ThreePIdModel::refreshModel()
void ThreePIdModel::refreshBindStatus()
{
const auto connection = dynamic_cast<NeoChatConnection *>(this->parent());
if (connection == nullptr || !connection->hasIdentityServer()) {
if (m_connection == nullptr || !m_connection->hasIdentityServer()) {
return;
}
const auto openIdJob = connection->callApi<Quotient::RequestOpenIdTokenJob>(connection->userId());
connect(openIdJob, &Quotient::BaseJob::success, this, [this, connection, openIdJob]() {
const auto requestUrl = QUrl(connection->identityServer().toString() + u"/_matrix/identity/v2/account/register"_s);
const auto openIdJob = m_connection->callApi<Quotient::RequestOpenIdTokenJob>(m_connection->userId());
connect(openIdJob, &Quotient::BaseJob::success, this, [this, openIdJob]() {
const auto requestUrl = QUrl(m_connection->identityServer().toString() + u"/_matrix/identity/v2/account/register"_s);
if (!(requestUrl.scheme() == u"https"_s || requestUrl.scheme() == u"http"_s)) {
return;
}
QNetworkRequest request(requestUrl);
auto newRequest = Quotient::NetworkAccessManager::instance()->post(request, QJsonDocument(openIdJob->jsonData()).toJson());
connect(newRequest, &QNetworkReply::finished, this, [this, connection, newRequest]() {
connect(newRequest, &QNetworkReply::finished, this, [this, newRequest]() {
QJsonObject replyJson = QJsonDocument::fromJson(newRequest->readAll()).object();
const auto identityServerToken = replyJson["token"_L1].toString();
const auto requestUrl = QUrl(connection->identityServer().toString() + u"/_matrix/identity/v2/hash_details"_s);
const auto requestUrl = QUrl(m_connection->identityServer().toString() + u"/_matrix/identity/v2/hash_details"_s);
if (!(requestUrl.scheme() == u"https"_s || requestUrl.scheme() == u"http"_s)) {
return;
}
@@ -104,11 +127,11 @@ void ThreePIdModel::refreshBindStatus()
hashRequest.setRawHeader("Authorization", "Bearer " + identityServerToken.toLatin1());
auto hashReply = Quotient::NetworkAccessManager::instance()->get(hashRequest);
connect(hashReply, &QNetworkReply::finished, this, [this, connection, identityServerToken, hashReply]() {
connect(hashReply, &QNetworkReply::finished, this, [this, identityServerToken, hashReply]() {
QJsonObject replyJson = QJsonDocument::fromJson(hashReply->readAll()).object();
const auto lookupPepper = replyJson["lookup_pepper"_L1].toString();
const auto requestUrl = QUrl(connection->identityServer().toString() + u"/_matrix/identity/v2/lookup"_s);
const auto requestUrl = QUrl(m_connection->identityServer().toString() + u"/_matrix/identity/v2/lookup"_s);
if (!(requestUrl.scheme() == u"https"_s || requestUrl.scheme() == u"http"_s)) {
return;
}
@@ -127,13 +150,13 @@ void ThreePIdModel::refreshBindStatus()
requestData["addresses"_L1] = idLookups;
auto lookupReply = Quotient::NetworkAccessManager::instance()->post(lookupRequest, QJsonDocument(requestData).toJson(QJsonDocument::Compact));
connect(lookupReply, &QNetworkReply::finished, this, [this, connection, lookupReply]() {
connect(lookupReply, &QNetworkReply::finished, this, [this, lookupReply]() {
beginResetModel();
m_bindings.clear();
QJsonObject mappings = QJsonDocument::fromJson(lookupReply->readAll()).object()["mappings"_L1].toObject();
for (const auto &id : mappings.keys()) {
if (mappings[id] == connection->userId()) {
if (mappings[id] == m_connection->userId()) {
m_bindings += id.section(u' ', 0, 0);
}
}

View File

@@ -7,6 +7,7 @@
#include <QQmlEngine>
#include <Quotient/csapi/administrative_contact.h>
#include <Quotient/jobs/jobhandle.h>
class NeoChatConnection;
@@ -19,19 +20,27 @@ class ThreePIdModel : public QAbstractListModel
{
Q_OBJECT
QML_ELEMENT
QML_UNCREATABLE("")
/**
* @brief The current connection for the model to use.
*/
Q_PROPERTY(NeoChatConnection *connection READ connection WRITE setConnection NOTIFY connectionChanged)
public:
/**
* @brief Defines the model roles.
*/
enum EventRoles {
enum Roles {
AddressRole = Qt::DisplayRole, /**< The third-party identifier address. */
MediumRole, /**< The medium of the third-party identifier. One of: [email, msisdn]. */
IsBoundRole, /**< Whether the 3PID is bound to the current identity server. */
};
Q_ENUM(Roles)
explicit ThreePIdModel(NeoChatConnection *parent);
explicit ThreePIdModel(QObject *parent = nullptr);
[[nodiscard]] NeoChatConnection *connection() const;
void setConnection(NeoChatConnection *connection);
/**
* @brief Get the given role value at the given index.
@@ -56,9 +65,15 @@ public:
Q_INVOKABLE void refreshModel();
Q_SIGNALS:
void connectionChanged();
private:
QPointer<NeoChatConnection> m_connection;
QVector<Quotient::GetAccount3PIDsJob::ThirdPartyIdentifier> m_threePIds;
Quotient::JobHandle<Quotient::GetAccount3PIDsJob> m_job;
QList<QString> m_bindings;
void refreshBindStatus();

View File

@@ -5,8 +5,8 @@
#include <QGuiApplication>
#include <Quotient/avatar.h>
#include <Quotient/events/roompowerlevelsevent.h>
// #include <Quotient/avatar.h>
// #include <Quotient/events/roompowerlevelsevent.h>
#include "enums/powerlevel.h"
#include "neochatroom.h"
@@ -30,7 +30,7 @@ void UserListModel::setRoom(NeoChatRoom *room)
// last room's objects before the room is actually changed
beginResetModel();
m_currentRoom->disconnect(this);
m_currentRoom->connection()->disconnect(this);
// m_currentRoom->connection()->disconnect(this);
m_currentRoom = nullptr;
m_members.clear();
endResetModel();
@@ -39,21 +39,21 @@ void UserListModel::setRoom(NeoChatRoom *room)
m_currentRoom = room;
if (m_currentRoom) {
connect(m_currentRoom, &Room::memberJoined, this, &UserListModel::memberJoined);
connect(m_currentRoom, &Room::memberLeft, this, &UserListModel::memberLeft);
connect(m_currentRoom, &Room::memberNameUpdated, this, [this](RoomMember member) {
refreshMember(member, {DisplayNameRole});
});
connect(m_currentRoom, &Room::memberAvatarUpdated, this, [this](RoomMember member) {
refreshMember(member, {AvatarRole});
});
connect(m_currentRoom, &Room::memberListChanged, this, [this]() {
// this is slow
UserListModel::refreshAllMembers();
});
connect(m_currentRoom->connection(), &Connection::loggedOut, this, [this]() {
setRoom(nullptr);
});
// connect(m_currentRoom, &Room::memberJoined, this, &UserListModel::memberJoined);
// connect(m_currentRoom, &Room::memberLeft, this, &UserListModel::memberLeft);
// connect(m_currentRoom, &Room::memberNameUpdated, this, [this](RoomMember member) {
// refreshMember(member, {DisplayNameRole});
// });
// connect(m_currentRoom, &Room::memberAvatarUpdated, this, [this](RoomMember member) {
// refreshMember(member, {AvatarRole});
// });
// connect(m_currentRoom, &Room::memberListChanged, this, [this]() {
// // this is slow
// UserListModel::refreshAllMembers();
// });
// connect(m_currentRoom->connection(), &Connection::loggedOut, this, [this]() {
// setRoom(nullptr);
// });
}
m_active = false;
@@ -80,40 +80,40 @@ QVariant UserListModel::data(const QModelIndex &index, int role) const
return {};
}
auto memberId = m_members.at(index.row());
if (role == DisplayNameRole) {
return m_currentRoom->member(memberId).disambiguatedName();
}
if (role == UserIdRole) {
return memberId;
}
if (role == AvatarRole) {
return m_currentRoom->member(memberId).avatarUrl();
}
if (role == ObjectRole) {
return QVariant::fromValue(memberId);
}
if (role == PowerLevelRole) {
auto plEvent = m_currentRoom->currentState().get<RoomPowerLevelsEvent>();
if (!plEvent) {
return 0;
}
return plEvent->powerLevelForUser(memberId);
}
if (role == PowerLevelStringRole) {
auto pl = m_currentRoom->currentState().get<RoomPowerLevelsEvent>();
// User might not in the room yet, in this case pl can be nullptr.
// e.g. When invited but user not accepted or denied the invitation.
if (!pl) {
return u"Not Available"_s;
}
auto userPl = pl->powerLevelForUser(memberId);
return i18nc("%1 is the name of the power level, e.g. admin and %2 is the value that represents.",
"%1 (%2)",
PowerLevel::nameForLevel(PowerLevel::levelForValue(userPl)),
userPl);
}
// if (role == DisplayNameRole) {
// return m_currentRoom->member(memberId).disambiguatedName();
// }
// if (role == UserIdRole) {
// return memberId;
// }
// if (role == AvatarRole) {
// return m_currentRoom->member(memberId).avatarUrl();
// }
// if (role == ObjectRole) {
// return QVariant::fromValue(memberId);
// }
// if (role == PowerLevelRole) {
// auto plEvent = m_currentRoom->currentState().get<RoomPowerLevelsEvent>();
// if (!plEvent) {
// return 0;
// }
// return plEvent->powerLevelForUser(memberId);
// }
// if (role == PowerLevelStringRole) {
// auto pl = m_currentRoom->currentState().get<RoomPowerLevelsEvent>();
// // User might not in the room yet, in this case pl can be nullptr.
// // e.g. When invited but user not accepted or denied the invitation.
// if (!pl) {
// return u"Not Available"_s;
// }
//
// auto userPl = pl->powerLevelForUser(memberId);
//
// return i18nc("%1 is the name of the power level, e.g. admin and %2 is the value that represents.",
// "%1 (%2)",
// PowerLevel::nameForLevel(PowerLevel::levelForValue(userPl)),
// userPl);
// }
return {};
}
@@ -134,65 +134,65 @@ bool UserListModel::event(QEvent *event)
return QObject::event(event);
}
void UserListModel::memberJoined(const Quotient::RoomMember &member)
{
auto pos = findUserPos(member);
beginInsertRows(QModelIndex(), pos, pos);
m_members.insert(pos, member.id());
endInsertRows();
}
void UserListModel::memberLeft(const Quotient::RoomMember &member)
{
auto pos = findUserPos(member);
if (pos != m_members.size()) {
beginRemoveRows(QModelIndex(), pos, pos);
m_members.removeAt(pos);
endRemoveRows();
} else {
qWarning() << "Trying to remove a room member not in the user list";
}
}
void UserListModel::refreshMember(const Quotient::RoomMember &member, const QList<int> &roles)
{
auto pos = findUserPos(member);
if (pos != m_members.size()) {
// The update will have changed the state event so we need to insert the updated member object.
m_members.insert(pos, member.id());
Q_EMIT dataChanged(index(pos), index(pos), roles);
} else {
qWarning() << "Trying to access a room member not in the user list";
}
}
// void UserListModel::memberJoined(const Quotient::RoomMember &member)
// {
// auto pos = findUserPos(member);
// beginInsertRows(QModelIndex(), pos, pos);
// m_members.insert(pos, member.id());
// endInsertRows();
// }
//
// void UserListModel::memberLeft(const Quotient::RoomMember &member)
// {
// auto pos = findUserPos(member);
// if (pos != m_members.size()) {
// beginRemoveRows(QModelIndex(), pos, pos);
// m_members.removeAt(pos);
// endRemoveRows();
// } else {
// qWarning() << "Trying to remove a room member not in the user list";
// }
// }
//
// void UserListModel::refreshMember(const Quotient::RoomMember &member, const QList<int> &roles)
// {
// auto pos = findUserPos(member);
// if (pos != m_members.size()) {
// // The update will have changed the state event so we need to insert the updated member object.
// m_members.insert(pos, member.id());
// Q_EMIT dataChanged(index(pos), index(pos), roles);
// } else {
// qWarning() << "Trying to access a room member not in the user list";
// }
// }
void UserListModel::refreshAllMembers()
{
beginResetModel();
if (m_currentRoom != nullptr) {
m_members = m_currentRoom->joinedMemberIds();
MemberSorter sorter;
std::sort(m_members.begin(), m_members.end(), [&sorter, this](const auto &left, const auto &right) {
const auto leftPl = m_currentRoom->memberEffectivePowerLevel(left);
const auto rightPl = m_currentRoom->memberEffectivePowerLevel(right);
if (leftPl > rightPl) {
return true;
} else if (rightPl > leftPl) {
return false;
}
return sorter(m_currentRoom->member(left), m_currentRoom->member(right));
});
// m_members = m_currentRoom->joinedMemberIds();
// MemberSorter sorter;
// std::sort(m_members.begin(), m_members.end(), [&sorter, this](const auto &left, const auto &right) {
// const auto leftPl = m_currentRoom->memberEffectivePowerLevel(left);
// const auto rightPl = m_currentRoom->memberEffectivePowerLevel(right);
// if (leftPl > rightPl) {
// return true;
// } else if (rightPl > leftPl) {
// return false;
// }
//
// return sorter(m_currentRoom->member(left), m_currentRoom->member(right));
// });
}
endResetModel();
Q_EMIT usersRefreshed();
}
int UserListModel::findUserPos(const RoomMember &member) const
{
return findUserPos(member.id());
}
// int UserListModel::findUserPos(const RoomMember &member) const
// {
// return findUserPos(member.id());
// }
int UserListModel::findUserPos(const QString &userId) const
{

View File

@@ -3,7 +3,7 @@
#pragma once
#include <Quotient/room.h>
#include <Integral/Room>
#include <QAbstractListModel>
#include <QObject>
@@ -87,9 +87,9 @@ protected:
bool event(QEvent *event) override;
private Q_SLOTS:
void memberJoined(const Quotient::RoomMember &member);
void memberLeft(const Quotient::RoomMember &member);
void refreshMember(const Quotient::RoomMember &member, const QList<int> &roles = {});
// void memberJoined(const Quotient::RoomMember &member);
// void memberLeft(const Quotient::RoomMember &member);
// void refreshMember(const Quotient::RoomMember &member, const QList<int> &roles = {});
void refreshAllMembers();
private:
@@ -98,6 +98,6 @@ private:
bool m_active = false;
int findUserPos(const Quotient::RoomMember &member) const;
// int findUserPos(const Quotient::RoomMember &member) const;
[[nodiscard]] int findUserPos(const QString &username) const;
};

View File

@@ -6,149 +6,142 @@
#include <QImageReader>
#include <QJsonDocument>
#include "neochatconfig.h"
#include "neochatroom.h"
#include "spacehierarchycache.h"
// #include "neochatconfig.h"
// #include "neochatroom.h"
// #include "spacehierarchycache.h"
#include <Quotient/jobs/basejob.h>
#include <Quotient/quotient_common.h>
// #include <Quotient/jobs/basejob.h>
// #include <Quotient/quotient_common.h>
#include <qt6keychain/keychain.h>
#include <KLocalizedString>
#include <Quotient/csapi/content-repo.h>
#include <Quotient/csapi/profile.h>
#include <Quotient/csapi/registration.h>
#include <Quotient/csapi/versions.h>
#include <Quotient/jobs/downloadfilejob.h>
#include <Quotient/qt_connection_util.h>
#include <Quotient/room.h>
#include <Quotient/settings.h>
#include <Quotient/user.h>
// #include <Quotient/csapi/content-repo.h>
// #include <Quotient/csapi/profile.h>
// #include <Quotient/csapi/registration.h>
// #include <Quotient/csapi/versions.h>
// #include <Quotient/jobs/downloadfilejob.h>
// #include <Quotient/qt_connection_util.h>
// #include <Quotient/room.h>
// #include <Quotient/settings.h>
// #include <Quotient/user.h>
#ifdef HAVE_KUNIFIEDPUSH
#include <QCoroNetwork>
#include <Quotient/csapi/pusher.h>
#include <Quotient/networkaccessmanager.h>
#endif
// #ifdef HAVE_KUNIFIEDPUSH
// #include <QCoroNetwork>
// #include <Quotient/csapi/pusher.h>
// #include <Quotient/networkaccessmanager.h>
// #endif
using namespace Quotient;
#include <Integral/Connection_p>
using namespace Integral;
using namespace Qt::StringLiterals;
NeoChatConnection::NeoChatConnection(QObject *parent)
: Connection(parent)
, m_threePIdModel(new ThreePIdModel(this))
NeoChatConnection::NeoChatConnection(std::unique_ptr<Connection::Private> d)
: Connection(std::move(d))
{
m_linkPreviewers.setMaxCost(20);
connectSignals();
}
NeoChatConnection::NeoChatConnection(const QUrl &server, QObject *parent)
: Connection(server, parent)
, m_threePIdModel(new ThreePIdModel(this))
{
m_linkPreviewers.setMaxCost(20);
// m_linkPreviewers.setMaxCost(20);
connectSignals();
}
void NeoChatConnection::connectSignals()
{
connect(this, &NeoChatConnection::accountDataChanged, this, [this](const QString &type) {
if (type == u"org.kde.neochat.account_label"_s) {
Q_EMIT labelChanged();
}
if (type == u"m.identity_server"_s) {
Q_EMIT identityServerChanged();
}
});
connect(this, &NeoChatConnection::syncDone, this, [this] {
setIsOnline(true);
});
connect(this, &NeoChatConnection::networkError, this, [this]() {
setIsOnline(false);
});
connect(this, &NeoChatConnection::requestFailed, this, [this](BaseJob *job) {
if (job->error() == BaseJob::UserConsentRequired) {
Q_EMIT userConsentRequired(job->errorUrl());
}
});
connect(this, &NeoChatConnection::requestFailed, this, [this](BaseJob *job) {
if (dynamic_cast<DownloadFileJob *>(job) && job->jsonData()["errcode"_L1].toString() == "M_TOO_LARGE"_L1) {
Q_EMIT showMessage(MessageType::Warning, i18n("File too large to download.<br />Contact your matrix server administrator for support."));
}
});
connect(this, &NeoChatConnection::directChatsListChanged, this, [this](DirectChatsMap additions, DirectChatsMap removals) {
Q_EMIT directChatInvitesChanged();
for (const auto &chatId : additions) {
if (const auto chat = room(chatId)) {
connect(chat, &Room::unreadStatsChanged, this, [this]() {
refreshBadgeNotificationCount();
Q_EMIT directChatNotificationsChanged();
Q_EMIT directChatsHaveHighlightNotificationsChanged();
});
}
}
for (const auto &chatId : removals) {
if (const auto chat = room(chatId)) {
disconnect(chat, &Room::unreadStatsChanged, this, nullptr);
}
}
});
connect(this, &NeoChatConnection::joinedRoom, this, [this](Room *room) {
if (room->isDirectChat()) {
connect(room, &Room::unreadStatsChanged, this, [this]() {
Q_EMIT directChatNotificationsChanged();
Q_EMIT directChatsHaveHighlightNotificationsChanged();
});
}
connect(room, &Room::unreadStatsChanged, this, [this]() {
refreshBadgeNotificationCount();
Q_EMIT homeNotificationsChanged();
Q_EMIT homeHaveHighlightNotificationsChanged();
});
});
connect(this, &NeoChatConnection::leftRoom, this, [this](Room *room, Room *prev) {
Q_UNUSED(room)
if (prev && prev->isDirectChat()) {
Q_EMIT directChatInvitesChanged();
Q_EMIT directChatNotificationsChanged();
Q_EMIT directChatsHaveHighlightNotificationsChanged();
}
refreshBadgeNotificationCount();
Q_EMIT homeNotificationsChanged();
Q_EMIT homeHaveHighlightNotificationsChanged();
});
connect(&SpaceHierarchyCache::instance(), &SpaceHierarchyCache::spaceHierarchyChanged, this, [this]() {
refreshBadgeNotificationCount();
Q_EMIT homeNotificationsChanged();
Q_EMIT homeHaveHighlightNotificationsChanged();
});
// Fetch unstable features
// TODO: Expose unstableFeatures() in libQuotient
connect(
this,
&Connection::connected,
this,
[this] {
auto job = callApi<GetVersionsJob>(BackgroundRequest);
connect(job, &GetVersionsJob::success, this, [this, job] {
m_canCheckMutualRooms = job->unstableFeatures().contains("uk.half-shot.msc2666.query_mutual_rooms"_L1);
Q_EMIT canCheckMutualRoomsChanged();
m_canEraseData = job->unstableFeatures().contains("org.matrix.msc4025"_L1) || job->versions().count("v1.10"_L1);
Q_EMIT canEraseDataChanged();
});
},
Qt::SingleShotConnection);
setDirectChatEncryptionDefault(NeoChatConfig::preferUsingEncryption());
connect(NeoChatConfig::self(), &NeoChatConfig::PreferUsingEncryptionChanged, this, [] {
setDirectChatEncryptionDefault(NeoChatConfig::preferUsingEncryption());
});
setGlobalUrlPreviewEnabled(NeoChatConfig::showLinkPreview());
connect(NeoChatConfig::self(), &NeoChatConfig::ShowLinkPreviewChanged, this, [this]() {
setGlobalUrlPreviewEnabled(NeoChatConfig::showLinkPreview());
});
// connect(this, &NeoChatConnection::accountDataChanged, this, [this](const QString &type) {
// if (type == u"org.kde.neochat.account_label"_s) {
// Q_EMIT labelChanged();
// }
// if (type == u"m.identity_server"_s) {
// Q_EMIT identityServerChanged();
// }
// });
// connect(this, &NeoChatConnection::syncDone, this, [this] {
// setIsOnline(true);
// });
// connect(this, &NeoChatConnection::networkError, this, [this]() {
// setIsOnline(false);
// });
// connect(this, &NeoChatConnection::requestFailed, this, [this](BaseJob *job) {
// if (job->error() == BaseJob::UserConsentRequired) {
// Q_EMIT userConsentRequired(job->errorUrl());
// }
// });
// connect(this, &NeoChatConnection::requestFailed, this, [this](BaseJob *job) {
// if (dynamic_cast<DownloadFileJob *>(job) && job->jsonData()["errcode"_L1].toString() == "M_TOO_LARGE"_L1) {
// Q_EMIT showMessage(MessageType::Warning, i18n("File too large to download.<br />Contact your matrix server administrator for support."));
// }
// });
// connect(this, &NeoChatConnection::directChatsListChanged, this, [this](DirectChatsMap additions, DirectChatsMap removals) {
// Q_EMIT directChatInvitesChanged();
// for (const auto &chatId : additions) {
// if (const auto chat = room(chatId)) {
// connect(chat, &Room::unreadStatsChanged, this, [this]() {
// refreshBadgeNotificationCount();
// Q_EMIT directChatNotificationsChanged();
// Q_EMIT directChatsHaveHighlightNotificationsChanged();
// });
// }
// }
// for (const auto &chatId : removals) {
// if (const auto chat = room(chatId)) {
// disconnect(chat, &Room::unreadStatsChanged, this, nullptr);
// }
// }
// });
// connect(this, &NeoChatConnection::joinedRoom, this, [this](Room *room) {
// if (room->isDirectChat()) {
// connect(room, &Room::unreadStatsChanged, this, [this]() {
// Q_EMIT directChatNotificationsChanged();
// Q_EMIT directChatsHaveHighlightNotificationsChanged();
// });
// }
// connect(room, &Room::unreadStatsChanged, this, [this]() {
// refreshBadgeNotificationCount();
// Q_EMIT homeNotificationsChanged();
// Q_EMIT homeHaveHighlightNotificationsChanged();
// });
// });
// connect(this, &NeoChatConnection::leftRoom, this, [this](Room *room, Room *prev) {
// Q_UNUSED(room)
// if (prev && prev->isDirectChat()) {
// Q_EMIT directChatInvitesChanged();
// Q_EMIT directChatNotificationsChanged();
// Q_EMIT directChatsHaveHighlightNotificationsChanged();
// }
// refreshBadgeNotificationCount();
// Q_EMIT homeNotificationsChanged();
// Q_EMIT homeHaveHighlightNotificationsChanged();
// });
//
// connect(&SpaceHierarchyCache::instance(), &SpaceHierarchyCache::spaceHierarchyChanged, this, [this]() {
// refreshBadgeNotificationCount();
// Q_EMIT homeNotificationsChanged();
// Q_EMIT homeHaveHighlightNotificationsChanged();
// });
//
// // Fetch unstable features
// // TODO: Expose unstableFeatures() in libQuotient
// connect(
// this,
// &Connection::connected,
// this,
// [this] {
// auto job = callApi<GetVersionsJob>(BackgroundRequest);
// connect(job, &GetVersionsJob::success, this, [this, job] {
// m_canCheckMutualRooms = job->unstableFeatures().contains("uk.half-shot.msc2666.query_mutual_rooms"_L1);
// Q_EMIT canCheckMutualRoomsChanged();
// m_canEraseData = job->unstableFeatures().contains("org.matrix.msc4025"_L1) || job->versions().count("v1.10"_L1);
// Q_EMIT canEraseDataChanged();
// });
// },
// Qt::SingleShotConnection);
// setDirectChatEncryptionDefault(NeoChatConfig::preferUsingEncryption());
// connect(NeoChatConfig::self(), &NeoChatConfig::PreferUsingEncryptionChanged, this, [] {
// setDirectChatEncryptionDefault(NeoChatConfig::preferUsingEncryption());
// });
// setGlobalUrlPreviewEnabled(NeoChatConfig::showLinkPreview());
// connect(NeoChatConfig::self(), &NeoChatConfig::ShowLinkPreviewChanged, this, [this]() {
// setGlobalUrlPreviewEnabled(NeoChatConfig::showLinkPreview());
// });
}
int NeoChatConnection::badgeNotificationCount() const
@@ -159,11 +152,11 @@ int NeoChatConnection::badgeNotificationCount() const
void NeoChatConnection::refreshBadgeNotificationCount()
{
int count = 0;
for (const auto &r : allRooms()) {
if (const auto room = static_cast<NeoChatRoom *>(r)) {
count += room->contextAwareNotificationCount();
}
}
// for (const auto &r : allRooms()) {
// if (const auto room = static_cast<NeoChatRoom *>(r)) {
// count += room->contextAwareNotificationCount();
// }
// }
if (count != m_badgeNotificationCount) {
m_badgeNotificationCount = count;
@@ -184,56 +177,58 @@ void NeoChatConnection::setGlobalUrlPreviewEnabled(bool newState)
m_globalUrlPreviewEnabled = newState;
if (!m_globalUrlPreviewEnabled) {
m_linkPreviewers.clear();
// m_linkPreviewers.clear();
}
NeoChatConfig::setShowLinkPreview(m_globalUrlPreviewEnabled);
// NeoChatConfig::setShowLinkPreview(m_globalUrlPreviewEnabled);
Q_EMIT globalUrlPreviewEnabledChanged();
}
void NeoChatConnection::logout(bool serverSideLogout)
{
SettingsGroup(u"Accounts"_s).remove(userId());
QKeychain::DeletePasswordJob job(qAppName());
job.setAutoDelete(true);
job.setKey(userId());
QEventLoop loop;
QKeychain::DeletePasswordJob::connect(&job, &QKeychain::Job::finished, &loop, &QEventLoop::quit);
job.start();
loop.exec();
if (!serverSideLogout) {
return;
}
Connection::logout();
// SettingsGroup(u"Accounts"_s).remove(userId());
//
// QKeychain::DeletePasswordJob job(qAppName());
// job.setAutoDelete(true);
// job.setKey(userId());
// QEventLoop loop;
// QKeychain::DeletePasswordJob::connect(&job, &QKeychain::Job::finished, &loop, &QEventLoop::quit);
// job.start();
// loop.exec();
//
// if (!serverSideLogout) {
// return;
// }
// Connection::logout();
}
bool NeoChatConnection::setAvatar(const QUrl &avatarSource)
{
QString decoded = avatarSource.path();
if (decoded.isEmpty()) {
callApi<SetAvatarUrlJob>(user()->id(), avatarSource);
return true;
}
if (QImageReader(decoded).read().isNull()) {
return false;
} else {
return user()->setAvatar(decoded);
}
// QString decoded = avatarSource.path();
// if (decoded.isEmpty()) {
// callApi<SetAvatarUrlJob>(user()->id(), avatarSource);
// return true;
// }
// if (QImageReader(decoded).read().isNull()) {
// return false;
// } else {
// return user()->setAvatar(decoded);
// }
return {};
}
QVariantList NeoChatConnection::getSupportedRoomVersions() const
{
const auto &roomVersions = availableRoomVersions();
QVariantList supportedRoomVersions;
for (const auto &v : roomVersions) {
QVariantMap roomVersionMap;
roomVersionMap.insert("id"_L1, v.id);
roomVersionMap.insert("status"_L1, v.status);
roomVersionMap.insert("isStable"_L1, v.isStable());
supportedRoomVersions.append(roomVersionMap);
}
return supportedRoomVersions;
// const auto &roomVersions = availableRoomVersions();
// QVariantList supportedRoomVersions;
// for (const auto &v : roomVersions) {
// QVariantMap roomVersionMap;
// roomVersionMap.insert("id"_L1, v.id);
// roomVersionMap.insert("status"_L1, v.status);
// roomVersionMap.insert("isStable"_L1, v.isStable());
// supportedRoomVersions.append(roomVersionMap);
// }
// return supportedRoomVersions;
return {};
}
bool NeoChatConnection::canCheckMutualRooms() const
@@ -243,90 +238,86 @@ bool NeoChatConnection::canCheckMutualRooms() const
void NeoChatConnection::changePassword(const QString &currentPassword, const QString &newPassword)
{
auto job = callApi<ChangePasswordJob>(newPassword, false);
connect(job, &BaseJob::result, this, [this, job, currentPassword, newPassword] {
if (job->error() == 103) {
QJsonObject replyData = job->jsonData();
AuthenticationData authData;
authData.session = replyData["session"_L1].toString();
authData.type = "m.login.password"_L1;
authData.authInfo["password"_L1] = currentPassword;
authData.authInfo["user"_L1] = user()->id();
authData.authInfo["identifier"_L1] = QJsonObject{{"type"_L1, "m.id.user"_L1}, {"user"_L1, user()->id()}};
auto innerJob = callApi<ChangePasswordJob>(newPassword, false, authData);
connect(innerJob, &BaseJob::success, this, [this]() {
Q_EMIT passwordStatus(PasswordStatus::Success);
});
connect(innerJob, &BaseJob::failure, this, [innerJob, this]() {
Q_EMIT passwordStatus(innerJob->jsonData()["errcode"_L1] == "M_FORBIDDEN"_L1 ? PasswordStatus::Wrong : PasswordStatus::Other);
});
}
});
// auto job = callApi<ChangePasswordJob>(newPassword, false);
// connect(job, &BaseJob::result, this, [this, job, currentPassword, newPassword] {
// if (job->error() == 103) {
// QJsonObject replyData = job->jsonData();
// AuthenticationData authData;
// authData.session = replyData["session"_L1].toString();
// authData.type = "m.login.password"_L1;
// authData.authInfo["password"_L1] = currentPassword;
// authData.authInfo["user"_L1] = user()->id();
// authData.authInfo["identifier"_L1] = QJsonObject{{"type"_L1, "m.id.user"_L1}, {"user"_L1, user()->id()}};
// auto innerJob = callApi<ChangePasswordJob>(newPassword, false, authData);
// connect(innerJob, &BaseJob::success, this, [this]() {
// Q_EMIT passwordStatus(PasswordStatus::Success);
// });
// connect(innerJob, &BaseJob::failure, this, [innerJob, this]() {
// Q_EMIT passwordStatus(innerJob->jsonData()["errcode"_L1] == "M_FORBIDDEN"_L1 ? PasswordStatus::Wrong : PasswordStatus::Other);
// });
// }
// });
}
void NeoChatConnection::setLabel(const QString &label)
{
QJsonObject json{
{"account_label"_L1, label},
};
setAccountData("org.kde.neochat.account_label"_L1, json);
Q_EMIT labelChanged();
// QJsonObject json{
// {"account_label"_L1, label},
// };
// setAccountData("org.kde.neochat.account_label"_L1, json);
// Q_EMIT labelChanged();
}
QString NeoChatConnection::label() const
{
return accountDataJson("org.kde.neochat.account_label"_L1)["account_label"_L1].toString();
// return accountDataJson("org.kde.neochat.account_label"_L1)["account_label"_L1].toString();
return {};
}
void NeoChatConnection::deactivateAccount(const QString &password, const bool erase)
{
auto job = callApi<DeactivateAccountJob>();
connect(job, &BaseJob::result, this, [this, job, password, erase] {
if (job->error() == 103) {
QJsonObject replyData = job->jsonData();
AuthenticationData authData;
authData.session = replyData["session"_L1].toString();
authData.authInfo["password"_L1] = password;
authData.type = "m.login.password"_L1;
authData.authInfo["user"_L1] = user()->id();
QJsonObject identifier = {{"type"_L1, "m.id.user"_L1}, {"user"_L1, user()->id()}};
authData.authInfo["identifier"_L1] = identifier;
auto innerJob = callApi<DeactivateAccountJob>(authData, QString{}, erase);
connect(innerJob, &BaseJob::success, this, [this]() {
logout(false);
});
}
});
}
ThreePIdModel *NeoChatConnection::threePIdModel() const
{
return m_threePIdModel;
// auto job = callApi<DeactivateAccountJob>();
// connect(job, &BaseJob::result, this, [this, job, password, erase] {
// if (job->error() == 103) {
// QJsonObject replyData = job->jsonData();
// AuthenticationData authData;
// authData.session = replyData["session"_L1].toString();
// authData.authInfo["password"_L1] = password;
// authData.type = "m.login.password"_L1;
// authData.authInfo["user"_L1] = user()->id();
// QJsonObject identifier = {{"type"_L1, "m.id.user"_L1}, {"user"_L1, user()->id()}};
// authData.authInfo["identifier"_L1] = identifier;
// auto innerJob = callApi<DeactivateAccountJob>(authData, QString{}, erase);
// connect(innerJob, &BaseJob::success, this, [this]() {
// logout(false);
// });
// }
// });
}
bool NeoChatConnection::hasIdentityServer() const
{
if (!hasAccountData(u"m.identity_server"_s)) {
return false;
}
// if (!hasAccountData(u"m.identity_server"_s)) {
// return false;
// }
const auto url = accountData(u"m.identity_server"_s)->contentPart<QUrl>("base_url"_L1);
if (!url.isEmpty()) {
return true;
}
// const auto url = accountData(u"m.identity_server"_s)->contentPart<QUrl>("base_url"_L1);
// if (!url.isEmpty()) {
// return true;
// }
return false;
}
QUrl NeoChatConnection::identityServer() const
{
if (!hasAccountData(u"m.identity_server"_s)) {
return {};
}
// if (!hasAccountData(u"m.identity_server"_s)) {
// return {};
// }
const auto url = accountData(u"m.identity_server"_s)->contentPart<QUrl>("base_url"_L1);
if (!url.isEmpty()) {
return url;
}
// const auto url = accountData(u"m.identity_server"_s)->contentPart<QUrl>("base_url"_L1);
// if (!url.isEmpty()) {
// return url;
// }
return {};
}
@@ -341,92 +332,93 @@ QString NeoChatConnection::identityServerUIString() const
void NeoChatConnection::createRoom(const QString &name, const QString &topic, const QString &parent, bool setChildParent)
{
QList<CreateRoomJob::StateEvent> initialStateEvents;
if (!parent.isEmpty()) {
initialStateEvents.append(CreateRoomJob::StateEvent{
"m.space.parent"_L1,
QJsonObject{
{"canonical"_L1, true},
{"via"_L1, QJsonArray{domain()}},
},
parent,
});
}
const auto job = Connection::createRoom(Connection::PublishRoom, QString(), name, topic, QStringList(), {}, {}, {}, initialStateEvents);
if (!parent.isEmpty()) {
connect(job, &Quotient::CreateRoomJob::success, this, [this, parent, setChildParent, job]() {
if (setChildParent) {
if (auto parentRoom = room(parent)) {
parentRoom->setState(u"m.space.child"_s, job->roomId(), QJsonObject{{"via"_L1, QJsonArray{domain()}}});
}
}
});
}
connect(job, &CreateRoomJob::failure, this, [this, job] {
Q_EMIT errorOccured(i18n("Room creation failed: %1", job->errorString()));
});
// QList<CreateRoomJob::StateEvent> initialStateEvents;
// if (!parent.isEmpty()) {
// initialStateEvents.append(CreateRoomJob::StateEvent{
// "m.space.parent"_L1,
// QJsonObject{
// {"canonical"_L1, true},
// {"via"_L1, QJsonArray{domain()}},
// },
// parent,
// });
// }
//
// const auto job = Connection::createRoom(Connection::PublishRoom, QString(), name, topic, QStringList(), {}, {}, {}, initialStateEvents);
// if (!parent.isEmpty()) {
// connect(job, &Quotient::CreateRoomJob::success, this, [this, parent, setChildParent, job]() {
// if (setChildParent) {
// if (auto parentRoom = room(parent)) {
// parentRoom->setState(u"m.space.child"_s, job->roomId(), QJsonObject{{"via"_L1, QJsonArray{domain()}}});
// }
// }
// });
// }
// connect(job, &CreateRoomJob::failure, this, [this, job] {
// Q_EMIT errorOccured(i18n("Room creation failed: %1", job->errorString()));
// });
}
void NeoChatConnection::createSpace(const QString &name, const QString &topic, const QString &parent, bool setChildParent)
{
QList<CreateRoomJob::StateEvent> initialStateEvents;
if (!parent.isEmpty()) {
initialStateEvents.append(CreateRoomJob::StateEvent{
"m.space.parent"_L1,
QJsonObject{
{"canonical"_L1, true},
{"via"_L1, QJsonArray{domain()}},
},
parent,
});
}
const auto job =
Connection::createRoom(Connection::UnpublishRoom, {}, name, topic, {}, {}, {}, false, initialStateEvents, {}, QJsonObject{{"type"_L1, "m.space"_L1}});
if (!parent.isEmpty()) {
connect(job, &Quotient::CreateRoomJob::success, this, [this, parent, setChildParent, job]() {
if (setChildParent) {
if (auto parentRoom = room(parent)) {
parentRoom->setState(u"m.space.child"_s, job->roomId(), QJsonObject{{"via"_L1, QJsonArray{domain()}}});
}
}
});
}
connect(job, &CreateRoomJob::failure, this, [this, job] {
Q_EMIT errorOccured(i18n("Space creation failed: %1", job->errorString()));
});
// QList<CreateRoomJob::StateEvent> initialStateEvents;
// if (!parent.isEmpty()) {
// initialStateEvents.append(CreateRoomJob::StateEvent{
// "m.space.parent"_L1,
// QJsonObject{
// {"canonical"_L1, true},
// {"via"_L1, QJsonArray{domain()}},
// },
// parent,
// });
// }
//
// const auto job =
// Connection::createRoom(Connection::UnpublishRoom, {}, name, topic, {}, {}, {}, false, initialStateEvents, {}, QJsonObject{{"type"_L1,
// "m.space"_L1}});
// if (!parent.isEmpty()) {
// connect(job, &Quotient::CreateRoomJob::success, this, [this, parent, setChildParent, job]() {
// if (setChildParent) {
// if (auto parentRoom = room(parent)) {
// parentRoom->setState(u"m.space.child"_s, job->roomId(), QJsonObject{{"via"_L1, QJsonArray{domain()}}});
// }
// }
// });
// }
// connect(job, &CreateRoomJob::failure, this, [this, job] {
// Q_EMIT errorOccured(i18n("Space creation failed: %1", job->errorString()));
// });
}
bool NeoChatConnection::directChatExists(Quotient::User *user)
{
return directChats().contains(user);
}
// bool NeoChatConnection::directChatExists(Quotient::User *user)
// {
// return directChats().contains(user);
// }
qsizetype NeoChatConnection::directChatNotifications() const
{
qsizetype notifications = 0;
QStringList added; // The same ID can be in the list multiple times.
for (const auto &chatId : directChats()) {
if (!added.contains(chatId)) {
if (const auto chat = room(chatId)) {
notifications += dynamic_cast<NeoChatRoom *>(chat)->contextAwareNotificationCount();
added += chatId;
}
}
}
// for (const auto &chatId : directChats()) {
// if (!added.contains(chatId)) {
// if (const auto chat = room(chatId)) {
// notifications += dynamic_cast<NeoChatRoom *>(chat)->contextAwareNotificationCount();
// added += chatId;
// }
// }
// }
return notifications;
}
bool NeoChatConnection::directChatsHaveHighlightNotifications() const
{
for (const auto &childId : directChats()) {
if (const auto child = static_cast<NeoChatRoom *>(room(childId))) {
if (child->highlightCount() > 0) {
return true;
}
}
}
// for (const auto &childId : directChats()) {
// if (const auto child = static_cast<NeoChatRoom *>(room(childId))) {
// if (child->highlightCount() > 0) {
// return true;
// }
// }
// }
return false;
}
@@ -434,78 +426,78 @@ qsizetype NeoChatConnection::homeNotifications() const
{
qsizetype notifications = 0;
QStringList added;
const auto &spaceHierarchyCache = SpaceHierarchyCache::instance();
for (const auto &r : allRooms()) {
if (const auto room = static_cast<NeoChatRoom *>(r)) {
if (!added.contains(room->id()) && !room->isDirectChat() && !spaceHierarchyCache.isChild(room->id())) {
notifications += dynamic_cast<NeoChatRoom *>(room)->contextAwareNotificationCount();
added += room->id();
}
}
}
// const auto &spaceHierarchyCache = SpaceHierarchyCache::instance();
// for (const auto &r : allRooms()) {
// if (const auto room = static_cast<NeoChatRoom *>(r)) {
// if (!added.contains(room->id()) && !room->isDirectChat() && !spaceHierarchyCache.isChild(room->id())) {
// notifications += dynamic_cast<NeoChatRoom *>(room)->contextAwareNotificationCount();
// added += room->id();
// }
// }
// }
return notifications;
}
bool NeoChatConnection::homeHaveHighlightNotifications() const
{
const auto &spaceHierarchyCache = SpaceHierarchyCache::instance();
for (const auto &r : allRooms()) {
if (const auto room = static_cast<NeoChatRoom *>(r)) {
if (!room->isDirectChat() && !spaceHierarchyCache.isChild(room->id()) && room->highlightCount() > 0) {
return true;
}
}
}
// const auto &spaceHierarchyCache = SpaceHierarchyCache::instance();
// for (const auto &r : allRooms()) {
// if (const auto room = static_cast<NeoChatRoom *>(r)) {
// if (!room->isDirectChat() && !spaceHierarchyCache.isChild(room->id()) && room->highlightCount() > 0) {
// return true;
// }
// }
// }
return false;
}
bool NeoChatConnection::directChatInvites() const
{
auto inviteRooms = rooms(JoinState::Invite);
for (const auto inviteRoom : inviteRooms) {
if (inviteRoom->isDirectChat()) {
return true;
}
}
// auto inviteRooms = rooms(JoinState::Invite);
// for (const auto inviteRoom : inviteRooms) {
// if (inviteRoom->isDirectChat()) {
// return true;
// }
// }
return false;
}
QCoro::Task<void> NeoChatConnection::setupPushNotifications(QString endpoint)
{
#ifdef HAVE_KUNIFIEDPUSH
QUrl gatewayEndpoint(endpoint);
gatewayEndpoint.setPath(u"/_matrix/push/v1/notify"_s);
QNetworkRequest checkGateway(gatewayEndpoint);
auto reply = co_await NetworkAccessManager::instance()->get(checkGateway);
// We want to check if this UnifiedPush server has a Matrix gateway
// This is because Matrix does not natively support UnifiedPush
const auto &replyJson = QJsonDocument::fromJson(reply->readAll()).object();
if (replyJson["unifiedpush"_L1]["gateway"_L1].toString() == u"matrix"_s) {
callApi<PostPusherJob>(endpoint,
u"http"_s,
u"org.kde.neochat"_s,
u"NeoChat"_s,
deviceId(),
QString(), // profileTag is intentionally left empty for now, it's optional
u"en-US"_s,
PostPusherJob::PusherData{QUrl::fromUserInput(gatewayEndpoint.toString()), u" "_s},
false);
qInfo() << "Registered for push notifications";
m_pushNotificationsEnabled = true;
} else {
qWarning() << "There's no gateway, not setting up push notifications.";
m_pushNotificationsEnabled = false;
}
Q_EMIT enablePushNotificationsChanged();
#else
Q_UNUSED(endpoint)
co_return;
#endif
}
// QCoro::Task<void> NeoChatConnection::setupPushNotifications(QString endpoint)
// {
// #ifdef HAVE_KUNIFIEDPUSH
// QUrl gatewayEndpoint(endpoint);
// gatewayEndpoint.setPath(u"/_matrix/push/v1/notify"_s);
//
// QNetworkRequest checkGateway(gatewayEndpoint);
// auto reply = co_await NetworkAccessManager::instance()->get(checkGateway);
//
// // We want to check if this UnifiedPush server has a Matrix gateway
// // This is because Matrix does not natively support UnifiedPush
// const auto &replyJson = QJsonDocument::fromJson(reply->readAll()).object();
//
// if (replyJson["unifiedpush"_L1]["gateway"_L1].toString() == u"matrix"_s) {
// callApi<PostPusherJob>(endpoint,
// u"http"_s,
// u"org.kde.neochat"_s,
// u"NeoChat"_s,
// deviceId(),
// QString(), // profileTag is intentionally left empty for now, it's optional
// u"en-US"_s,
// PostPusherJob::PusherData{QUrl::fromUserInput(gatewayEndpoint.toString()), u" "_s},
// false);
//
// qInfo() << "Registered for push notifications";
// m_pushNotificationsEnabled = true;
// } else {
// qWarning() << "There's no gateway, not setting up push notifications.";
// m_pushNotificationsEnabled = false;
// }
// Q_EMIT enablePushNotificationsChanged();
// #else
// Q_UNUSED(endpoint)
// co_return;
// #endif
// }
bool NeoChatConnection::isOnline() const
{
@@ -523,39 +515,39 @@ void NeoChatConnection::setIsOnline(bool isOnline)
QString NeoChatConnection::accountDataJsonString(const QString &type) const
{
return QString::fromUtf8(QJsonDocument(accountDataJson(type)).toJson());
return {}; // QString::fromUtf8(QJsonDocument(accountDataJson(type)).toJson());
}
LinkPreviewer *NeoChatConnection::previewerForLink(const QUrl &link)
{
if (!m_globalUrlPreviewEnabled) {
return nullptr;
}
// LinkPreviewer *NeoChatConnection::previewerForLink(const QUrl &link)
// {
// if (!m_globalUrlPreviewEnabled) {
// return nullptr;
// }
//
// auto previewer = m_linkPreviewers.object(link);
// if (previewer != nullptr) {
// return previewer;
// }
//
// previewer = new LinkPreviewer(link, this);
// m_linkPreviewers.insert(link, previewer);
// return previewer;
// }
auto previewer = m_linkPreviewers.object(link);
if (previewer != nullptr) {
return previewer;
}
previewer = new LinkPreviewer(link, this);
m_linkPreviewers.insert(link, previewer);
return previewer;
}
KeyImport::Error NeoChatConnection::exportMegolmSessions(const QString &passphrase, const QString &path)
{
KeyImport keyImport;
auto result = keyImport.exportKeys(passphrase, this);
if (!result.has_value()) {
return result.error();
}
QUrl url(path);
QFile file(url.toLocalFile());
file.open(QFile::WriteOnly);
file.write(result.value());
file.close();
return KeyImport::Success;
}
// KeyImport::Error NeoChatConnection::exportMegolmSessions(const QString &passphrase, const QString &path)
// {
// KeyImport keyImport;
// auto result = keyImport.exportKeys(passphrase, this);
// if (!result.has_value()) {
// return result.error();
// }
// QUrl url(path);
// QFile file(url.toLocalFile());
// file.open(QFile::WriteOnly);
// file.write(result.value());
// file.close();
// return KeyImport::Success;
// }
bool NeoChatConnection::canEraseData() const
{

View File

@@ -7,16 +7,16 @@
#include <QObject>
#include <QQmlEngine>
#include <Integral/Connection>
#include <QCoroTask>
#include <Quotient/connection.h>
#include <Quotient/keyimport.h>
// #include <Quotient/keyimport.h>
#include "enums/messagetype.h"
#include "linkpreviewer.h"
#include "models/threepidmodel.h"
// #include "enums/messagetype.h"
// #include "linkpreviewer.h"
// #include "models/threepidmodel.h"
class NeoChatConnection : public Quotient::Connection
class NeoChatConnection : public Integral::Connection
{
Q_OBJECT
QML_ELEMENT
@@ -37,11 +37,6 @@ class NeoChatConnection : public Quotient::Connection
*/
Q_PROPERTY(bool globalUrlPreviewEnabled READ globalUrlPreviewEnabled WRITE setGlobalUrlPreviewEnabled NOTIFY globalUrlPreviewEnabledChanged)
/**
* @brief The model with the account's 3PIDs.
*/
Q_PROPERTY(ThreePIdModel *threePIdModel READ threePIdModel CONSTANT)
/**
* @brief Whether an identity server is configured.
*/
@@ -116,8 +111,7 @@ public:
};
Q_ENUM(PasswordStatus)
NeoChatConnection(QObject *parent = nullptr);
NeoChatConnection(const QUrl &server, QObject *parent = nullptr);
NeoChatConnection(std::unique_ptr<Integral::Connection::Private> d);
Q_INVOKABLE void logout(bool serverSideLogout);
Q_INVOKABLE QVariantList getSupportedRoomVersions() const;
@@ -144,8 +138,6 @@ public:
Q_INVOKABLE void deactivateAccount(const QString &password, bool erase);
ThreePIdModel *threePIdModel() const;
bool hasIdentityServer() const;
/**
@@ -170,14 +162,14 @@ public:
/**
* @brief Whether a direct chat with the user exists.
*/
Q_INVOKABLE bool directChatExists(Quotient::User *user);
// Q_INVOKABLE bool directChatExists(Quotient::User *user);
/**
* @brief Get the account data with \param type as a formatted JSON string.
*/
Q_INVOKABLE QString accountDataJsonString(const QString &type) const;
Q_INVOKABLE Quotient::KeyImport::Error exportMegolmSessions(const QString &passphrase, const QString &path);
// Q_INVOKABLE Quotient::KeyImport::Error exportMegolmSessions(const QString &passphrase, const QString &path);
qsizetype directChatNotifications() const;
bool directChatsHaveHighlightNotifications() const;
@@ -194,14 +186,14 @@ public:
// note: this is intentionally a copied QString because
// the reference could be destroyed before the task is finished
QCoro::Task<void> setupPushNotifications(QString endpoint);
// QCoro::Task<void> setupPushNotifications(QString endpoint);
bool pushNotificationsAvailable() const;
bool enablePushNotifications() const;
bool isOnline() const;
LinkPreviewer *previewerForLink(const QUrl &link);
// LinkPreviewer *previewerForLink(const QUrl &link);
Q_SIGNALS:
void globalUrlPreviewEnabledChanged();
@@ -223,7 +215,7 @@ Q_SIGNALS:
/**
* @brief Request a message be shown to the user of the given type.
*/
void showMessage(MessageType::Type messageType, const QString &message);
// void showMessage(MessageType::Type messageType, const QString &message);
/**
* @brief Request a error message be shown to the user.
@@ -234,14 +226,12 @@ private:
bool m_isOnline = true;
void setIsOnline(bool isOnline);
ThreePIdModel *m_threePIdModel;
void connectSignals();
int m_badgeNotificationCount = 0;
bool m_globalUrlPreviewEnabled = true;
QCache<QUrl, LinkPreviewer> m_linkPreviewers;
// QCache<QUrl, LinkPreviewer> m_linkPreviewers;
bool m_canCheckMutualRooms = false;
bool m_canEraseData = false;

File diff suppressed because it is too large Load Diff

View File

@@ -3,8 +3,9 @@
#pragma once
#include <Quotient/events/roomevent.h>
#include <Quotient/room.h>
// #include <Quotient/events/roomevent.h>
// #include <Quotient/room.h>
#include <Integral/Room>
#include <QCache>
#include <QObject>
@@ -13,12 +14,12 @@
#include <QCoroTask>
#include <Quotient/roommember.h>
#include "enums/messagetype.h"
#include "enums/pushrule.h"
#include "models/messagecontentmodel.h"
#include "models/threadmodel.h"
#include "neochatroommember.h"
#include "pollhandler.h"
// #include "enums/messagetype.h"
// #include "models/messagecontentmodel.h"
// #include "models/threadmodel.h"
// #include "neochatroommember.h"
// #include "pollhandler.h"
namespace Quotient
{
@@ -39,7 +40,7 @@ class ChatBarCache;
*
* @sa Quotient::Room
*/
class NeoChatRoom : public Quotient::Room
class NeoChatRoom : public Integral::Room
{
Q_OBJECT
QML_ELEMENT
@@ -79,7 +80,7 @@ class NeoChatRoom : public Quotient::Room
/**
* @brief Get a RoomMember object for the other person in a direct chat.
*/
Q_PROPERTY(NeochatRoomMember *directChatRemoteMember READ directChatRemoteMember CONSTANT)
// Q_PROPERTY(NeochatRoomMember *directChatRemoteMember READ directChatRemoteMember CONSTANT)
/**
* @brief The Matrix IDs of this room's parents.
@@ -183,20 +184,20 @@ class NeoChatRoom : public Quotient::Room
/**
* @brief The cache for the main chat bar in the room.
*/
Q_PROPERTY(ChatBarCache *mainCache READ mainCache CONSTANT)
// Q_PROPERTY(ChatBarCache *mainCache READ mainCache CONSTANT)
/**
* @brief The cache for the edit chat bar in the room.
*/
Q_PROPERTY(ChatBarCache *editCache READ editCache CONSTANT)
// Q_PROPERTY(ChatBarCache *editCache READ editCache CONSTANT)
/**
* @brief The cache for the thread chat bar in the room.
*/
Q_PROPERTY(ChatBarCache *threadCache READ threadCache CONSTANT)
// Q_PROPERTY(ChatBarCache *threadCache READ threadCache CONSTANT)
public:
explicit NeoChatRoom(Quotient::Connection *connection, QString roomId, Quotient::JoinState joinState = {});
explicit NeoChatRoom(std::unique_ptr<Private> d, QObject *parent = nullptr);
bool visible() const;
void setVisible(bool visible);
@@ -212,7 +213,7 @@ public:
* @warning This function can return an empty pointer if the room does not have
* any RoomMessageEvents loaded.
*/
[[nodiscard]] const Quotient::RoomEvent *lastEvent() const;
// [[nodiscard]] const Quotient::RoomEvent *lastEvent() const;
/**
* @brief Convenient way to check if the last event looks like it has spoilers.
@@ -259,7 +260,7 @@ public:
* An event is highlighted if it contains the local user's id but was not sent by the
* local user.
*/
bool isEventHighlighted(const Quotient::RoomEvent *e) const;
// bool isEventHighlighted(const Quotient::RoomEvent *e) const;
/**
* @brief Convenience function to find out if the room contains the given user.
@@ -312,7 +313,7 @@ public:
[[nodiscard]] QUrl avatarMediaUrl() const;
NeochatRoomMember *directChatRemoteMember();
// NeochatRoomMember *directChatRemoteMember();
/**
* @brief Whether this room has one or more parent spaces set.
@@ -501,14 +502,14 @@ public:
*
* @sa PollHandler
*/
PollHandler *poll(const QString &eventId) const;
// PollHandler *poll(const QString &eventId) const;
/**
* @brief Create a PollHandler object for the given event.
*
* @sa PollHandler
*/
void createPollHandler(const Quotient::PollStartEvent *event);
// void createPollHandler(const Quotient::PollStartEvent *event);
/**
* @brief Get the full Json data for a given room account data event.
@@ -533,12 +534,12 @@ public:
*
* The result will be nullptr if not found so needs to be managed.
*/
std::pair<const Quotient::RoomEvent *, bool> getEvent(const QString &eventId) const;
// std::pair<const Quotient::RoomEvent *, bool> getEvent(const QString &eventId) const;
/**
* @brief Returns the event that is being replied to. This includes events that were manually loaded using NeoChatRoom::loadReply.
*/
const Quotient::RoomEvent *getReplyForEvent(const Quotient::RoomEvent &event) const;
// const Quotient::RoomEvent *getReplyForEvent(const Quotient::RoomEvent &event) const;
/**
* If we're invited to this room, the user that invited us. Undefined in other cases.
@@ -551,7 +552,7 @@ public:
* If we downloaded the file previously, return a struct with Completed status
* and the local file path stored in KSharedCOnfig
*/
Quotient::FileTransferInfo cachedFileTransferInfo(const Quotient::RoomEvent *event) const;
// Quotient::FileTransferInfo cachedFileTransferInfo(const Quotient::RoomEvent *event) const;
/**
* @brief Return a NeochatRoomMember object for the given user ID.
@@ -562,7 +563,7 @@ public:
* responsibility of the caller to ensure that they only ask for objects
* for real senders.
*/
NeochatRoomMember *qmlSafeMember(const QString &memberId);
// NeochatRoomMember *qmlSafeMember(const QString &memberId);
/**
* @brief Returns the content model for the given event ID.
@@ -576,7 +577,7 @@ public:
*
* @warning Do NOT use for pending events as this function has no way to differentiate.
*/
MessageContentModel *contentModelForEvent(const QString &evtOrTxnId);
// MessageContentModel *contentModelForEvent(const QString &evtOrTxnId);
/**
* @brief Returns the content model for the given event.
@@ -591,7 +592,7 @@ public:
*
* @note This version must be used for pending events as it can differentiate.
*/
MessageContentModel *contentModelForEvent(const Quotient::RoomEvent *event);
// MessageContentModel *contentModelForEvent(const Quotient::RoomEvent *event);
/**
* @brief Returns the thread model for the given thread root event ID.
@@ -599,7 +600,7 @@ public:
* A model is created is one doesn't exist. Will return nullptr if threadRootId
* is empty.
*/
Q_INVOKABLE ThreadModel *modelForThread(const QString &threadRootId);
// Q_INVOKABLE ThreadModel *modelForThread(const QString &threadRootId);
/**
* @brief Pin a message in the room.
@@ -621,7 +622,7 @@ public:
private:
bool m_visible = false;
QSet<const Quotient::RoomEvent *> highlights;
// QSet<const Quotient::RoomEvent *> highlights;
bool m_hasFileUploading = false;
int m_fileUploadingProgress = 0;
@@ -629,29 +630,29 @@ private:
PushNotificationState::State m_currentPushNotificationState = PushNotificationState::Unknown;
bool m_pushNotificationStateUpdating = false;
void checkForHighlights(const Quotient::TimelineItem &ti);
// void checkForHighlights(const Quotient::TimelineItem &ti);
void onAddNewTimelineEvents(timeline_iter_t from) override;
void onAddHistoricalTimelineEvents(rev_iter_t from) override;
void onRedaction(const Quotient::RoomEvent &prevEvent, const Quotient::RoomEvent &after) override;
// void onAddNewTimelineEvents(timeline_iter_t from) override;
// void onAddHistoricalTimelineEvents(rev_iter_t from) override;
// void onRedaction(const Quotient::RoomEvent &prevEvent, const Quotient::RoomEvent &after) override;
QCoro::Task<void> doDeleteMessagesByUser(const QString &user, QString reason);
// QCoro::Task<void> doDeleteMessagesByUser(const QString &user, QString reason);
QCoro::Task<void> doUploadFile(QUrl url, QString body = QString());
std::unique_ptr<Quotient::RoomEvent> m_cachedEvent;
// std::unique_ptr<Quotient::RoomEvent> m_cachedEvent;
ChatBarCache *m_mainCache;
ChatBarCache *m_editCache;
ChatBarCache *m_threadCache;
QCache<QString, PollHandler> m_polls;
std::vector<Quotient::event_ptr_tt<Quotient::RoomEvent>> m_extraEvents;
void cleanupExtraEventRange(Quotient::RoomEventsRange events);
// QCache<QString, PollHandler> m_polls;
// std::vector<Quotient::event_ptr_tt<Quotient::RoomEvent>> m_extraEvents;
// void cleanupExtraEventRange(Quotient::RoomEventsRange events);
void cleanupExtraEvent(const QString &eventId);
std::unordered_map<QString, std::unique_ptr<NeochatRoomMember>> m_memberObjects;
std::unordered_map<QString, std::unique_ptr<MessageContentModel>> m_eventContentModels;
std::unordered_map<QString, std::unique_ptr<ThreadModel>> m_threadModels;
// std::unordered_map<QString, std::unique_ptr<NeochatRoomMember>> m_memberObjects;
// std::unordered_map<QString, std::unique_ptr<MessageContentModel>> m_eventContentModels;
// std::unordered_map<QString, std::unique_ptr<ThreadModel>> m_threadModels;
private Q_SLOTS:
void updatePushNotificationState(QString type);
@@ -681,11 +682,12 @@ Q_SIGNALS:
void maxRoomVersionChanged();
void extraEventLoaded(const QString &eventId);
void extraEventNotFound(const QString &eventId);
void avatarChanged();
/**
* @brief Request a message be shown to the user of the given type.
*/
void showMessage(MessageType::Type messageType, const QString &message);
// void showMessage(MessageType::Type messageType, const QString &message);
public Q_SLOTS:
/**

View File

@@ -75,7 +75,7 @@ Kirigami.Dialog {
}
}
clip: true
model: AccountRegistry
model: Accounts
keyNavigationEnabled: false
Keys.onDownPressed: {

View File

@@ -23,8 +23,8 @@ Kirigami.ApplicationWindow {
title: {
if (NeoChatConfig.windowTitleFocus) {
return activeFocusItem + " " + (activeFocusItem ? activeFocusItem.Accessible.name : "");
} else if (RoomManager.currentRoom) {
return RoomManager.currentRoom.displayName;
// } else if (RoomManager.currentRoom) {
// return RoomManager.currentRoom.displayName;
} else {
return Application.displayName;
}
@@ -49,20 +49,20 @@ Kirigami.ApplicationWindow {
}
onConnectionChanged: {
CustomEmojiModel.connection = root.connection;
SpaceHierarchyCache.connection = root.connection;
// CustomEmojiModel.connection = root.connection;
// SpaceHierarchyCache.connection = root.connection;
NeoChatSettingsView.connection = root.connection;
if (ShareHandler.text && root.connection) {
root.handleShare();
}
// if (ShareHandler.text && root.connection) {
// root.handleShare();
// }
}
Connections {
target: LoginHelper
function onLoaded() {
root.load();
}
}
// Connections {
// target: LoginHelper
// function onLoaded() {
// root.load();
// }
// }
Connections {
target: root.quitAction
@@ -83,64 +83,64 @@ Kirigami.ApplicationWindow {
configGroupName: "MainWindow"
}
QuickSwitcher {
id: quickSwitcher
connection: root.connection
}
Connections {
target: RoomManager
function onCurrentRoomChanged() {
if (RoomManager.currentRoom && pageStack.depth <= 1 && root.initialized && Kirigami.Settings.isMobile) {
let roomPage = pageStack.layers.push(Qt.createComponent('org.kde.neochat', 'RoomPage'), {
connection: root.connection
});
roomPage.backRequested.connect(event => {
RoomManager.clearCurrentRoom();
});
}
}
function onAskJoinRoom(room) {
Qt.createComponent("org.kde.neochat", "JoinRoomDialog").createObject(root, {
room: room,
connection: root.connection
}).open();
}
function onShowUserDetail(user, room) {
root.showUserDetail(user, room);
}
function goToEvent(event) {
if (event.length > 0) {
roomItem.goToEvent(event);
}
roomItem.forceActiveFocus();
}
function onAskDirectChatConfirmation(user) {
Qt.createComponent("org.kde.neochat", "AskDirectChatConfirmation").createObject(this, {
user: user
}).open();
}
function onExternalUrl(url) {
let dialog = Qt.createComponent("org.kde.neochat", "ConfirmUrlDialog").createObject(this);
dialog.link = url;
dialog.open();
}
}
function pushReplaceLayer(page, args) {
if (pageStack.layers.depth === 2) {
pageStack.layers.replace(page, args);
} else {
pageStack.layers.push(page, args);
}
}
// QuickSwitcher {
// id: quickSwitcher
// connection: root.connection
// }
// Connections {
// target: RoomManager
//
// function onCurrentRoomChanged() {
// if (RoomManager.currentRoom && pageStack.depth <= 1 && root.initialized && Kirigami.Settings.isMobile) {
// let roomPage = pageStack.layers.push(Qt.createComponent('org.kde.neochat', 'RoomPage'), {
// connection: root.connection
// });
// roomPage.backRequested.connect(event => {
// RoomManager.clearCurrentRoom();
// });
// }
// }
//
// function onAskJoinRoom(room) {
// Qt.createComponent("org.kde.neochat", "JoinRoomDialog").createObject(root, {
// room: room,
// connection: root.connection
// }).open();
// }
//
// function onShowUserDetail(user, room) {
// root.showUserDetail(user, room);
// }
//
// function goToEvent(event) {
// if (event.length > 0) {
// roomItem.goToEvent(event);
// }
// roomItem.forceActiveFocus();
// }
//
// function onAskDirectChatConfirmation(user) {
// Qt.createComponent("org.kde.neochat", "AskDirectChatConfirmation").createObject(this, {
// user: user
// }).open();
// }
//
// function onExternalUrl(url) {
// let dialog = Qt.createComponent("org.kde.neochat", "ConfirmUrlDialog").createObject(this);
// dialog.link = url;
// dialog.open();
// }
// }
//
// function pushReplaceLayer(page, args) {
// if (pageStack.layers.depth === 2) {
// pageStack.layers.replace(page, args);
// } else {
// pageStack.layers.push(page, args);
// }
// }
//
function openRoomDrawer() {
pageStack.push(Qt.createComponent('org.kde.neochat', 'RoomDrawerPage'), {
connection: root.connection
@@ -183,15 +183,15 @@ Kirigami.ApplicationWindow {
}
Component.onCompleted: {
CustomEmojiModel.connection = root.connection;
SpaceHierarchyCache.connection = root.connection;
RoomSettingsView.window = root;
// CustomEmojiModel.connection = root.connection;
// SpaceHierarchyCache.connection = root.connection;
// RoomSettingsView.window = root;
NeoChatSettingsView.window = root;
NeoChatSettingsView.connection = root.connection;
WindowController.setBlur(pageStack, NeoChatConfig.blur && !NeoChatConfig.compactLayout);
if (ShareHandler.text && root.connection) {
root.handleShare()
}
// if (ShareHandler.text && root.connection) {
// root.handleShare()
// }
const hasSystemTray = Controller.supportSystemTray && NeoChatConfig.systemTray;
if (Kirigami.Settings.isMobile || !(hasSystemTray && NeoChatConfig.minimizeToSystemTrayOnStartup)) {
visible = true;
@@ -210,7 +210,7 @@ Kirigami.ApplicationWindow {
// blur effect
color: NeoChatConfig.blur && !NeoChatConfig.compactLayout ? "transparent" : Kirigami.Theme.backgroundColor
// we need to apply the translucency effect separately on top of the color
// // we need to apply the translucency effect separately on top of the color
background: Rectangle {
color: NeoChatConfig.blur && !NeoChatConfig.compactLayout ? Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 1 - NeoChatConfig.transparency) : "transparent"
}
@@ -220,7 +220,7 @@ Kirigami.ApplicationWindow {
RoomListPage {
id: roomList
onSearch: quickSwitcher.open()
// onSearch: quickSwitcher.open()
connection: root.connection
@@ -255,9 +255,9 @@ Kirigami.ApplicationWindow {
}
Connections {
target: AccountRegistry
target: Accounts
function onRowsRemoved() {
if (AccountRegistry.rowCount() === 0) {
if (Accounts.rowCount() === 0) {
pageStack.clear();
pageStack.push(Qt.createComponent('org.kde.neochat.login', 'WelcomePage'));
}
@@ -272,22 +272,22 @@ Kirigami.ApplicationWindow {
}
}
Connections {
target: root.connection
function onNewKeyVerificationSession(session) {
root.pageStack.pushDialogLayer(Qt.createComponent("org.kde.neochat", "KeyVerificationDialog"), {
session: session
}, {
title: i18nc("@title:window", "Session Verification")
});
}
function onUserConsentRequired(url) {
Qt.createComponent("org.kde.neochat", "ConsentDialog").createObject(this, {
url: url
}).open();
}
}
// Connections {
// target: root.connection
//
// function onNewKeyVerificationSession(session) {
// root.pageStack.pushDialogLayer(Qt.createComponent("org.kde.neochat", "KeyVerificationDialog"), {
// session: session
// }, {
// title: i18nc("@title:window", "Session Verification")
// });
// }
// function onUserConsentRequired(url) {
// Qt.createComponent("org.kde.neochat", "ConsentDialog").createObject(this, {
// url: url
// }).open();
// }
// }
HoverLinkIndicator {
id: linkIndicator
@@ -303,36 +303,36 @@ Kirigami.ApplicationWindow {
}
}
Connections {
target: ShareHandler
function onTextChanged(): void {
if (root.connection && ShareHandler.text.length > 0) {
root.handleShare();
}
}
}
function handleShare(): void {
const dialog = applicationWindow().pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'ChooseRoomDialog'), {
connection: root.connection
}, {
title: i18nc("@title", "Share"),
width: Kirigami.Units.gridUnit * 25
})
dialog.chosen.connect(function(targetRoomId) {
RoomManager.resolveResource(targetRoomId)
ShareHandler.room = targetRoomId
dialog.closeDialog()
})
}
function showUserDetail(user, room) {
const dialog = Qt.createComponent("org.kde.neochat", "UserDetailDialog").createObject(root, {
room: room,
user: user,
connection: root.connection,
});
dialog.parent = QmlUtils.focusedWindowItem(); // Kirigami Dialogs overwrite the parent, so we need to set it again
dialog.open();
}
// Connections {
// target: ShareHandler
// function onTextChanged(): void {
// if (root.connection && ShareHandler.text.length > 0) {
// root.handleShare();
// }
// }
// }
// function handleShare(): void {
// const dialog = applicationWindow().pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'ChooseRoomDialog'), {
// connection: root.connection
// }, {
// title: i18nc("@title", "Share"),
// width: Kirigami.Units.gridUnit * 25
// })
// dialog.chosen.connect(function(targetRoomId) {
// RoomManager.resolveResource(targetRoomId)
// ShareHandler.room = targetRoomId
// dialog.closeDialog()
// })
// }
// function showUserDetail(user, room) {
// const dialog = Qt.createComponent("org.kde.neochat", "UserDetailDialog").createObject(root, {
// room: room,
// user: user,
// connection: root.connection,
// });
// dialog.parent = QmlUtils.focusedWindowItem(); // Kirigami Dialogs overwrite the parent, so we need to set it again
// dialog.open();
// }
function load() {
pageStack.replace(roomListComponent);

View File

@@ -19,7 +19,7 @@ Delegates.RoundedItemDelegate {
required property int index
required property int contextNotificationCount
required property bool hasHighlightNotifications
required property NeoChatRoom currentRoom
required property string roomId
required property NeoChatConnection connection
required property url avatar
required property string subtitleText
@@ -37,11 +37,13 @@ Delegates.RoundedItemDelegate {
onClicked: {
if (root.openOnClick) {
RoomManager.resolveResource(currentRoom.id);
root.connection.open(root.roomId)
pageStack.currentIndex = 1;
}
}
onPressAndHold: createRoomListContextMenu()
Keys.onSpacePressed: clicked()
Keys.onEnterPressed: clicked()
Keys.onReturnPressed: clicked()
@@ -52,19 +54,14 @@ Delegates.RoundedItemDelegate {
onTapped: (eventPoint, button) => root.createRoomListContextMenu()
}
TapHandler {
acceptedDevices: PointerDevice.TouchScreen
onLongPressed: root.createRoomListContextMenu()
}
contentItem: RowLayout {
spacing: Kirigami.Units.largeSpacing
AvatarNotification {
source: root.avatar
name: root.displayName
visible: NeoChatConfig.showAvatarInRoomDrawer
implicitHeight: Kirigami.Units.gridUnit + (NeoChatConfig.compactRoomList ? 0 : Kirigami.Units.largeSpacing * 2)
// visible: NeoChatConfig.showAvatarInRoomDrawer
implicitHeight: Kirigami.Units.gridUnit + Kirigami.Units.largeSpacing * 2 // (NeoChatConfig.compactRoomList ? 0 : Kirigami.Units.largeSpacing * 2)
implicitWidth: visible ? implicitHeight : 0
notificationCount: root.contextNotificationCount
@@ -101,7 +98,7 @@ Delegates.RoundedItemDelegate {
elide: Text.ElideRight
font: Kirigami.Theme.smallFont
opacity: root.hasNotifications ? 0.9 : 0.7
visible: !NeoChatConfig.compactRoomList && text.length > 0
// visible: !NeoChatConfig.compactRoomList && text.length > 0
textFormat: Text.PlainText
Layout.fillWidth: true
@@ -147,7 +144,7 @@ Delegates.RoundedItemDelegate {
QQC2.Button {
id: configButton
visible: root.hovered && !Kirigami.Settings.isMobile && !NeoChatConfig.compactRoomList && !root.collapsed && root.showConfigure
visible: root.hovered && !Kirigami.Settings.isMobile /*&& !NeoChatConfig.compactRoomList*/ && !root.collapsed && root.showConfigure
text: i18n("Configure room")
display: QQC2.Button.IconOnly

View File

@@ -1,295 +1,117 @@
// SPDX-FileCopyrightText: 2019 Black Hat <bhat@encom.eu.org>
// SPDX-FileCopyrightText: 2020 Carl Schwan <carl@carlschwan.eu>
// SPDX-License-Identifier: GPL-3.0-only
// SPDX-FileCopyrightText: 2025 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Controls as QQC2
import QtQuick.Layouts
import QtQml.Models
import Qt.labs.qmlmodels
import org.kde.kirigami as Kirigami
import org.kde.kirigamiaddons.components as KirigamiComponents
import org.kde.kirigamiaddons.formcard as FormCard
import org.kde.kirigamiaddons.delegates as Delegates
import org.kde.neochat
Kirigami.Page {
Kirigami.ScrollablePage {
id: root
/**
* @brief The current width of the room list.
*
* @note Other objects can access the value but the private function makes sure
* that only the internal members can modify it.
*/
readonly property int currentWidth: _private.currentWidth + spaceDrawer.width + 1
title: i18nc("@title", "Rooms")
required property NeoChatConnection connection
readonly property bool collapsed: NeoChatConfig.collapsed
signal search
onCurrentWidthChanged: pageStack.defaultColumnWidth = root.currentWidth
Component.onCompleted: pageStack.defaultColumnWidth = root.currentWidth
onCollapsedChanged: {
if (collapsed) {
RoomManager.sortFilterRoomTreeModel.filterText = "";
actions: [
Kirigami.Action {
text: i18nc("@action:button", "Log out")
onTriggered: root.connection.logout()
},
Kirigami.Action {
text: i18nc("@action:button", "Create Room")
onTriggered: root.connection.createRoom("Hello", "World", "")
}
}
]
function goToNextRoomFiltered(condition) {
let index = treeView.rowAtIndex(RoomManager.sortFilterRoomTreeModel.currentRoomIndex());
while (index++ < treeView.rows) {
let item = treeView.itemAtIndex(treeView.index(index, 0))
if (condition(item)) {
RoomManager.resolveResource(item.currentRoom.id)
return;
}
Connections {
target: root.connection
function onOpenRoom(): void {
room => pageStack.push(Qt.createComponent("org.kde.neochat", "RoomPage"), {
room: room,
connection: connection,
});
}
}
function goToPreviousRoomFiltered(condition) {
let index = treeView.rowAtIndex(RoomManager.sortFilterRoomTreeModel.currentRoomIndex());
while (index-- > 0) {
let item = treeView.itemAtIndex(treeView.index(index, 0))
if (condition(item)) {
RoomManager.resolveResource(item.currentRoom.id)
return;
}
}
}
function goToNextRoom() {
goToNextRoomFiltered(item => (item && item instanceof RoomDelegate));
}
function goToPreviousRoom() {
goToPreviousRoomFiltered(item => (item && item instanceof RoomDelegate));
}
function goToNextUnreadRoom() {
goToNextRoomFiltered(item => (item && item instanceof RoomDelegate && item.hasUnread));
}
function goToPreviousUnreadRoom() {
goToPreviousRoomFiltered(item => (item && item instanceof RoomDelegate && item.hasUnread));
}
titleDelegate: Loader {
Layout.fillWidth: true
sourceComponent: Kirigami.Settings.isMobile ? userInfo : exploreComponent
}
padding: 0
Connections {
target: RoomManager
function onCurrentSpaceChanged() {
treeView.expandRecursively();
}
function onCurrentRoomChanged() {
treeView.positionViewAtIndex(RoomManager.sortFilterRoomTreeModel.currentRoomIndex(), TableView.AlignVCenter)
}
}
RowLayout {
anchors.fill: parent
spacing: 0
SpaceDrawer {
id: spaceDrawer
Layout.preferredWidth: Kirigami.Units.gridUnit * 3
Layout.fillHeight: true
connection: root.connection
}
Kirigami.Separator {
Layout.fillHeight: true
Layout.preferredWidth: 1
}
QQC2.ScrollView {
id: scrollView
Layout.fillWidth: true
Layout.fillHeight: true
background: Rectangle {
color: Kirigami.Theme.backgroundColor
Kirigami.Theme.colorSet: Kirigami.Theme.View
}
Keys.onDownPressed: ; // Do not delete 🫠
Keys.onUpPressed: ; // These make sure the scrollview doesn't also scroll while going through the roomlist using the arrow keys
contentItem: TreeView {
id: treeView
topMargin: Math.round(Kirigami.Units.smallSpacing / 2)
clip: true
reuseItems: false
model: RoomManager.sortFilterRoomTreeModel
selectionModel: ItemSelectionModel {}
delegate: DelegateChooser {
role: "delegateType"
DelegateChoice {
roleValue: "section"
delegate: RoomTreeSection {
collapsed: root.collapsed
}
}
DelegateChoice {
roleValue: "normal"
delegate: RoomDelegate {
id: roomDelegate
required property int row
required property TreeView treeView
required property bool current
onCurrentChanged: if (current) {
forceActiveFocus(Qt.TabFocusReason);
}
implicitWidth: treeView.width
connection: root.connection
collapsed: root.collapsed
highlighted: RoomManager.currentRoom === currentRoom
}
}
DelegateChoice {
roleValue: "addDirect"
delegate: Delegates.RoundedItemDelegate {
text: i18n("Find your friends")
icon.name: "list-add-user"
icon.width: Kirigami.Units.gridUnit * 2
icon.height: Kirigami.Units.gridUnit * 2
onClicked: pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'UserSearchPage'), {
connection: root.connection
}, {
title: i18nc("@title", "Find your friends")
})
}
}
}
}
}
}
Kirigami.PlaceholderMessage {
anchors.centerIn: parent
anchors.horizontalCenterOffset: (spaceDrawer.width + 1) / 2
width: scrollView.width - Kirigami.Units.largeSpacing * 4
visible: treeView.rows == 0
text: if (RoomManager.sortFilterRoomTreeModel.filterText.length > 0) {
return spaceDrawer.showDirectChats ? i18n("No friends found") : i18n("No rooms found");
} else {
return spaceDrawer.showDirectChats ? i18n("You haven't added any of your friends yet, click below to search for them.") : i18n("Join some rooms to get started");
}
helpfulAction: spaceDrawer.showDirectChats ? userSearchAction : exploreRoomAction
Kirigami.Action {
id: exploreRoomAction
icon.name: RoomManager.sortFilterRoomTreeModel.filterText.length > 0 ? "search" : "list-add"
text: RoomManager.sortFilterRoomTreeModel.filterText.length > 0 ? i18n("Search in room directory") : i18n("Explore rooms")
onTriggered: {
let dialog = pageStack.layers.push(Qt.createComponent('org.kde.neochat', 'ExploreRoomsPage'), {
connection: root.connection,
keyword: RoomManager.sortFilterRoomTreeModel.filterText
}, {
title: i18nc("@title", "Explore Rooms")
});
dialog.roomSelected.connect((roomId, displayName, avatarUrl, alias, topic, memberCount, isJoined) => {
RoomManager.resolveResource(roomId.length > 0 ? roomId : alias, isJoined ? "" : "join");
});
}
}
Kirigami.Action {
id: userSearchAction
icon.name: RoomManager.sortFilterRoomTreeModel.filterText.length > 0 ? "search" : "list-add"
text: RoomManager.sortFilterRoomTreeModel.filterText.length > 0 ? i18n("Search in friend directory") : i18n("Find your friends")
onTriggered: pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'UserSearchPage'), {
connection: root.connection
}, {
title: i18nc("@title", "Find your friends")
})
}
}
footer: Loader {
width: parent.width
sourceComponent: Kirigami.Settings.isMobile ? exploreComponentMobile : userInfoDesktop
}
MouseArea {
anchors.top: parent.top
anchors.bottom: parent.bottom
parent: applicationWindow().overlay.parent
TreeView {
id: treeView
topMargin: Math.round(Kirigami.Units.smallSpacing / 2)
x: root.currentWidth - width / 2
width: Kirigami.Units.smallSpacing * 2
z: root.z + 1
enabled: RoomManager.hasOpenRoom && applicationWindow().width >= Kirigami.Units.gridUnit * 35
visible: enabled
cursorShape: Qt.SplitHCursor
clip: true
reuseItems: false
property int _lastX
onPressed: mouse => {
_lastX = mouse.x;
}
onPositionChanged: mouse => {
if (_lastX == -1) {
return;
model: SortFilterRoomTreeModel {
sourceModel: RoomTreeModel {
connection: root.connection
}
if (mouse.x > _lastX) {
// we moved to the right
if (_private.currentWidth < _private.collapseWidth && _private.currentWidth + (mouse.x - _lastX) >= _private.collapseWidth) {
// Here we get back directly to a more wide mode.
_private.currentWidth = _private.defaultWidth;
NeoChatConfig.collapsed = false;
} else if (_private.currentWidth >= _private.collapseWidth) {
// Increase page width
_private.currentWidth = Math.min(_private.defaultWidth, _private.currentWidth + (mouse.x - _lastX));
}
selectionModel: ItemSelectionModel {}
delegate: DelegateChooser {
role: "delegateType"
DelegateChoice {
roleValue: "section"
delegate: RoomTreeSection {
collapsed: root.collapsed
}
} else if (mouse.x < _lastX) {
const tmpWidth = _private.currentWidth - (_lastX - mouse.x);
if (tmpWidth < _private.collapseWidth) {
_private.currentWidth = Qt.binding(() => _private.collapsedSize);
NeoChatConfig.collapsed = true;
} else {
_private.currentWidth = tmpWidth;
}
DelegateChoice {
roleValue: "normal"
delegate: RoomDelegate {
id: roomDelegate
required property int row
required property TreeView treeView
required property bool current
onCurrentChanged: if (current) {
forceActiveFocus(Qt.TabFocusReason);
}
implicitWidth: treeView.width
connection: root.connection
collapsed: root.collapsed
highlighted: RoomManager.currentRoom === currentRoom
}
}
DelegateChoice {
roleValue: "addDirect"
delegate: Delegates.RoundedItemDelegate {
text: i18n("Find your friends")
icon.name: "list-add-user"
icon.width: Kirigami.Units.gridUnit * 2
icon.height: Kirigami.Units.gridUnit * 2
onClicked: pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'UserSearchPage'), {
connection: root.connection
}, {
title: i18nc("@title", "Find your friends")
})
}
}
}
}
Component {
id: userInfo
UserInfo {
bottomEdge: false
connection: root.connection
}
}
Component {
id: userInfoDesktop
UserInfoDesktop {
connection: root.connection
collapsed: root.collapsed
}
}
Component {
id: exploreComponent
@@ -308,25 +130,10 @@ Kirigami.Page {
}
Component {
id: exploreComponentMobile
ExploreComponentMobile {
id: userInfoDesktop
UserInfoDesktop {
connection: root.connection
onTextChanged: newText => {
RoomManager.sortFilterRoomTreeModel.filterText = newText;
}
collapsed: root.collapsed
}
}
/*
* Hold the modifiable currentWidth in a private object so that only internal
* members can modify it.
*/
QtObject {
id: _private
property int currentWidth: NeoChatConfig.collapsed ? collapsedSize : defaultWidth
readonly property int defaultWidth: Kirigami.Units.gridUnit * 15
readonly property int collapseWidth: Kirigami.Units.gridUnit * 10
readonly property int collapsedSize: Kirigami.Units.gridUnit + (NeoChatConfig.compactRoomList ? 0 : Kirigami.Units.largeSpacing * 2) + Kirigami.Units.largeSpacing * 2 + (scrollView.QQC2.ScrollBar.vertical.visible ? scrollView.QQC2.ScrollBar.vertical.width : 0)
}
}

View File

@@ -38,32 +38,32 @@ QQC2.ScrollView {
// HACK: Hide unnecessary horizontal scrollbar (https://bugreports.qt.io/browse/QTBUG-83890)
QQC2.ScrollBar.horizontal.policy: QQC2.ScrollBar.AlwaysOff
ListView {
clip: true
verticalLayoutDirection: ListView.BottomToTop
model: RoomManager.mediaMessageFilterModel
delegate: DelegateChooser {
role: "type"
DelegateChoice {
roleValue: MediaMessageFilterModel.Image
delegate: MessageDelegate {
alwaysFillWidth: true
cardBackground: false
room: root.currentRoom
}
}
DelegateChoice {
roleValue: MediaMessageFilterModel.Video
delegate: MessageDelegate {
alwaysFillWidth: true
cardBackground: false
room: root.currentRoom
}
}
}
}
// ListView {
// clip: true
// verticalLayoutDirection: ListView.BottomToTop
//
// model: RoomManager.mediaMessageFilterModel
//
// delegate: DelegateChooser {
// role: "type"
//
// DelegateChoice {
// roleValue: MediaMessageFilterModel.Image
// delegate: MessageDelegate {
// alwaysFillWidth: true
// cardBackground: false
// room: root.currentRoom
// }
// }
//
// DelegateChoice {
// roleValue: MediaMessageFilterModel.Video
// delegate: MessageDelegate {
// alwaysFillWidth: true
// cardBackground: false
// room: root.currentRoom
// }
// }
// }
// }
}

View File

@@ -32,7 +32,7 @@ Kirigami.Page {
*
* @sa TimelineModel
*/
property TimelineModel timelineModel: RoomManager.timelineModel
// property TimelineModel timelineModel: RoomManager.timelineModel
/**
* @brief The MessageFilterModel to use.
@@ -44,7 +44,7 @@ Kirigami.Page {
*
* @sa TimelineModel, MessageFilterModel
*/
property MessageFilterModel messageFilterModel: RoomManager.messageFilterModel
// property MessageFilterModel messageFilterModel: RoomManager.messageFilterModel
/**
* @brief The MediaMessageFilterModel to use.
@@ -57,7 +57,7 @@ Kirigami.Page {
*
* @sa TimelineModel, MessageFilterModel
*/
property MediaMessageFilterModel mediaMessageFilterModel: RoomManager.mediaMessageFilterModel
// property MediaMessageFilterModel mediaMessageFilterModel: RoomManager.mediaMessageFilterModel
property bool loading: !root.currentRoom || (root.currentRoom.timelineSize === 0 && !root.currentRoom.allHistoryLoaded)
@@ -106,58 +106,58 @@ Kirigami.Page {
position: Kirigami.InlineMessage.Position.Header
}
Loader {
id: timelineViewLoader
anchors.fill: parent
active: root.currentRoom && !root.currentRoom.isInvite && !root.loading && !root.currentRoom.isSpace
sourceComponent: TimelineView {
id: timelineView
currentRoom: root.currentRoom
page: root
timelineModel: root.timelineModel
messageFilterModel: root.messageFilterModel
onFocusChatBar: {
if (chatBarLoader.item) {
chatBarLoader.item.forceActiveFocus();
}
}
}
}
// Loader {
// id: timelineViewLoader
// anchors.fill: parent
// active: root.currentRoom && !root.currentRoom.isInvite && !root.loading && !root.currentRoom.isSpace
// sourceComponent: TimelineView {
// id: timelineView
// currentRoom: root.currentRoom
// page: root
// timelineModel: root.timelineModel
// messageFilterModel: root.messageFilterModel
// onFocusChatBar: {
// if (chatBarLoader.item) {
// chatBarLoader.item.forceActiveFocus();
// }
// }
// }
// }
Loader {
id: invitationLoader
active: root.currentRoom && root.currentRoom.isInvite
anchors.centerIn: parent
sourceComponent: InvitationView {
currentRoom: root.currentRoom
anchors.centerIn: parent
}
}
// Loader {
// id: invitationLoader
// active: root.currentRoom && root.currentRoom.isInvite
// anchors.centerIn: parent
// sourceComponent: InvitationView {
// currentRoom: root.currentRoom
// anchors.centerIn: parent
// }
// }
Loader {
id: spaceLoader
active: root.currentRoom && root.currentRoom.isSpace
anchors.fill: parent
sourceComponent: SpaceHomePage {}
}
// Loader {
// id: spaceLoader
// active: root.currentRoom && root.currentRoom.isSpace
// anchors.fill: parent
// sourceComponent: SpaceHomePage {}
// }
Loader {
active: !RoomManager.currentRoom
anchors.centerIn: parent
sourceComponent: Kirigami.PlaceholderMessage {
icon.name: "org.kde.neochat"
text: i18n("Welcome to NeoChat")
explanation: i18n("Select or join a room to get started")
}
}
// Loader {
// active: !RoomManager.currentRoom
// anchors.centerIn: parent
// sourceComponent: Kirigami.PlaceholderMessage {
// icon.name: "org.kde.neochat"
// text: i18n("Welcome to NeoChat")
// explanation: i18n("Select or join a room to get started")
// }
// }
Loader {
active: root.loading && !invitationLoader.active && RoomManager.currentRoom && !spaceLoader.active
anchors.centerIn: parent
sourceComponent: Kirigami.LoadingPlaceholder {
anchors.centerIn: parent
}
}
// Loader {
// active: root.loading && !invitationLoader.active && RoomManager.currentRoom && !spaceLoader.active
// anchors.centerIn: parent
// sourceComponent: Kirigami.LoadingPlaceholder {
// anchors.centerIn: parent
// }
// }
background: Rectangle {
Kirigami.Theme.colorSet: Kirigami.Theme.View
@@ -290,26 +290,26 @@ Kirigami.Page {
}
}
Component {
id: messageDelegateContextMenu
MessageDelegateContextMenu {
connection: root.connection
}
}
// Component {
// id: messageDelegateContextMenu
// MessageDelegateContextMenu {
// connection: root.connection
// }
// }
Component {
id: fileDelegateContextMenu
FileDelegateContextMenu {
connection: root.connection
}
}
// Component {
// id: fileDelegateContextMenu
// FileDelegateContextMenu {
// connection: root.connection
// }
// }
Component {
id: maximizeComponent
NeochatMaximizeComponent {
currentRoom: root.currentRoom
model: root.mediaMessageFilterModel
parent: root.QQC2.Overlay.overlay
}
}
// Component {
// id: maximizeComponent
// NeochatMaximizeComponent {
// currentRoom: root.currentRoom
// model: root.mediaMessageFilterModel
// parent: root.QQC2.Overlay.overlay
// }
// }
}

View File

@@ -47,7 +47,7 @@ QQC2.ItemDelegate {
opacity: 0.7
level: 5
type: Kirigami.Heading.Primary
text: root.collapsed ? "" : model.displayName
text: root.collapsed ? "" : root.displayName
elide: Text.ElideRight
// we override the Primary type's font weight (DemiBold) for Bold for contrast with small text

View File

@@ -54,7 +54,7 @@ RowLayout {
spacing: Kirigami.Units.largeSpacing
KirigamiComponents.Avatar {
readonly property url avatarUrl: root.connection.localUser.avatarUrl
readonly property url avatarUrl: root.connection.avatarUrl
Layout.preferredWidth: Kirigami.Units.iconSizes.medium
Layout.preferredHeight: Kirigami.Units.iconSizes.medium
@@ -62,7 +62,7 @@ RowLayout {
// Note: User::avatarUrl does not set user_id, and thus cannot be used directly here. Hence the makeMediaUrl.
source: avatarUrl.toString().length > 0 ? root.connection.makeMediaUrl(avatarUrl) : ""
name: root.connection.localUser.displayName
name: root.connection.displayName
}
ColumnLayout {
@@ -73,14 +73,14 @@ RowLayout {
QQC2.Label {
id: displayNameLabel
Layout.fillWidth: true
text: root.connection.localUser.displayName
text: root.connection.displayName
textFormat: Text.PlainText
elide: Text.ElideRight
}
QQC2.Label {
id: idLabel
Layout.fillWidth: true
text: (root.connection.label.length > 0 ? (root.connection.label + " ") : "") + root.connection.localUser.id
text: root.connection.matrixId
font.pointSize: displayNameLabel.font.pointSize * 0.8
opacity: 0.7
textFormat: Text.PlainText

View File

@@ -7,9 +7,9 @@
#include <KSharedConfig>
#include <QObject>
#include <QQmlEngine>
#include <Quotient/room.h>
#include <Quotient/roommember.h>
#include <Quotient/uriresolver.h>
// #include <Quotient/room.h>
// #include <Quotient/roommember.h>
// #include <Quotient/uriresolver.h>
#include "chatdocumenthandler.h"
#include "enums/messagecomponenttype.h"

View File

@@ -4,7 +4,7 @@
qt_add_library(settings STATIC)
set_source_files_properties(
RoomSettingsView.qml
# RoomSettingsView.qml
NeoChatSettingsView.qml
PROPERTIES
QT_QML_SINGLETON_TYPE TRUE
@@ -15,33 +15,33 @@ ecm_add_qml_module(settings GENERATE_PLUGIN_SOURCE
OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/src/org/kde/neochat/settings
QML_FILES
NeoChatSettingsView.qml
RoomSettingsView.qml
AccountsPage.qml
AccountEditorPage.qml
# RoomSettingsView.qml
# AccountsPage.qml
# AccountEditorPage.qml
AppearanceSettingsPage.qml
DevicesPage.qml
EmoticonsPage.qml
EmoticonEditorPage.qml
# DevicesPage.qml
# EmoticonsPage.qml
# EmoticonEditorPage.qml
GlobalNotificationsPage.qml
NeoChatGeneralPage.qml
NeoChatSecurityPage.qml
NetworkProxyPage.qml
Permissions.qml
PushNotification.qml
RoomGeneralPage.qml
RoomSecurityPage.qml
ColorScheme.qml
DevicesCard.qml
DeviceDelegate.qml
EmoticonFormCard.qml
IdentityServerDelegate.qml
IgnoredUsersDialog.qml
# Permissions.qml
# PushNotification.qml
# RoomGeneralPage.qml
# RoomSecurityPage.qml
# ColorScheme.qml
# DevicesCard.qml
# DeviceDelegate.qml
# EmoticonFormCard.qml
# IdentityServerDelegate.qml
# IgnoredUsersDialog.qml
NotificationRuleItem.qml
PasswordSheet.qml
# PasswordSheet.qml
ThemeRadioButton.qml
ThreePIdCard.qml
ImportKeysDialog.qml
ExportKeysDialog.qml
RoomSortParameterDialog.qml
RoomProfile.qml
# ThreePIdCard.qml
# ImportKeysDialog.qml
# ExportKeysDialog.qml
# RoomSortParameterDialog.qml
# RoomProfile.qml
)

View File

@@ -28,7 +28,10 @@ ColumnLayout {
Repeater {
id: deviceRepeater
model: KSortFilterProxyModel {
sourceModel: root.connection.threePIdModel
sourceModel: ThreePIdModel {
id: threePIdModel
connection: root.connection
}
filterRoleName: "medium"
filterString: root.medium
}
@@ -110,6 +113,9 @@ ColumnLayout {
connection: root.connection
newId: threePIdDelegate.address
medium: threePIdDelegate.medium
onThreePIdBound: threePIdModel.refreshModel()
onThreePIdUnbound: threePIdModel.refreshModel()
}
}
@@ -130,7 +136,7 @@ ColumnLayout {
label: i18nc("@label:textbox", "Country Code for new phone number")
Connections {
target: root.connection.threePIdModel
target: threePIdModel
function onModelReset() {
newCountryCode.text = ""
@@ -170,7 +176,7 @@ ColumnLayout {
onAccepted: _private.openPasswordSheet()
Connections {
target: root.connection.threePIdModel
target: threePIdModel
function onModelReset() {
newId.text = ""
@@ -198,6 +204,10 @@ ColumnLayout {
connection: root.connection
medium: root.medium
newId: newId.text
onThreePIdAdded: threePIdModel.refreshModel()
onThreePIdRemoved: threePIdModel.refreshModel()
onThreePIdUnbound: threePIdModel.refreshModel()
}
QtObject {

Some files were not shown because too many files have changed in this diff Show More