Compare commits

..

35 Commits

Author SHA1 Message Date
Ingo Klöcker
238e31fe23 Add "16:9 Super hero art" for Microsoft Store
For details, where this image is used, see
https://learn.microsoft.com/en-us/windows/apps/publish/publish-your-app/screenshots-and-images?pivots=store-installer-msix#windows-10-and-xbox-image-169-super-hero-art
2023-06-26 15:38:12 +02:00
Ingo Klöcker
99aeba2882 Add some logos in different sizes for the Microsoft Store
For details, where those images are used see
https://learn.microsoft.com/en-us/windows/apps/publish/publish-your-app/screenshots-and-images?pivots=store-installer-msix#store-logos
2023-06-26 15:36:35 +02:00
Ingo Klöcker
a65724ebc7 Add features as custom values
Microsoft Store allows adding a list of up-to 20 features to an app
submission. It's not clear whether this adds value over the common
practice for KDE apps to add a list of features to the description.
If the search in Microsoft Store would rank matching features higher
than a full-text match in the description, then it might make sense.

The problem is that this would duplicate the list of features in
Microsoft Store because removing the list of features from the description
would remove the features from the app listing in Linux app stores.
Therefore, we should probably stick to the established practice and leave
the list of features in Microsoft Store empty.

See also https://github.com/ximion/appstream/issues/388
2023-06-26 15:31:06 +02:00
Ingo Klöcker
d5ab724edb Add Windows-specific screenshots as custom values
This is clearly a hack. It would be preferable to add those directly
to the existing list of screenshots with some property marking them as
screenshots of the Windows version for the Microsoft Store
(https://github.com/ximion/appstream/issues/390). The IDs are derived
from the IDs used by the CSV export of an app submission in Microsoft
Partner Center.
2023-06-26 15:19:16 +02:00
Ingo Klöcker
67ff7e0842 Add a few keywords for easier finding in stores
This is supported by AppStream
https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-keywords
and can be used in the Microsoft Store.
2023-06-26 15:12:24 +02:00
l10n daemon script
9be04c1272 GIT_SILENT Sync po/docbooks with svn 2023-06-26 01:59:28 +00:00
l10n daemon script
6f5d88cf63 GIT_SILENT Sync po/docbooks with svn 2023-06-25 02:12:18 +00:00
l10n daemon script
1103e80191 GIT_SILENT made messages (after extraction) 2023-06-25 00:52:33 +00:00
l10n daemon script
a5320397c2 GIT_SILENT Sync po/docbooks with svn 2023-06-24 02:10:00 +00:00
Volker Krause
53719b971d Show a placeholder message if there are no shared locations 2023-06-22 15:17:40 +00:00
Volker Krause
64a1316f9b Zoom/center the page map so that all locations are in view 2023-06-22 15:17:40 +00:00
Volker Krause
a3b8168744 Add bounding box property for LocationsModel as well
Needed to property position the room map.
2023-06-22 15:17:40 +00:00
Volker Krause
c06e69931a Add fullscreen map to live location delegates as well 2023-06-22 15:17:40 +00:00
Volker Krause
30f8573dfc Show live location shares on the room map as well 2023-06-22 15:17:40 +00:00
Volker Krause
7f067b698e Unify map markers on the full screen and room maps as well 2023-06-22 15:17:40 +00:00
Volker Krause
b56ebdf149 Don't assert on invalid/empty geo: URIs 2023-06-22 15:17:40 +00:00
Volker Krause
a02dd4ab87 Extend LocationsModel to include asset and auther roles
Needed for compatibility with the standard map marker.
2023-06-22 15:17:40 +00:00
Volker Krause
898f0c962a Factor out map marker into its own QML element for reuse 2023-06-22 15:17:40 +00:00
Tobias Fella
5b4ae764cf Show a map for location events 2023-06-22 15:17:40 +00:00
l10n daemon script
d14db326bb GIT_SILENT Sync po/docbooks with svn 2023-06-22 01:53:18 +00:00
l10n daemon script
5c51e0d0fc GIT_SILENT Sync po/docbooks with svn 2023-06-21 01:49:24 +00:00
l10n daemon script
f78b4af692 GIT_SILENT Sync po/docbooks with svn 2023-06-19 02:05:24 +00:00
Carl Schwan
bd5ed0f46c Fix toolbar of RoomList when using font size 11px
We don't need to use a ToolBar for the titleDelegate since the
titleDelegate is already included inside a toolbar. This work magically
when using the default font size of 10px Noto Sans but breaks with 11px

BUG: 467242
2023-06-18 07:00:47 +00:00
l10n daemon script
529cfa8f7d GIT_SILENT Sync po/docbooks with svn 2023-06-18 02:44:28 +00:00
Carl Schwan
5552cd60f6 Group pageStack properties of the ApplicationWindow together 2023-06-17 21:29:15 +02:00
Tobias Fella
c51a1f4851 Fix another missing import 2023-06-17 14:32:03 +02:00
James Graham
a27f4765e4 Fix permission model
Make sure `Permissions.qml` uses the right role.
2023-06-17 09:34:42 +00:00
James Graham
402f99923c Fix NeoChatRoom type QML
Make sure import `org.kde.neochat 1.0` is included where `NeoChatRoom` is used as a type
2023-06-17 09:26:22 +00:00
l10n daemon script
2afda78912 GIT_SILENT Sync po/docbooks with svn 2023-06-17 01:53:16 +00:00
Volker Krause
25f9c7e125 Compute live location bounding box and center the map accordingly 2023-06-16 14:12:15 +00:00
Volker Krause
05082cb2bb Consider live location beacon timeouts for their 2023-06-16 14:12:15 +00:00
Volker Krause
59495a1452 Show starting live location beacons as location delegates in the timeline
Also, hide ending live location beacon state changes.
2023-06-16 14:12:15 +00:00
Volker Krause
d10460c45b Add live location tracking model
This can either watch a single live location beacon or all of those in
a given room.
2023-06-16 14:12:15 +00:00
l10n daemon script
b968c85de2 GIT_SILENT Sync po/docbooks with svn 2023-06-16 01:49:40 +00:00
l10n daemon script
13efc08b07 GIT_SILENT Sync po/docbooks with svn 2023-06-14 01:51:18 +00:00
103 changed files with 4313 additions and 6061 deletions

View File

@@ -145,14 +145,6 @@ if(ANDROID)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/android/version.gradle.in ${CMAKE_BINARY_DIR}/version.gradle)
endif()
include(FindPkgConfig)
pkg_check_modules(GSTREAMER IMPORTED_TARGET gstreamer-sdp-1.0>1.18 gstreamer-webrtc-1.0>=1.18)
if (TARGET PkgConfig::GSTREAMER)
add_feature_info(voip ON "GStreamer found. Call support is enabled.")
else()
add_feature_info(voip OFF "GStreamer not found. Call support is disabled.")
endif()
ki18n_install(po)
install(FILES org.kde.neochat.desktop DESTINATION ${KDE_INSTALL_APPDIR})

BIN
icons/300-apps-neochat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -89,6 +89,7 @@ to provide a convergent experience across multiple platforms.</p>
<p xml:lang="ca-valencia">NeoChat és un client de Matrix, el protocol descentralitzat de comunicacions de missatgeria instantània. Permet enviar missatges de text, fitxers de vídeo i d'àudio a la família, col·legues i amics. Utilitza els Frameworks de KDE i, sobretot, Kirigami per a proporcionar una experiència convergent a través de diverses plataformes.</p>
<p xml:lang="en-GB">NeoChat is a client for Matrix, the decentralised communication protocol for instant messaging. It allows you to send text messages, videos and audio files to your family, colleagues and friends. It uses KDE frameworks and most notably Kirigami to provide a convergent experience across multiple platforms.</p>
<p xml:lang="es">NeoChat es un cliente para Matrix, el protocolo de comunicaciones descentralizado para mensajería instantánea. Le permite enviar mensajes de texto, vídeos y archivos de sonido a su familia, compañeros de trabajo y amigos. Usa la infraestructura de KDE y, en particular, Kirigami para proporcionar una experiencia convergente en muchas plataformas.</p>
<p xml:lang="fi">NeoChat on asiakassovellus Matrixille, hajautetulle pikaviestinyhteyskäytännölle. Sillä voi lähettää teksti-, video- ja ääniviestejä perheelle, tutuille ja ystäville. Se käyttää KDE-kehystä ja erityisesti Kirigamia tuottaakseen mukautuvan monialustaisen käyttökokemuksen.</p>
<p xml:lang="fr">NeoChat est un client pour le protocole Matrix, un protocole décentralisé de communications pour messagerie instantané. Il vous permet d'envoyer des messages de texte, des vidéos et des fichiers audio à votre famille, vos collègues et vos amis. Il utilise les environnements de développement et plus précisément Kirigami pour fournir une expérience convergente sur plusieurs plate-formes. </p>
<p xml:lang="gl">NeoChat é un cliente para Matrix, o protocolo de comunicación descentralizada para mensaxería instantánea. Podes enviar mensaxes de texto, vídeos e ficheiros de son á túa familia, colegas e amizades. Usas infraestruturas de KDE e principalmente Kirigami para proporcionar unha experiencia de uso converxente para varias plataformas.</p>
<p xml:lang="ia">NeoChat es un cliente per Matrix, le protocollo de communication decentralisate per messager instantanee. Illo te permitte inviar messager de texto, files de video e audio a tu familia, collegas e amicos usante. Illo usa KDE frameworks e super toto Kirigamii forni un experientia convergente trans platteforme multiple.</p>
@@ -107,6 +108,7 @@ to provide a convergent experience across multiple platforms.</p>
<p xml:lang="ca-valencia">NeoChat pretén ser una aplicació amb totes les característiques per a l'especificació de Matrix. Com a tal, s'ha implementat tota l'especificació actual estable amb les notables excepcions de VoIP, fils i alguns aspectes de l'encriptació d'extrem a extrem. Hi ha algunes altres omissions més xicotetes a causa del fet que l'especificació de Matrix està evolucionant constantment, però l'objectiu seguix sent proporcionar suport eventual per a tota l'especificació.</p>
<p xml:lang="en-GB">NeoChat aims to be a fully featured application for the Matrix specification. As such everything in the current stable specification with the notable exceptions of VoIP, threads and some aspects of End-to-End Encryption are supported. There are a few other smaller omissions due to the fact that the Matrix spec is constantly evolving but the aim remains to provide eventual support for the entire spec.</p>
<p xml:lang="es">NeoChat pretende ser una aplicación con todas las funciones para la especificación de Matrix. Como tal, admite todo en la especificación estable actual, con las notables excepciones de VoIP, subprocesos y algunas funciones de cifrado de extremo a extremo. Existen algunas omisiones menos importantes debido al hecho de que la especificación de Matrix está en constante evolución, pero el objetivo sigue siendo brindar compatibilidad final con toda la especificación.</p>
<p xml:lang="fi">NeoChat pyrkii olemaan Matrix-määritelmän täysominaisuuksinen sovellus, joten se tukee kaikkea nykyisessä vakaassa määritelmässä muutamaa huomattavaa poikkeusta lukuun ottamatta (VoIP, säikeet ja jotkin piirteet päästä päähän -salauksessa). Joitakin pienempiäkin puutteita on Matrix-määritelmän jatkuvan kehityksen vuoksi, mutta lopputavoitteena on tarjota määritelmän täysi tuki.</p>
<p xml:lang="fr">L'objectif de NeoChat est d'être une application complète pour le protocole Matrix. En tant que tel, tout dans la spécification stable actuelle avec les exceptions notables de VoIP, les processus et certains aspects du chiffrement de bout en bout sont pris en charge. Il y a quelques autres petites omissions en raison du fait que la spécification du protocole Matrix est en constante évolution. Cependant, l'objectif reste de fournir un soutien éventuel pour l'ensemble de la spécification.</p>
<p xml:lang="gl">NeoChat pretende ser unha aplicación completa para a especificación de Matrix. Coas excepcións de VoIP, conversas fiadas e algúns aspectos da cifraxe de extremo a extremo, a versión estábel segue as especificacións. Existen algunhas outras pequenas omisións debido ao feito de que Matrix está en continua evolución pero a intención é implementar a especificación completa.</p>
<p xml:lang="ia">NeoChat aspira a esser un application plenemente eminente per le specification de Matrix. Tal como omne cosas in le specification currentemente stabile con le exceptiones notabile de VOIP, threads e alcun aspectos del cryptation End-to-End es supportate. Il ha ltere pauc omissiones, debite al facto que le specification de Matrix es in evolution constante ma le aspiration remane a fornir supporto eventual per le integre specification.</p>
@@ -125,6 +127,7 @@ to provide a convergent experience across multiple platforms.</p>
<p xml:lang="ca-valencia">A causa de la naturalea del desenvolupament de l'especificació de Matrix, NeoChat també implementa nombroses característiques inestables. Actualment són:</p>
<p xml:lang="en-GB">Due to the nature of the Matrix specification development NeoChat also supports numerous unstable features. Currently these are:</p>
<p xml:lang="es">Debido a la naturaleza del desarrollo de la especificación de Matrix, NeoChat también permite numerosas funciones no estables, como:</p>
<p xml:lang="fi">Matrix-määritelmän kehittyessä NeoChat tukee myös monia epävakaita ominaisuuksia. Tällä hetkellä näitä ovat:</p>
<p xml:lang="fr">En raison de la nature du développement des spécifications du protocole Matrix, NeoChat prend également en charge de nombreuses fonctionnalités instables. Actuellement, ce sont :</p>
<p xml:lang="gl">Debido á natureza do desenvolvemento da especificación de Matrix, NeoChat tamén inclúe varias funcionalidades non estábeis:</p>
<p xml:lang="ia">Debite al natura del disveloppamento de specification de Matrix NeoChat tamben supporta numerose characteristicas instabile. Currentemente istes es:</p>
@@ -144,6 +147,7 @@ to provide a convergent experience across multiple platforms.</p>
<li xml:lang="ca-valencia">Enquestes - MSC3381</li>
<li xml:lang="en-GB">Polls - MSC3381</li>
<li xml:lang="es">Encuestas - MSC3381</li>
<li xml:lang="fi">Kyselyt MSC3381</li>
<li xml:lang="fr">Sondages - MSC3381</li>
<li xml:lang="gl">Enquisas - MSC3381</li>
<li xml:lang="ia">Inquestas - MSC3381</li>
@@ -162,6 +166,7 @@ to provide a convergent experience across multiple platforms.</p>
<li xml:lang="ca-valencia">Paquets d'adhesius - MSC2545</li>
<li xml:lang="en-GB">Sticker Packs - MSC2545</li>
<li xml:lang="es">Paquetes de pegatinas - MSC2545</li>
<li xml:lang="fi">Tarrapakkaukset MSC2545</li>
<li xml:lang="fr">Paquets d'auto-collants - MSC2545</li>
<li xml:lang="gl">Paquetes de adhesivos - MSC2545</li>
<li xml:lang="ia">Etiquetta gummate (sticker) -MSC2545</li>
@@ -180,6 +185,7 @@ to provide a convergent experience across multiple platforms.</p>
<li xml:lang="ca-valencia">Esdeveniments d'ubicació - MSC3488</li>
<li xml:lang="en-GB">Location Events - MSC3488</li>
<li xml:lang="es">Eventos de ubicación - MSC3488</li>
<li xml:lang="fi">Sijaintitapahtumat MSC3488</li>
<li xml:lang="fr">Événements de lieu - MSC3488</li>
<li xml:lang="gl">Localización de eventos - MSC3488</li>
<li xml:lang="ia">Eventos de Location - MSC3488</li>
@@ -194,6 +200,11 @@ to provide a convergent experience across multiple platforms.</p>
<li xml:lang="x-test">xxLocation Events - MSC3488xx</li>
</ul>
</description>
<keywords>
<keyword>instant messaging</keyword>
<keyword>chat</keyword>
<keyword>matrix</keyword>
</keywords>
<url type="homepage">https://apps.kde.org/neochat/</url>
<url type="bugtracker">https://bugs.kde.org/buglist.cgi?component=General&amp;product=NeoChat</url>
<categories>
@@ -241,6 +252,19 @@ to provide a convergent experience across multiple platforms.</p>
<value key="KDE::matrix">#neochat:kde.org</value>
<value key="KDE::windows_store">https://www.microsoft.com/store/apps/9PNXWVNRC29H</value>
<value key="KDE::mastodon">https://kde.social/@neochat</value>
<value key="KDE::windows_store::StoreLogo9x16">https://invent.kde.org/network/neochat/-/raw/master/icons/windows/storelogo-720x1080.png</value>
<value key="KDE::windows_store::StoreLogoSquare">https://invent.kde.org/network/neochat/-/raw/master/icons/windows/storelogo-1080x1080.png</value>
<value key="KDE::windows_store::Icon">https://invent.kde.org/network/neochat/-/raw/master/icons/300-apps-neochat.png</value>
<value key="KDE::windows_store::PromotionalArt16x9">https://invent.kde.org/network/neochat/-/raw/master/icons/windows/promoimage-1920x1080.png</value>
<value key="KDE::feature1">Supports the Matrix protocol for instant messaging.</value>
<value key="KDE::feature2">End-to-End Encryption</value>
<value key="KDE::feature3">Polls (experimental)</value>
<value key="KDE::feature4">Sticker Packs (experimental)</value>
<value key="KDE::feature5">Location Events (experimental)</value>
<value key="KDE::windows_store::DesktopScreenshot1">https://cdn.kde.org/screenshots/neochat/NeoChat-Windows-Timeline.png</value>
<value key="KDE::windows_store::DesktopScreenshotCaption1">Main view of NeoChat with room list, chat, and room information pane</value>
<value key="KDE::windows_store::DesktopScreenshot2">https://cdn.kde.org/screenshots/neochat/NeoChat-Windows-Login.png</value>
<value key="KDE::windows_store::DesktopScreenshotCaption2">Login screen of NeoChat</value>
</custom>
<launchable type="desktop-id">org.kde.neochat.desktop</launchable>
<screenshots>

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: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-06-08 10:55+0400\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-15 09:40+0400\n"
"Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n"
"Language-Team: ar\n"
"Language: ar\n"
@@ -84,10 +84,9 @@ msgid "Room creation failed: %1"
msgstr "فشل إنشاء غرفة: %1"
#: src/controller.cpp:552
#, fuzzy, kde-format
#| msgid "Room creation failed: %1"
#, kde-format
msgid "Space creation failed: %1"
msgstr "فشل إنشاء غرفة: %1"
msgstr "فشل إنشاء فضاء: %1"
#: src/controller.cpp:566
#, kde-format
@@ -123,90 +122,90 @@ msgstr "المقصد"
msgid "Network Error"
msgstr "خطأ شبكيّ"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "نيوتشات"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "عميل ماتركس"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020بلاك هات، 2020-2023 مجتمع كِيدِي"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "كارل شوان"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "المصين"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "توبياس فلة"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "جيمس غراهام"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "قبعة سوداء"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "المؤلف الأصلي لـSpectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "أليكسي روساكوف"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "مصين Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "زايد السعيدي"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "zayed.alsaidi@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "مكتبة Qt5 لكتابة عملاء عابرة للأنظمة لماتركس"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (بني على %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "عميل لميفاق الاتصال ماتركس"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "يدعم ماتركس: مخطط الروابط"
@@ -638,18 +637,16 @@ msgid "Custom"
msgstr "مخصّص"
#: src/models/imagepacksmodel.cpp:90
#, fuzzy, kde-format
#| msgid "Own Stickers"
#, kde-format
msgctxt "As in 'The user's own Stickers'"
msgid "Own Stickers"
msgstr "ملصقاتك"
#: src/models/imagepacksmodel.cpp:90
#, fuzzy, kde-format
#| msgid "Emojis"
#, kde-format
msgctxt "As in 'The user's own emojis"
msgid "Own Emojis"
msgstr "الصورة التعبيرية"
msgstr "صورك التعبيرية"
#: src/models/messageeventmodel.cpp:477 src/models/messageeventmodel.cpp:486
#, kde-format
@@ -661,17 +658,17 @@ msgstr "<i>[هذه الرسالة محذوفة]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[هذه الرسالة محذوفة: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[أفعال محظورة]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[أفعال محظورة: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
@@ -682,7 +679,7 @@ msgstr[3] "%1 مستخدمين: "
msgstr[4] " %1 مستخدماً: "
msgstr[5] "%1 مستخدم: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1105,7 +1102,7 @@ msgstr "عرض: %1, طول: %2"
msgid "Encrypted Message"
msgstr "رسالة معمّاة"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1317,10 +1314,9 @@ msgid "Available Room Versions"
msgstr "إصدارات الغرفة المتوفرة"
#: src/qml/Component/Emoji/EmojiGrid.qml:83
#, fuzzy, kde-format
#| msgid "Stickers"
#, kde-format
msgid "No stickers"
msgstr "الملصقات"
msgstr "لا يوجد ملصقات"
#: src/qml/Component/Emoji/EmojiGrid.qml:83
#, kde-format
@@ -1341,6 +1337,17 @@ msgstr "الصورة التعبيرية"
msgid "Stickers"
msgstr "الملصقات"
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "أرسل موقعاً جغرافياً"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "أغلق"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1367,6 +1374,19 @@ msgstr "ارفض"
msgid "Accept"
msgstr "اقبل"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "الإشعارات"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "أنت في هذه الغرفة فعلا."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1602,22 +1622,22 @@ msgstr "اختر ملف محلي"
msgid "Clipboard image"
msgstr "صورة الحافظة"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "اقفز إلى أول رسالة غير المقروءة"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "اقفز إلى أحدث رسالة"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "اسحب عناصر هنا لتشاركهم"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1629,19 +1649,19 @@ msgstr[3] "%2 يكتبون"
msgstr[4] "%2 يكتبون"
msgstr[5] "%2 يكتبون"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "التّعمية النشطة"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "لا يمكن تعطيل التعمية بعد تفعيلها."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1684,38 +1704,30 @@ msgstr "حسنًا"
#: src/qml/Dialog/CreateSpaceDialog.qml:15
#: src/qml/Page/RoomList/ExploreComponent.qml:40
#, fuzzy, kde-format
#| msgctxt "'Space' is a matrix space"
#| msgid "Leave Space"
#, kde-format
msgid "Create a Space"
msgstr "اترك الفضاء"
msgstr "أنشئ فضاء"
#: src/qml/Dialog/CreateSpaceDialog.qml:23
#, fuzzy, kde-format
#| msgctxt "'Space' is a matrix space"
#| msgid "Leave Space"
#, kde-format
msgctxt "@title"
msgid "Create a Space"
msgstr "اترك الفضاء"
msgstr "أنشئ فضاء"
#: src/qml/Dialog/CreateSpaceDialog.qml:27
#, fuzzy, kde-format
#| msgctxt "@option:check"
#| msgid "Space members"
#, kde-format
msgid "Space name"
msgstr "أعضاء الفضاء"
msgstr "اسم الفضاء"
#: src/qml/Dialog/CreateSpaceDialog.qml:31
#, kde-format
msgid "Space topic (optional)"
msgstr ""
msgstr "موضوع الفضاء (اختياري)"
#: src/qml/Dialog/CreateSpaceDialog.qml:34
#, fuzzy, kde-format
#| msgctxt "'Space' is a matrix space"
#| msgid "Leave Space"
#, kde-format
msgid "Create space"
msgstr "اترك الفضاء"
msgstr "أنشئ فضاء"
#: src/qml/Dialog/KeyVerification/EmojiSas.qml:23
#, kde-format
@@ -2012,18 +2024,18 @@ msgstr "افتح دردشة خاصة"
msgid "Copy link"
msgstr "نسخ الرابط"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "تَثَبّت الجلسة"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "موافقة المستخدم"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2032,17 +2044,17 @@ msgstr ""
"يتطلب منك الخادم المنزلي الخاص بك الموافقة على الشروط والأحكام الخاصة به قبل "
"أن تتمكن من استخدامه. الرجاء الضغط على الزر أدناه لقراءتها."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "افتح"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "ابدأ دردشة"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "هل ترغب في بَدء دردشة مع %1؟"
@@ -2237,7 +2249,7 @@ msgid "Ban"
msgstr "احظر"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2316,27 +2328,27 @@ msgstr "بحث عن '%1'"
msgid "Configure Web Shortcuts..."
msgstr "اضبط اختصارات الوِب..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "أزل الرسائل"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "أزل رسالة"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "سبب إزالة هذه آخر رسائل هذا المستخدم"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "سبب إزالة هذه الرسالة"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2637,8 +2649,8 @@ msgstr "اترك الغرفة"
msgid "Explore rooms"
msgstr "استكشف الغرف"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "أنشئ غرف ودردشات"
@@ -2797,31 +2809,37 @@ msgid "Search"
msgstr "ابحث"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "ابحث في هذه الغرفة"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "أزل الغرفة من المفضلة"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "اجعل الغرفة في المفضلة"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "الأعضاء"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "ابحث عن مستخدم في الغرفة"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "أدعُ مستخدم إلى غرفة"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
@@ -2832,28 +2850,28 @@ msgstr[3] "%1 أعضاء"
msgstr[4] "%1 عضواً"
msgstr[5] "%1 عضو"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "بلا عدد أعضاء"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "عامّ"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "الأمن"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "التّصاريح"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "الإشعارات"
@@ -4055,9 +4073,6 @@ msgstr "أنهِ"
#~ msgid "Save as"
#~ msgstr "حفظ باسم"
#~ msgid "Close"
#~ msgstr "أغلق"
#~ msgid " (edited)"
#~ 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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+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"
@@ -130,92 +130,92 @@ msgstr "Dəvət göndərmək"
msgid "Network Error"
msgstr "Şəbəkə xətası"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix müştərisi"
#: src/main.cpp:165
#: src/main.cpp:168
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020-2022 KDE Community"
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2022 KDE Cəmiyyəti"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr ""
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Qarapapaq"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Xəyyam Qocayev"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "xxmn77@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
"Matrix üçün platformalararası müştərilər yazmaq üçün bir Qt5 kitabxanası"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr ""
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Matrix kommunikasiya protokolu üçün müştəri"
#: src/main.cpp:325
#: src/main.cpp:333
#, fuzzy, kde-format
#| msgid "Supports appstream: url scheme"
msgid "Supports matrix: url scheme"
@@ -741,24 +741,24 @@ msgstr "<i>[Bu ismarıc silindi]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Bu ismarıc silindi: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[DÜZƏLİŞ_EDİLDİ]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[DÜZƏLİŞ_EDİLDİ: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] ""
msgstr[1] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, fuzzy, kde-format
#| msgctxt "[action 1], [action 2 and action 3]"
#| msgid ", "
@@ -1200,7 +1200,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr "İsmarıca düzəliş etmək"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1454,6 +1454,17 @@ msgstr "Xüsusi Emoji"
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send invitation"
msgid "View Location"
msgstr "Dəvət göndərmək"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Bağlamaq"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1480,6 +1491,19 @@ msgstr "İmtina etmək"
msgid "Accept"
msgstr "Qəbul etmək"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Show notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Bildirişlərdə göstərmək"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "There are no locations shared in this room."
msgstr "NeoChatı bu otaqla açın"
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1713,22 +1737,22 @@ msgstr "Yerli faylı seçin"
msgid "Clipboard image"
msgstr "Mübadilə yaddaşındakı şəkil"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Birinci oxunmammış ismarıca keçin"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Sonuncu ismarıca keçin"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Elementi paylaşmaq üçün buraya atın"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1736,20 +1760,20 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 yazır"
msgstr[1] "%2 yazırlar"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, fuzzy, kde-format
#| msgid "activated End-to-End Encryption"
msgid "Activate Encryption"
msgstr "Ucdan Uca şifrələməni aktiv etmək"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2125,19 +2149,19 @@ msgstr "Məxfi çatı açmaq"
msgid "Copy link"
msgstr "Kopyalamaq"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, fuzzy, kde-format
#| msgid "Show notifications"
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Bildirişlərdə göstərmək"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "İstifadəçi razılığı"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2146,17 +2170,17 @@ msgstr ""
"Əsas server, onu istifadə etmədən öncə onun şərtlərini və razılaşmalarını "
"qəbul etmənizi tələb edir. Onları oxumaq üçün aşağıdakı düyməni vurun."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Açmaq"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Söhbətə başlayın"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "%1 ilə söhbətə başlamaq istəyirsiniz?"
@@ -2353,7 +2377,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2435,29 +2459,29 @@ msgstr "'%1' ilə axtarın"
msgid "Configure Web Shortcuts..."
msgstr "Veb qısayollarını tənzimləyin..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Edit Message"
msgid "Remove Messages"
msgstr "İsmarıca düzəliş etmək"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Edit Message"
msgid "Remove Message"
msgstr "İsmarıca düzəliş etmək"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button 'Remove' as in 'Remove this message'"
@@ -2771,8 +2795,8 @@ msgstr "Otağı tərk etmək"
msgid "Explore rooms"
msgstr "Otaqlara baxış"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, fuzzy, kde-format
#| msgid "Rooms and private chats:"
msgid "Create rooms and chats"
@@ -2944,33 +2968,39 @@ msgid "Search"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "Show locations for this room"
msgstr "NeoChatı bu otaqla açın"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Otağı seçilmişlərdən silin"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Otağı seçilmiş edin"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Üzvlər"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "Search user in room"
msgstr "NeoChatı bu otaqla açın"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, fuzzy, kde-format
#| msgid "%1 invited you to a room"
msgid "Invite user to room"
msgstr "%1,sizi otağa dəvət etdi"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "%1 Member"
#| msgid_plural "%1 Members"
@@ -2979,29 +3009,29 @@ msgid_plural "%1 members"
msgstr[0] "%1 Üzv"
msgstr[1] "%1 Üzvlər"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "No Member Count"
msgid "No member count"
msgstr "Üzv sayı yoxdur"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Əsas"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Təhlükəsizlik"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, fuzzy, kde-format
#| msgid "Show notifications"
msgid "Notifications"
@@ -4317,9 +4347,6 @@ msgstr "Çıxış"
#~ msgid "Save as"
#~ msgstr "Belə saxlamaq"
#~ msgid "Close"
#~ msgstr "Bağlamaq"
#~ msgid " (edited)"
#~ msgstr " (düzəliş edildi)"

View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-06-09 10:13+0200\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-24 13:26+0200\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
"Language: ca\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 20.12.0\n"
"X-Generator: Lokalize 22.12.3\n"
#: src/controller.cpp:262
#, kde-format
@@ -126,91 +126,91 @@ msgstr "Destinació"
msgid "Network Error"
msgstr "Error de la xarxa"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Client de Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2023 la comunitat KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Mantenidor"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "Nate Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Autor original de l'Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Mantenidor del Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Josep M. Ferrer"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "txemaq@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
"Una biblioteca Qt5 per a escriure clients multiplataforma per al Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (construïda amb %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Client per al protocol de comunicacions Matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Implementa l'esquema d'URL «matrix:»"
@@ -656,24 +656,24 @@ msgstr "<i>[Aquest missatge s'ha suprimit]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Aquest missatge s'ha suprimit: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[REDACTAT]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[REDACTAT: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "%1 usuari: "
msgstr[1] "%1 usuaris: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1089,7 +1089,7 @@ msgstr "Lat.: %1, lon.: %2"
msgid "Encrypted Message"
msgstr "Missatge encriptat"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1327,6 +1327,16 @@ msgstr "Emojis"
msgid "Stickers"
msgstr "Adhesius"
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr "Visualitza l'emplaçament"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Tanca"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1353,6 +1363,17 @@ msgstr "Rebutja"
msgid "Accept"
msgstr "Accepta"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Ubicacions"
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr "No hi ha ubicacions compartides en aquesta sala."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1586,22 +1607,22 @@ msgstr "Trieu un fitxer local"
msgid "Clipboard image"
msgstr "Imatge del porta-retalls"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Ves al primer missatge sense llegir"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Ves al darrer missatge"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Arrossegueu aquí els elements per a compartir"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1609,19 +1630,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 està escrivint"
msgstr[1] "%2 estan escrivint"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Activa l'encriptatge"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "No es podrà desactivar l'encriptatge després que s'hagi activat."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2014,18 +2035,18 @@ msgstr "Obre en un xat privat"
msgid "Copy link"
msgstr "Copia l'enllaç"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Verificació de la sessió"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Consentiment de l'usuari"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2034,17 +2055,17 @@ msgstr ""
"El servidor domèstic requereix que accepteu els seus termes i condicions "
"abans de poder-lo usar. Feu clic al botó de sota per a llegir-los."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Obre"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Inicia un xat"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Voleu iniciar un xat amb %1?"
@@ -2239,7 +2260,7 @@ msgid "Ban"
msgstr "Bandeja"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2318,27 +2339,27 @@ msgstr "Cerca «%1»"
msgid "Configure Web Shortcuts..."
msgstr "Configura les dreceres web..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Elimina missatges"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Elimina un missatge"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Motiu per eliminar els missatges recents d'aquest usuari"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Motiu per eliminar aquest missatge"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2639,8 +2660,8 @@ msgstr "Surt de la sala"
msgid "Explore rooms"
msgstr "Explora les sales"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Crea sales i xats"
@@ -2800,58 +2821,63 @@ msgstr "Cerca"
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr "Mostra les ubicacions per a aquesta sala"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Elimina la sala de les preferides"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Fes preferida la sala"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Membres"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Cerca un usuari en aquesta sala"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Convida un usuari a la sala"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 membre"
msgstr[1] "%1 membres"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "No hi ha comptador de membres"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "General"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Seguretat"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Permisos"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Notificacions"

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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-09 10:13+0200\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
@@ -127,90 +127,90 @@ msgstr "Destinació"
msgid "Network Error"
msgstr "S'ha produït un error de la xarxa"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Client de Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2023 la comunitat KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Mantenidor"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "Nate Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Autor original d'Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Mantenidor de Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Josep M. Ferrer"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "txemaq@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Una biblioteca Qt5 per a escriure clients multiplataforma per a Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (construïda amb %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Client per al protocol de comunicacions Matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Implementa l'esquema d'URL «matrix:»"
@@ -656,24 +656,24 @@ msgstr "<i>[Este missatge s'ha suprimit]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Este missatge s'ha suprimit: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[REDACTAT]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[REDACTAT: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "%1 usuari: "
msgstr[1] "%1 usuaris: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1088,7 +1088,7 @@ msgstr "Lat.: %1, lon.: %2"
msgid "Encrypted Message"
msgstr "Missatge encriptat"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1326,6 +1326,17 @@ msgstr "Emojis"
msgid "Stickers"
msgstr "Adhesius"
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "Envia una ubicació"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr ""
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1352,6 +1363,19 @@ msgstr "Rebutja"
msgid "Accept"
msgstr "Accepta"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Notificacions"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Ja vos trobeu en esta sala."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1585,22 +1609,22 @@ msgstr "Seleccioneu un fitxer local"
msgid "Clipboard image"
msgstr "Imatge del porta-retalls"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Ves al primer missatge sense llegir"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Ves al últim missatge"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Arrossegueu ací els elements per a compartir"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1608,19 +1632,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 està escrivint"
msgstr[1] "%2 estan escrivint"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Activa l'encriptació"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "No es podrà desactivar l'encriptació després que s'haja activat."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2013,18 +2037,18 @@ msgstr "Obri en un xat privat"
msgid "Copy link"
msgstr "Copia l'enllaç"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Verificació de la sessió"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Consentiment de l'usuari"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2033,17 +2057,17 @@ msgstr ""
"El servidor domèstic requerix que accepteu els seus termes i condicions "
"abans de poder-lo utilitzar. Feu clic en el botó de davall per a llegir-los."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Obri"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Inicia un xat"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Voleu iniciar un xat amb %1?"
@@ -2238,7 +2262,7 @@ msgid "Ban"
msgstr "Bandeja"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2317,27 +2341,27 @@ msgstr "Busca «%1»"
msgid "Configure Web Shortcuts..."
msgstr "Configura les dreceres web..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Elimina missatges"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Elimina un missatge"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Motiu per a eliminar els missatges recents d'este usuari"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Motiu per a eliminar este missatge"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2638,8 +2662,8 @@ msgstr "Ix de la sala"
msgid "Explore rooms"
msgstr "Explora les sales"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Crea sales i xats"
@@ -2798,59 +2822,65 @@ msgid "Search"
msgstr "Busca"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "Busca en esta sala"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Elimina la sala de les preferides"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Fes preferida la sala"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Membres"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Busca un usuari en esta sala"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Convida un usuari a la sala"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 membre"
msgstr[1] "%1 membres"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "No hi ha comptador de membres"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "General"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Seguretat"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Permisos"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Notificacions"

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: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-06-05 13:18+0200\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-12 16:22+0200\n"
"Last-Translator: Vit Pelcak <vit@pelcak.org>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
"Language: cs\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Lokalize 23.04.1\n"
"X-Generator: Lokalize 23.04.2\n"
#: src/controller.cpp:262
#, kde-format
@@ -85,7 +85,7 @@ msgstr "Vytvoření místnosti selhalo: %1"
#: src/controller.cpp:552
#, kde-format
msgid "Space creation failed: %1"
msgstr ""
msgstr "Vytvoření místnosti selhalo: %1"
#: src/controller.cpp:566
#, kde-format
@@ -121,90 +121,90 @@ msgstr "Cíl"
msgid "Network Error"
msgstr "Chyba sítě"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Klient protokolu Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2023 Komunita KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Správce"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Vít Pelčák"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "vit@pelcak.org"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (sestaveno oproti %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr ""
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr ""
@@ -633,13 +633,13 @@ msgstr "Vlastní"
#, kde-format
msgctxt "As in 'The user's own Stickers'"
msgid "Own Stickers"
msgstr ""
msgstr "Vlastní nálepky"
#: src/models/imagepacksmodel.cpp:90
#, kde-format
msgctxt "As in 'The user's own emojis"
msgid "Own Emojis"
msgstr ""
msgstr "Vlastní emotikony"
#: src/models/messageeventmodel.cpp:477 src/models/messageeventmodel.cpp:486
#, kde-format
@@ -651,17 +651,17 @@ msgstr ""
msgid "<i>[This message was deleted: %1]</i>"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr ""
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
@@ -669,7 +669,7 @@ msgstr[0] "%1 uživatel:"
msgstr[1] "%1 uživatelé:"
msgstr[2] "%1 uživatelů:"
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1086,7 +1086,7 @@ msgstr "Šíř.: %1, Dél.: %2"
msgid "Encrypted Message"
msgstr "Zašifrovaná zpráva"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1299,7 +1299,7 @@ msgstr "Dostupné verze místnosti"
#: src/qml/Component/Emoji/EmojiGrid.qml:83
#, kde-format
msgid "No stickers"
msgstr ""
msgstr "Žádné nálepky"
#: src/qml/Component/Emoji/EmojiGrid.qml:83
#, kde-format
@@ -1320,6 +1320,17 @@ msgstr "Emotikony"
msgid "Stickers"
msgstr "Nálepky"
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "Poslat polohu"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr ""
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1346,6 +1357,18 @@ msgstr "Odmítnout"
msgid "Accept"
msgstr "Přijmout"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Upozornění"
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr ""
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1578,22 +1601,22 @@ msgstr ""
msgid "Clipboard image"
msgstr ""
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Přejít na první nepřečtenou zprávu"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr ""
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr ""
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1602,19 +1625,19 @@ msgstr[0] "%2 píše"
msgstr[1] "%2 píší"
msgstr[2] "%2 píší"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1659,28 +1682,28 @@ msgstr "OK"
#: src/qml/Page/RoomList/ExploreComponent.qml:40
#, kde-format
msgid "Create a Space"
msgstr ""
msgstr "Vytvořit místnost"
#: src/qml/Dialog/CreateSpaceDialog.qml:23
#, kde-format
msgctxt "@title"
msgid "Create a Space"
msgstr ""
msgstr "Vytvořit místnost"
#: src/qml/Dialog/CreateSpaceDialog.qml:27
#, kde-format
msgid "Space name"
msgstr ""
msgstr "Název místnosti"
#: src/qml/Dialog/CreateSpaceDialog.qml:31
#, kde-format
msgid "Space topic (optional)"
msgstr ""
msgstr "Téma místnosti (volitelné)"
#: src/qml/Dialog/CreateSpaceDialog.qml:34
#, kde-format
msgid "Create space"
msgstr ""
msgstr "Vytvořit místnost"
#: src/qml/Dialog/KeyVerification/EmojiSas.qml:23
#, kde-format
@@ -1975,35 +1998,35 @@ msgstr ""
msgid "Copy link"
msgstr "Kopírovat odkaz"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr ""
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr ""
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them."
msgstr ""
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Otevřít"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Zahájit rozhovor"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Přejete si začít rozhovor s %1?"
@@ -2198,7 +2221,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2277,27 +2300,27 @@ msgstr "Vyhledat '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Nastavit webové zkratky..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2596,8 +2619,8 @@ msgstr "Opustit místnost"
msgid "Explore rooms"
msgstr ""
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Vytvářejte místnosti a rozhovory"
@@ -2756,31 +2779,37 @@ msgid "Search"
msgstr "Hledat"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "No application for the link"
msgid "Show locations for this room"
msgstr "Pro odkaz není žádná aplikace"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Členové"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
@@ -2788,28 +2817,28 @@ msgstr[0] "%1 člen"
msgstr[1] "%1 členové"
msgstr[2] "%1 členů"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Žádný počet členů"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Obecné"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Bezpečnost"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Oprávnění"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Upozornění"

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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+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"
@@ -127,91 +127,91 @@ msgstr ""
msgid "Network Error"
msgstr "Netværksfejl"
#: src/main.cpp:161
#: src/main.cpp:164
#, fuzzy, kde-format
#| msgid "Chat"
msgid "NeoChat"
msgstr "Chat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr ""
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr ""
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr ""
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Martin Schlander"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "mschlander@opensuse.org"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr ""
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr ""
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr ""
@@ -660,24 +660,24 @@ msgstr ""
msgid "<i>[This message was deleted: %1]</i>"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr ""
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] ""
msgstr[1] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1097,7 +1097,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr "Send besked"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr ""
@@ -1343,6 +1343,17 @@ msgstr ""
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Settings"
msgid "View Location"
msgstr "Indstillinger"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Luk"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1369,6 +1380,18 @@ msgstr "Afvis"
msgid "Accept"
msgstr "Acceptér"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Settings"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Indstillinger"
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr ""
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1607,22 +1630,22 @@ msgstr ""
msgid "Clipboard image"
msgstr ""
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Gå til første ulæste besked"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr ""
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr ""
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1630,19 +1653,19 @@ msgid_plural "%2 are typing"
msgstr[0] ""
msgstr[1] ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2012,37 +2035,37 @@ msgstr ""
msgid "Copy link"
msgstr "Kopiér"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr ""
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, fuzzy, kde-format
#| msgid "Username"
msgid "User consent"
msgstr "Brugernavn"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them."
msgstr ""
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr ""
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, fuzzy, kde-format
#| msgid "Start a Chat"
msgid "Start a chat"
msgstr "Start en chat"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr ""
@@ -2245,7 +2268,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2327,29 +2350,29 @@ msgstr ""
msgid "Configure Web Shortcuts..."
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Send message"
msgid "Remove Messages"
msgstr "Send besked"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Send message"
msgid "Remove Message"
msgstr "Send besked"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button 'Remove' as in 'Remove this message'"
@@ -2654,8 +2677,8 @@ msgstr ""
msgid "Explore rooms"
msgstr ""
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr ""
@@ -2824,58 +2847,63 @@ msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Medlemmer"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "Medlem"
msgstr[1] "Medlemmer"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr ""
@@ -4083,9 +4111,6 @@ msgstr ""
#~ msgid "Save as"
#~ msgstr "Gem som"
#~ msgid "Close"
#~ msgstr "Luk"
#~ msgid "Room Name"
#~ msgstr "Værelsesnavn:"

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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-05 13:08+0200\n"
"Last-Translator: Frederik Schwarzer <schwarzer@kde.org>\n"
"Language-Team: German <kde-i18n-de@kde.org>\n"
@@ -127,92 +127,92 @@ msgstr "Ziel"
msgid "Network Error"
msgstr "Netzwerkfehler"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix-Programm"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "Copyright © 2018-2020 Black Hat, 2020-2023 KDE-Gemeinschaft"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Betreuer"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Ursprünglicher Autor von Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Betreuer von Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Deutsches KDE-Übersetzerteam, Alois Spitzbart"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "kde-i18n-de@kde.org, spitz234@hotmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
"Eine Qt5-Bibliothek zum Schreiben von plattformübergreifenden Programmen für "
"Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (für %2 kompiliert)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Programm für das Matrix-Protokoll"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Unterstützt das Adressschema matrix:"
@@ -666,24 +666,24 @@ msgstr "<i>[Diese Nachricht wurde gelöscht]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Diese Nachricht wurde gelöscht: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[GELÖSCHT]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[GELÖSCHT: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "1 Benutzer: "
msgstr[1] "%1 Benutzer: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1099,7 +1099,7 @@ msgstr "Breite: %1, Länge: %2"
msgid "Encrypted Message"
msgstr "Verschlüsselte Nachricht"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1336,6 +1336,17 @@ msgstr "Emojis"
msgid "Stickers"
msgstr "Sticker"
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "Einen Standort senden"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Schließen"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1362,6 +1373,19 @@ msgstr "Ablehnen"
msgid "Accept"
msgstr "Annehmen"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Benachrichtigungen"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Sie sind bereits in dem Raum."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1595,22 +1619,22 @@ msgstr "Lokale Datei auswählen"
msgid "Clipboard image"
msgstr "Bild aus Zwischenablage"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Zur ersten ungelesenen Nachricht springen"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Zur neuesten Nachricht springen"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Einträge hier einfügen um sie zu teilen"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1618,13 +1642,13 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 schreibt gerade"
msgstr[1] "%2 schreiben gerade"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Verschlüsselung aktivieren"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
@@ -1632,7 +1656,7 @@ msgstr ""
"Die Verschlüsselung kann nach der Aktivierung nicht wieder deaktiviert "
"werden."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2038,18 +2062,18 @@ msgstr "Privaten Chat öffnen"
msgid "Copy link"
msgstr "Verknüpfung kopieren"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Sitzungsverifizierung"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Benutzereinwilligung"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2058,17 +2082,17 @@ msgstr ""
"Ihr Heimserver verlangt, dass Sie seinen Bedingungen zustimmen, bevor Sie "
"ihn nutzen können. Bitte klicken Sie auf den Knopf unten, um sie zu lesen."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Öffnen"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Einen Chat starten"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Möchten Sie einen Chat mit %1 beginnen?"
@@ -2263,7 +2287,7 @@ msgid "Ban"
msgstr "Verbannen"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2342,27 +2366,27 @@ msgstr "Suchen nach „%1“"
msgid "Configure Web Shortcuts..."
msgstr "Web-Kurzbefehle festlegen ..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Nachrichten löschen"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Nachricht löschen"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Grund für die Löschung der letzten Nachrichten des Nutzers"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Grund für die Löschung der Nachricht"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2666,8 +2690,8 @@ msgstr "Raum verlassen"
msgid "Explore rooms"
msgstr "Räume erkunden"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Räume und Unterhaltungen erstellen"
@@ -2826,59 +2850,65 @@ msgid "Search"
msgstr "Suchen"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "In diesem Raum suchen"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Raum aus Favoriten entfernen"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Raum zu Favoriten hinzufügen"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Mitglieder"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Benutzer in Raum suchen"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Einen Benutzer in den Raum einladen"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 Mitglied"
msgstr[1] "%1 Mitglieder"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Keine Mitgliederanzahl"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Allgemein"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Sicherheit"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Berechtigungen"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Benachrichtigungen"
@@ -4114,9 +4144,6 @@ msgstr "Beenden"
#~ msgid "Save as"
#~ msgstr "Speichern unter"
#~ msgid "Close"
#~ msgstr "Schließen"
#~ msgid " (edited)"
#~ msgstr " (bearbeitet)"

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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-01-06 16:47+0200\n"
"Last-Translator: Stelios <sstavra@gmail.com>\n"
"Language-Team: Greek <kde-i18n-el@kde.org>\n"
@@ -125,93 +125,93 @@ msgstr "Προορισμός"
msgid "Network Error"
msgstr "Σφάλμα δικτύου"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Πελάτης του Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020-2022 KDE Community"
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2022 KDE Community"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Συντηρητής"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Αρχικός συγγραφέας του Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Συντηρητής του Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Stelios"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "sstavra@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
"Μια βιβλιοθήκη Qt5 για τη συγγραφή πελατών ανεξάρτητων από πλατφόρμες για το "
"Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (κατασκευάστηκε με τη %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Πελάτης για το πρωτόκολλο επικοινωνίας Matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Υποστηρίζει το matrix: url σχήμα"
@@ -670,24 +670,24 @@ msgstr "<i>[Αυτό το μήνυμα διαγράφηκε]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Αυτό το μήνυμα διαγράφηκε: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[ΔΙΑΓΡΑΜΜΕΝΟ]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[ΔΙΑΓΡΑΜΜΕΝΟ: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] ""
msgstr[1] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, fuzzy, kde-format
#| msgctxt "[action 1], [action 2 and action 3]"
#| msgid ", "
@@ -1126,7 +1126,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr "Κρυπτογραφημένο μήνυμα"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1374,6 +1374,17 @@ msgstr "Χωρίς εμότζι"
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send invitation"
msgid "View Location"
msgstr "Αποστολή πρόσκλησης"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Κλείσιμο"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1400,6 +1411,19 @@ msgstr "Απόρριψη"
msgid "Accept"
msgstr "Αποδοχή"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Ειδοποιήσεις"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Είσαι ήδη σε αυτήν την αίθουσα."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1635,22 +1659,22 @@ msgstr "Επιλογή τοπικού αρχείου"
msgid "Clipboard image"
msgstr "Εικόνα πρόχειρου"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Μετάβαση στο πρώτο μη αναγνωσμένο μήνυμα"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Μετάβαση στο τελευταίο μήνυμα"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Έλκυσε αντικείμενα εδώ για να τα μοιραστείς"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1658,20 +1682,20 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 πληκτρολογεί"
msgstr[1] "%2 πληκτρολογούν"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Ενεργοποίηση κρυπτογράφησης"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
"Δεν θα είναι δυνατή η απενεργοποίηση της κρυπτογράφησης αφού ενεργοποιηθεί."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2067,18 +2091,18 @@ msgstr "Άνοιγμα ιδιωτικής συνομιλίας"
msgid "Copy link"
msgstr "Αντιγραφή συνδέσμου"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Επαλήθευση συνεδρίας"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Συναίνεση χρήστη"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2088,17 +2112,17 @@ msgstr ""
"πριν τον χρησιμοποιήσεις. Κάνε κλικ στο παρακάτω κουμπί για να τους "
"διαβάσεις."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Άνοιγμα"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Έναρξη συνομιλίας"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Θέλεις να ξεκινήσεις συνομιλία με τον %1;"
@@ -2293,7 +2317,7 @@ msgid "Ban"
msgstr "Αποκλεισμός"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2372,27 +2396,27 @@ msgstr "Αναζήτηση για το '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Διαμόρφωση συντομεύσεων ιστού..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Αφαίρεση μηνυμάτων"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Αφαίρεση μηνύματος"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Αιτία αφαίρεσης των πρόσφατων μηνυμάτων αυτού του χρήστη"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Αιτία αφαίρεσης αυτού του μηνύματος"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2696,8 +2720,8 @@ msgstr "Αποχώρηση από την αίθουσα"
msgid "Explore rooms"
msgstr "Εξερεύνηση αιθουσών"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, fuzzy, kde-format
#| msgid "Rooms and private chats"
msgid "Create rooms and chats"
@@ -2859,31 +2883,37 @@ msgid "Search"
msgstr "Αναζήτηση"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "Αναζήτηση σε αυτήν την αίθουσα"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Αφαίρεση αίθουσας από τις προτιμώμενες"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Να γίνει η αίθουσα προτιμώμενη"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Μέλη"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Αναζήτηση χρήστη στην αίθουσα"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Πρόσκληση χρήστη στην αίθουσα"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "%1 Member"
#| msgid_plural "%1 Members"
@@ -2892,29 +2922,29 @@ msgid_plural "%1 members"
msgstr[0] "%1 μέλος"
msgstr[1] "%1 μέλη"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "No Member Count"
msgid "No member count"
msgstr "Δεν καταμετρήθηκαν μέλη"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Γενικά"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Ασφάλεια"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Δικαιώματα"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Ειδοποιήσεις"
@@ -4162,9 +4192,6 @@ msgstr "Έξοδος"
#~ msgid "Save as"
#~ msgstr "Αποθήκευση ως"
#~ msgid "Close"
#~ msgstr "Κλείσιμο"
#~ msgid " (edited)"
#~ 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: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-05-21 15:04+0100\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-17 12:19+0100\n"
"Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n"
"Language-Team: British English\n"
"Language: en_GB\n"
@@ -78,16 +78,14 @@ msgid "Contact your matrix server administrator for support."
msgstr "Contact your matrix server administrator for support."
#: src/controller.cpp:531
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
#, kde-format
msgid "Room creation failed: %1"
msgstr "Room creation failed: \"%1\""
msgstr "Room creation failed: %1"
#: src/controller.cpp:552
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
#, kde-format
msgid "Space creation failed: %1"
msgstr "Room creation failed: \"%1\""
msgstr "Space creation failed: %1"
#: src/controller.cpp:566
#, kde-format
@@ -123,90 +121,90 @@ msgstr "Destination"
msgid "Network Error"
msgstr "Network Error"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix client"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2023 KDE Community"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Maintainer"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Original author of Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Maintainer of Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Steve Allewell"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "steve.allewell@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "A Qt5 library to write cross-platform clients for Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (built against %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Client for the matrix communication protocol"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Supports matrix: URL scheme"
@@ -630,18 +628,16 @@ msgid "Custom"
msgstr "Custom"
#: src/models/imagepacksmodel.cpp:90
#, fuzzy, kde-format
#| msgid "Own Stickers"
#, kde-format
msgctxt "As in 'The user's own Stickers'"
msgid "Own Stickers"
msgstr "Own Stickers"
#: src/models/imagepacksmodel.cpp:90
#, fuzzy, kde-format
#| msgid "Emojis"
#, kde-format
msgctxt "As in 'The user's own emojis"
msgid "Own Emojis"
msgstr "Emojis"
msgstr "Own Emojis"
#: src/models/messageeventmodel.cpp:477 src/models/messageeventmodel.cpp:486
#, kde-format
@@ -653,24 +649,24 @@ msgstr "<i>[This message was deleted]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[This message was deleted: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[REDACTED]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[REDACTED: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "1 user: "
msgstr[1] "%1 users: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1085,7 +1081,7 @@ msgstr "Lat: %1, Lon: %2"
msgid "Encrypted Message"
msgstr "Encrypted Message"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1298,10 +1294,9 @@ msgid "Available Room Versions"
msgstr "Available Room Versions"
#: src/qml/Component/Emoji/EmojiGrid.qml:83
#, fuzzy, kde-format
#| msgid "Stickers"
#, kde-format
msgid "No stickers"
msgstr "Stickers"
msgstr "No stickers"
#: src/qml/Component/Emoji/EmojiGrid.qml:83
#, kde-format
@@ -1322,6 +1317,17 @@ msgstr "Emojis"
msgid "Stickers"
msgstr "Stickers"
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "Send a Location"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Close"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1348,6 +1354,19 @@ msgstr "Reject"
msgid "Accept"
msgstr "Accept"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Notifications"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "You are already in this room."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1581,22 +1600,22 @@ msgstr "Choose local file"
msgid "Clipboard image"
msgstr "Clipboard image"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Jump to first unread message"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Jump to latest message"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Drag items here to share them"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1604,20 +1623,20 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 is typing"
msgstr[1] "%2 are typing"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Activate Encryption"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
"It will not be possible to deactivate the encryption after it is enabled."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1660,38 +1679,30 @@ msgstr "Ok"
#: src/qml/Dialog/CreateSpaceDialog.qml:15
#: src/qml/Page/RoomList/ExploreComponent.qml:40
#, fuzzy, kde-format
#| msgctxt "'Space' is a matrix space"
#| msgid "Leave Space"
#, kde-format
msgid "Create a Space"
msgstr "Leave Space"
msgstr "Create a Space"
#: src/qml/Dialog/CreateSpaceDialog.qml:23
#, fuzzy, kde-format
#| msgctxt "'Space' is a matrix space"
#| msgid "Leave Space"
#, kde-format
msgctxt "@title"
msgid "Create a Space"
msgstr "Leave Space"
msgstr "Create a Space"
#: src/qml/Dialog/CreateSpaceDialog.qml:27
#, fuzzy, kde-format
#| msgctxt "@option:check"
#| msgid "Space members"
#, kde-format
msgid "Space name"
msgstr "Space members"
msgstr "Space name"
#: src/qml/Dialog/CreateSpaceDialog.qml:31
#, kde-format
msgid "Space topic (optional)"
msgstr ""
msgstr "Space topic (optional)"
#: src/qml/Dialog/CreateSpaceDialog.qml:34
#, fuzzy, kde-format
#| msgctxt "'Space' is a matrix space"
#| msgid "Leave Space"
#, kde-format
msgid "Create space"
msgstr "Leave Space"
msgstr "Create space"
#: src/qml/Dialog/KeyVerification/EmojiSas.qml:23
#, kde-format
@@ -2013,18 +2024,18 @@ msgstr "Open a private chat"
msgid "Copy link"
msgstr "Copy link"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Session Verification"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "User consent"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2033,17 +2044,17 @@ msgstr ""
"Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Open"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Start a chat"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Do you want to start a chat with %1?"
@@ -2238,7 +2249,7 @@ msgid "Ban"
msgstr "Ban"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2317,27 +2328,27 @@ msgstr "Search for '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Configure Web Shortcuts..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Remove Messages"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Remove Message"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Reason for removing this user's recent messages"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Reason for removing this message"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2638,8 +2649,8 @@ msgstr "Leave Room"
msgid "Explore rooms"
msgstr "Explore rooms"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Create rooms and chats"
@@ -2798,59 +2809,65 @@ msgid "Search"
msgstr "Search"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "Search in this room"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Remove room from favourites"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Make room favourite"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Members"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Search user in room"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Invite user to room"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 member"
msgstr[1] "%1 members"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "No member count"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "General"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Security"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Permissions"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Notifications"
@@ -3505,19 +3522,17 @@ msgstr "Add Sticker"
#: src/qml/Settings/EmoticonEditorPage.qml:31
#: src/qml/Settings/EmoticonFormCard.qml:59
#, fuzzy, kde-format
#| msgid "Add Emoji..."
#, kde-format
msgctxt "@title"
msgid "Edit Emoji"
msgstr "Add Emoji..."
msgstr "Edit Emoji"
#: src/qml/Settings/EmoticonEditorPage.qml:31
#: src/qml/Settings/EmoticonFormCard.qml:109
#, fuzzy, kde-format
#| msgid "Add Emoji..."
#, kde-format
msgctxt "@title"
msgid "Add Emoji"
msgstr "Add Emoji..."
msgstr "Add Emoji"
#: src/qml/Settings/EmoticonEditorPage.qml:40
#, kde-format
@@ -3525,10 +3540,9 @@ msgid "Sticker"
msgstr "Sticker"
#: src/qml/Settings/EmoticonEditorPage.qml:40
#, fuzzy, kde-format
#| msgid "Emojis"
#, kde-format
msgid "Emoji"
msgstr "Emojis"
msgstr "Emoji"
#: src/qml/Settings/EmoticonEditorPage.qml:69
#, kde-format
@@ -3551,18 +3565,15 @@ msgid "Description:"
msgstr "Description:"
#: src/qml/Settings/EmoticonFormCard.qml:77
#, fuzzy, kde-format
#| msgctxt "As in 'This sticker has no description'"
#| msgid "No Description"
#, kde-format
msgctxt "As in 'This sticker/emoji has no description'"
msgid "No Description"
msgstr "No Description"
#: src/qml/Settings/EmoticonFormCard.qml:118
#, fuzzy, kde-format
#| msgid "Add Emoji..."
#, kde-format
msgid "Add Emoji"
msgstr "Add Emoji..."
msgstr "Add Emoji"
#: src/qml/Settings/EmoticonFormCard.qml:118
#, kde-format
@@ -3852,10 +3863,9 @@ msgid "Appearance"
msgstr "Appearance"
#: src/qml/Settings/SettingsPage.qml:37
#, fuzzy, kde-format
#| msgid "Stickers"
#, kde-format
msgid "Stickers & Emojis"
msgstr "Stickers"
msgstr "Stickers & Emojis"
#: src/qml/Settings/SettingsPage.qml:44
#, kde-format
@@ -4067,9 +4077,6 @@ msgstr "Quit"
#~ msgid "Save as"
#~ msgstr "Save as"
#~ msgid "Close"
#~ msgstr "Close"
#~ msgid " (edited)"
#~ msgstr " (edited)"

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-06-10 00:57+0200\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-25 00:57+0200\n"
"Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n"
"Language-Team: Spanish <kde-l10n-es@kde.org>\n"
"Language: es\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 23.04.1\n"
"X-Generator: Lokalize 23.04.2\n"
#: src/controller.cpp:262
#, kde-format
@@ -126,91 +126,91 @@ msgstr "Destino"
msgid "Network Error"
msgstr "Error de red"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Cliente para Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2023 La Comunidad KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Responsable"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Autor original de Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Responsable de Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Eloy Cuadra"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "ecuadra@eloihr.net"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
"Biblioteca Qt5 para la escritura de clientes multiplataforma para Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (compilado con %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Cliente para el protocolo de comunicaciones Matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Permite el esquema de URL «matrix:»"
@@ -655,24 +655,24 @@ msgstr "<i>[Este mensaje ha sido borrado]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Este mensaje ha sido borrado: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[CORREGIDO]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[CORREGIDO: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "1 usuario: "
msgstr[1] "%1 usuarios: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1087,7 +1087,7 @@ msgstr "Lat: %1, Lon: %2"
msgid "Encrypted Message"
msgstr "Mensaje cifrado"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1323,6 +1323,16 @@ msgstr "Emojis"
msgid "Stickers"
msgstr "Pegatinas"
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr "Ver ubicación"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Cerrar"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1349,6 +1359,17 @@ msgstr "Rechazar"
msgid "Accept"
msgstr "Aceptar"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Ubicaciones"
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr "No hay ubicaciones compartidas en esta sala."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1582,22 +1603,22 @@ msgstr "Escoger archivo local"
msgid "Clipboard image"
msgstr "Imagen del portapapeles"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Saltar al primer mensaje sin leer"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Saltar al último mensaje"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Arrastre elementos aquí para compartirlos"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1605,19 +1626,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 está escribiendo"
msgstr[1] "%2 están escribiendo"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Activar cifrado"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "No se podrá desactivar el cifrado tras activarlo."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2012,18 +2033,18 @@ msgstr "Abrir un chat privado"
msgid "Copy link"
msgstr "Copiar enlace"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Verificación de la sesión"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Consentimiento del usuario"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2032,17 +2053,17 @@ msgstr ""
"Su servidor doméstico necesita que esté de acuerdo con sus términos y "
"condiciones antes de que pueda usarlo. Pulse el botón inferior para leerlos."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Abrir"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Iniciar un chat"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "¿Desea iniciar un chat con %1?"
@@ -2237,7 +2258,7 @@ msgid "Ban"
msgstr "Inhabilitar"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2316,27 +2337,27 @@ msgstr "Buscar «%1»"
msgid "Configure Web Shortcuts..."
msgstr "Configurar accesos rápidos web..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Eliminar mensajes"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Eliminar mensaje"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Motivo para eliminar los mensajes recientes de este usuario"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Motivo para eliminar este mensaje"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2637,8 +2658,8 @@ msgstr "Salir de la sala"
msgid "Explore rooms"
msgstr "Explorar salas"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Crear salas y chats"
@@ -2798,58 +2819,63 @@ msgstr "Buscar"
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr "Mostrar ubicaciones de esta sala"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Eliminar sala de las favoritas"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Poner sala en favoritas"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Miembros"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Buscar usuario en la sala"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Invitar usuario a la sala"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 miembro"
msgstr[1] "%1 miembros"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Sin contador de miembros"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "General"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Seguridad"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Permisos"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Notificaciones"
@@ -4077,9 +4103,6 @@ msgstr "Salir"
#~ msgid "Save as"
#~ msgstr "Guardar como"
#~ msgid "Close"
#~ msgstr "Cerrar"
#~ msgid " (edited)"
#~ msgstr " (editado)"

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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-04-22 21:58+0200\n"
"Last-Translator: Iñigo Salvador Azurmendi <xalba@ni.eus>\n"
"Language-Team: Basque <kde-i18n-eu@kde.org>\n"
@@ -129,91 +129,91 @@ msgstr "Jomuga"
msgid "Network Error"
msgstr "Sareko errorea"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix bezeroa"
#: src/main.cpp:165
#: src/main.cpp:168
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020-2022 KDE Community"
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2022 KDE komunitatea"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Arduraduna"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "«Spectral»en Jatorrizko egilea"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "«Quotient»en arduraduna"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Iñigo Salvador Azurmendi"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "xalba@ni.eus"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Plataforma anitzeko Matrix bezeroak idazteko Qt5 liburutegi bat"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (%2 erabiliz eraikia)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Matrix, deszentralizatutako komunikazio protokolorako bezeroa"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "matrix onartzen du: URL eskema"
@@ -661,24 +661,24 @@ msgstr "<i>[Mezu hau ezabatu egin da]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Mezu hau ezabatu egin da: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[ERREDAKZIO LANA DU]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[ERREDAKZIOAK LANA DU: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "Erabiltzaile 1:"
msgstr[1] "%1 erabiltzaile:"
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1094,7 +1094,7 @@ msgstr "Lat: %1, Lon: %2"
msgid "Encrypted Message"
msgstr "Zifratutako mezua"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1339,6 +1339,17 @@ msgstr "Emojirik gabe"
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "Bidali kokaleku bat"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Itxi"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1365,6 +1376,19 @@ msgstr "Errefusatu"
msgid "Accept"
msgstr "Onartu"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Jakinarazpenak"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Dagoeneko gela honetan zaude."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1597,22 +1621,22 @@ msgstr "Hautatu tokiko fitxategia"
msgid "Clipboard image"
msgstr "Arbelako irudia"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Jauzi irakurri gabeko lehenengo mezura"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Jauzi azken mezura"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Arrastatu elementuak hona haiek partekatzeko"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1620,19 +1644,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 tekleatzen ari da"
msgstr[1] "%2 tekleatzen ari dira"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Aktibatu zifratzea"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "Ezingo da zifratzea desgaitu behin hura gaitu denean."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2026,18 +2050,18 @@ msgstr "Ireki berriketa pribatu bat"
msgid "Copy link"
msgstr "Kopiatu esteka"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Saioa egiaztatzea"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Erabiltzailearen onarpena"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2047,17 +2071,17 @@ msgstr ""
"terminoak eta baldintzak onartzea eskatzen dizu. Mesedez, egiozu klik beheko "
"botoiari haiek irakurtzeko."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Ireki"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Hasi berriketa bat"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "%1(r)ekin berriketa bat abiatu nahi duzu?"
@@ -2252,7 +2276,7 @@ msgid "Ban"
msgstr "Debekua"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2331,27 +2355,27 @@ msgstr "Bilatu «%1»"
msgid "Configure Web Shortcuts..."
msgstr "Konfiguratu web-lasterbideak..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Kendu mezuak"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Kendu mezua"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Erabiltzaile horren azken aldiko mezuak kentzeko arrazoia"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Mezu hori kentzeko arrazoia"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2652,8 +2676,8 @@ msgstr "Irten gelatik"
msgid "Explore rooms"
msgstr "Esploratu gelak"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Gelak eta berriketak sortzea"
@@ -2814,59 +2838,65 @@ msgid "Search"
msgstr "Bilatu"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "Bilatu gela honetan"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Kendu gela gogokoetatik"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Egin gela gogoko"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Partaideak"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Bilatu erabiltzailea gelan"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Gonbidatu erabiltzaile bat gelara"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "Partaide %1"
msgstr[1] "%1 partaide"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Ez dago partaide kopururik"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Orokorra"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Segurtasuna"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Baimenak"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Jakinarazpenak"
@@ -4096,9 +4126,6 @@ msgstr "Irten"
#~ msgid "Save as"
#~ msgstr "Gorde honela"
#~ msgid "Close"
#~ msgstr "Itxi"
#~ msgid " (edited)"
#~ msgstr "(editatu da)"

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: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-04-20 12:39+0300\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-02 20:04+0300\n"
"Last-Translator: Tommi Nieminen <translator@legisign.org>\n"
"Language-Team: Finnish <kde-i18n-doc@kde.org>\n"
"Language: fi\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 22.12.3\n"
"X-Generator: Lokalize 23.04.1\n"
#: src/controller.cpp:262
#, kde-format
@@ -123,91 +123,90 @@ msgstr "Kohde"
msgid "Network Error"
msgstr "Verkkovirhe"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix-asiakas"
#: src/main.cpp:165
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020-2022 KDE Community"
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 20182020 Black Hat, 20202022 KDE-yhteisö"
msgstr "© 20182020 Black Hat, 20202023 KDE-yhteisö"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Ylläpitäjä"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Spectralin alkuperäinen tekijä"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Quotientin ylläpitäjä"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Tommi Nieminen"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "translator@legisign.org"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Qt5-kirjasto eri alustojen asiakkaiden Matrix-kirjoitukseen"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (koostettu kirjastolla %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Matrix-viestintäyhteyskäytäntöasiakas"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Tukee matrix:-verkko-osoitemallia"
@@ -654,24 +653,24 @@ msgstr "<i>[Tämä viesti on poistettu]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Tämä viesti on poistettu: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[MUOKATTU]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[MUOKATTU: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "1 käyttäjä: "
msgstr[1] "%1 käyttäjää: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1087,7 +1086,7 @@ msgstr "Lev: %1, pit: %2"
msgid "Encrypted Message"
msgstr "Salattu viesti"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1155,7 +1154,7 @@ msgstr "Liitä kuva tai tiedosto"
#: src/qml/Component/ChatBox/ChatBar.qml:89
#, kde-format
msgid "Emojis & Stickers"
msgstr ""
msgstr "Emojit ja tarrat"
#: src/qml/Component/ChatBox/ChatBar.qml:105
#, kde-format
@@ -1248,10 +1247,9 @@ msgid "Replying to:"
msgstr "Vastataan:"
#: src/qml/Component/Devtools/RoomData.qml:20
#, fuzzy, kde-format
#| msgid "Rooms"
#, kde-format
msgid "Room"
msgstr "Huoneet"
msgstr "Huone"
#: src/qml/Component/Devtools/RoomData.qml:31
#, fuzzy, kde-format
@@ -1260,15 +1258,14 @@ msgid "Show m.room.member events"
msgstr "Näytä nimenvaihtotapahtumat"
#: src/qml/Component/Devtools/RoomData.qml:43
#, fuzzy, kde-format
#| msgid "No rooms found"
#, kde-format
msgid "Show room account data"
msgstr "Huoneita ei löytynyt"
msgstr "Näytä huoneen tilitiedot"
#: src/qml/Component/Devtools/RoomData.qml:54
#, kde-format
msgid "Room Account Data for %1 - %2"
msgstr ""
msgstr "Huoneen tilitiedot: %1 %2"
#: src/qml/Component/Devtools/RoomData.qml:64
#: src/qml/Component/Devtools/RoomData.qml:106
@@ -1278,33 +1275,29 @@ msgid "Event Source"
msgstr "Tapahtumalähde"
#: src/qml/Component/Devtools/RoomData.qml:78
#, fuzzy, kde-format
#| msgid "Room State - %1"
#, kde-format
msgid "Room State for %1"
msgstr "Huoneen tila %1"
#: src/qml/Component/Devtools/ServerData.qml:20
#, kde-format
msgid "Server Capabilities"
msgstr ""
msgstr "Palvelimen ominaisuudet"
#: src/qml/Component/Devtools/ServerData.qml:23
#, fuzzy, kde-format
#| msgid "Confirm new Password:"
#, kde-format
msgid "Can change password"
msgstr "Vahvista uusi salasana:"
msgstr "Voi vaihtaa salasanansa"
#: src/qml/Component/Devtools/ServerData.qml:33
#, fuzzy, kde-format
#| msgid "Default permissions"
#, kde-format
msgid "Default Room Version"
msgstr "Oletusluvat"
msgstr "Huoneen oletusversio"
#: src/qml/Component/Devtools/ServerData.qml:45
#, fuzzy, kde-format
#| msgid "Room version"
#, kde-format
msgid "Available Room Versions"
msgstr "Huoneen versio"
msgstr "Huoneen saatavilla olevat versiot"
#: src/qml/Component/Emoji/EmojiGrid.qml:83
#, fuzzy, kde-format
@@ -1320,17 +1313,27 @@ msgstr "Ei emojeja"
#: src/qml/Component/Emoji/EmojiPicker.qml:47
#: src/qml/Settings/EmoticonFormCard.qml:28
#: src/qml/Settings/EmoticonsPage.qml:16
#, fuzzy, kde-format
#| msgid "No emojis"
#, kde-format
msgid "Emojis"
msgstr "Ei emojeja"
msgstr "Emojit"
#: src/qml/Component/Emoji/EmojiPicker.qml:54
#: src/qml/Settings/EmoticonFormCard.qml:28
#: src/qml/Settings/EmoticonsPage.qml:16
#, kde-format
msgid "Stickers"
msgstr ""
msgstr "Tarrat"
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "Lähetä sijainti"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Sulje"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
@@ -1358,6 +1361,19 @@ msgstr "Hylkää"
msgid "Accept"
msgstr "Hyväksy"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Ilmoitukset"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Olet jo tässä huoneessa."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1578,7 +1594,7 @@ msgstr "Äänenvoimakkuus"
#: src/qml/Component/Timeline/VideoDelegate.qml:353
#, kde-format
msgid "Maximize"
msgstr ""
msgstr "Suurenna"
#: src/qml/Component/TimelineView.qml:126
#, kde-format
@@ -1590,22 +1606,22 @@ msgstr "Valitse paikallinen tiedosto"
msgid "Clipboard image"
msgstr "Leikepöydän kuva"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Hyppää ensimmäiseen lukemattomaan viestiin"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Hyppää viimeisimpään viestiin"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Jaa kohteita vetämällä ne tähän"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1613,19 +1629,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 kirjoittaa"
msgstr[1] "%2 kirjoittavat"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Aktivoi salaus"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "Salausta ei voi passivoida, kun se on otettu käyttöön."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2012,18 +2028,18 @@ msgstr "Avaa yksityiskeskustelu"
msgid "Copy link"
msgstr "Kopioi linkki"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Istunnon todennus"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Käyttäjän suostumus"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2032,17 +2048,17 @@ msgstr ""
"Kotipalvelimesi vaatii sinua hyväksymään käyttöehdot ennen kuin voit käyttää "
"sitä. Lue ehdot napsauttamalla alla olevaa painiketta."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Avaa"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Aloita keskustelu"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Haluatko käynnistää keskustelun henkilön %1 kanssa?"
@@ -2237,7 +2253,7 @@ msgid "Ban"
msgstr "Estä"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2317,27 +2333,27 @@ msgid "Configure Web Shortcuts..."
msgstr "WWW-pikavalintojen asetukset…"
# Voisi olla myös ”Poista viestejä”, jos on valikossa…
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Poista viestit"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Poista viesti"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Syy tämän käyttäjän viimeisimpien viestien poistamiseen"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Syy viestin poistamiseen"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2437,7 +2453,7 @@ msgstr "Lähetä kutsu"
#: src/qml/Page/InviteUserPage.qml:100
#, kde-format
msgid "User is either already a member or has been invited"
msgstr ""
msgstr "Käyttäjä joko on jo jäsen tai on kutsuttu jäseneksi"
#: src/qml/Page/JoinRoomPage.qml:21
#, kde-format
@@ -2638,8 +2654,8 @@ msgstr "Poistu huoneesta"
msgid "Explore rooms"
msgstr "Tutki huoneita"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Luo huoneita ja keskusteluja"
@@ -2670,11 +2686,9 @@ msgid "Configure room"
msgstr "Huoneen asetukset"
#: src/qml/Page/RoomList/SpaceDrawer.qml:63
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Show All Rooms"
#, kde-format
msgid "All Rooms"
msgstr "Näytä kaikki huoneet"
msgstr "Kaikki huoneet"
#: src/qml/Page/RoomList/SpaceListContextMenu.qml:25
#, kde-format
@@ -2800,59 +2814,65 @@ msgid "Search"
msgstr "Etsi"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "Etsi tästä huoneesta"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Poista huone suosikeista"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Merkitse huone suosikiksi"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Jäsenet"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Etsi huoneesta käyttäjää"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Kutsu käyttäjä huoneeseen"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 jäsen"
msgstr[1] "%1 jäsentä"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Ei jäsenmäärää"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Perusasetukset"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Tietoturva"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Käyttöoikeudet"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Ilmoitukset"
@@ -3490,19 +3510,17 @@ msgstr "Salasana:"
#: src/qml/Settings/EmoticonEditorPage.qml:30
#: src/qml/Settings/EmoticonFormCard.qml:59
#, fuzzy, kde-format
#| msgid "Edit device"
#, kde-format
msgctxt "@title"
msgid "Edit Sticker"
msgstr "Muokkaa laitetta"
msgstr "Muokkaa tarraa"
#: src/qml/Settings/EmoticonEditorPage.qml:30
#: src/qml/Settings/EmoticonFormCard.qml:109
#, fuzzy, kde-format
#| msgid "sent a sticker"
#, kde-format
msgctxt "@title"
msgid "Add Sticker"
msgstr "lähetti tarran"
msgstr "Lisää tarra"
#: src/qml/Settings/EmoticonEditorPage.qml:31
#: src/qml/Settings/EmoticonFormCard.qml:59
@@ -3521,10 +3539,9 @@ msgid "Add Emoji"
msgstr "Lisää emoji…"
#: src/qml/Settings/EmoticonEditorPage.qml:40
#, fuzzy, kde-format
#| msgid "sent a sticker"
#, kde-format
msgid "Sticker"
msgstr "lähetti tarran"
msgstr "Tarra"
#: src/qml/Settings/EmoticonEditorPage.qml:40
#, fuzzy, kde-format
@@ -3533,27 +3550,24 @@ msgid "Emoji"
msgstr "Ei emojeja"
#: src/qml/Settings/EmoticonEditorPage.qml:69
#, fuzzy, kde-format
#| msgid "Change the room name"
#, kde-format
msgid "Change Image"
msgstr "Muuta huoneen nimeä"
msgstr "Vaihda kuva"
#: src/qml/Settings/EmoticonEditorPage.qml:69
#, kde-format
msgid "Set Image"
msgstr ""
msgstr "Aseta kuva"
#: src/qml/Settings/EmoticonEditorPage.qml:109
#, kde-format
msgid "Shortcode:"
msgstr ""
msgstr "Lyhytkoodi:"
#: src/qml/Settings/EmoticonEditorPage.qml:114
#, fuzzy, kde-format
#| msgctxt "The location being downloaded to"
#| msgid "Destination"
#, kde-format
msgid "Description:"
msgstr "Kohde"
msgstr "Kuvaus:"
#: src/qml/Settings/EmoticonFormCard.qml:77
#, fuzzy, kde-format
@@ -3570,10 +3584,9 @@ msgid "Add Emoji"
msgstr "Lisää emoji…"
#: src/qml/Settings/EmoticonFormCard.qml:118
#, fuzzy, kde-format
#| msgid "sent a sticker"
#, kde-format
msgid "Add Sticker"
msgstr "lähetti tarran"
msgstr "Lisää tarra"
#: src/qml/Settings/GeneralSettingsPage.qml:15
#: src/qml/Settings/NetworkProxyPage.qml:14
@@ -3878,9 +3891,7 @@ msgid "About KDE"
msgstr "Tietoa KDE:stä"
#: src/qml/Settings/SonnetConfigPage.qml:28
#, fuzzy, kde-format
#| msgctxt "@window:title"
#| msgid "Spellchecking"
#, kde-format
msgid "Spellchecking"
msgstr "Oikeinkirjoituksen tarkistus"
@@ -3912,13 +3923,12 @@ msgstr "Valittu oletuskieli:"
#: src/qml/Settings/SonnetConfigPage.qml:82
#, kde-format
msgid "None"
msgstr ""
msgstr "Ei mitään"
#: src/qml/Settings/SonnetConfigPage.qml:101
#, fuzzy, kde-format
#| msgid "Spell checking languages"
#, kde-format
msgid "Additional spell checking languages"
msgstr "Oikeinkirjoituksen tarkistuksen kielet"
msgstr "Oikeinkirjoituksen tarkistuksen lisäkielet"
#: src/qml/Settings/SonnetConfigPage.qml:102
#, kde-format
@@ -3935,18 +3945,16 @@ msgid "Open Personal Dictionary"
msgstr "Avaa henkilökohtainen sanasto"
#: src/qml/Settings/SonnetConfigPage.qml:125
#, fuzzy, kde-format
#| msgid "Spell checking languages"
#, kde-format
msgctxt "@title:window"
msgid "Spell checking languages"
msgstr "Oikeinkirjoituksen tarkistuksen kielet"
#: src/qml/Settings/SonnetConfigPage.qml:134
#: src/qml/Settings/SonnetConfigPage.qml:144
#, fuzzy, kde-format
#| msgid "Selected default language:"
#, kde-format
msgid "Default Language"
msgstr "Valittu oletuskieli:"
msgstr "Oletuskieli"
#: src/qml/Settings/SonnetConfigPage.qml:156
#, kde-format
@@ -4076,9 +4084,6 @@ msgstr "Lopeta"
#~ msgid "Save as"
#~ msgstr "Tallenna nimellä"
#~ msgid "Close"
#~ msgstr "Sulje"
#~ msgid " (edited)"
#~ msgstr "(muokattu)"

View File

@@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-07 09:43+0200\n"
"Last-Translator: Xavier BESNARD <xavier.besnard@neuf.fr>\n"
"Language-Team: fr\n"
@@ -123,91 +123,91 @@ msgstr "Destination"
msgid "Network Error"
msgstr "Erreur du réseau"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Client « Matrix »"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat 2020-2023 Communauté de KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Mainteneur"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Auteur initial de Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Mainteneur de Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Xavier Besnard"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "xavier.besnard@neuf.fr"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
"Une bibliothèque Qt5 pour écrire des clients multi-plate-formes pour Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (compilé en regard de %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Un client pour le protocole de communications  Matrix »"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Prend en charge le thème d'URL « matrix : »"
@@ -659,24 +659,24 @@ msgstr "<i>[Ce message a été supprimé]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Ce message a été supprimé : %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[RÉDIGÉ]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[RÉDIGÉ : %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] " utilisateur %1 :"
msgstr[1] " %1 utilisateurs :"
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1091,7 +1091,7 @@ msgstr "Lat : %1, Long : %2"
msgid "Encrypted Message"
msgstr "Message chiffré"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1 : %2"
@@ -1328,6 +1328,17 @@ msgstr "Émoticônes"
msgid "Stickers"
msgstr "Étiquettes auto-collantes"
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "Envoyer un emplacement"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Fermer"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1354,6 +1365,19 @@ msgstr "Rejeter"
msgid "Accept"
msgstr "Accepter"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Notifications"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Vous êtes déjà dans ce salon."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1587,22 +1611,22 @@ msgstr "Sélectionner un fichier local"
msgid "Clipboard image"
msgstr "Image du presse-papier"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Aller au premier message non lu."
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Aller au message le plus ancien."
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Faites glisser les éléments ici pour les partager"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1610,13 +1634,13 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 est entrain d'écrire"
msgstr[1] "%2 sont entrain d'écrire"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Activer le chiffrement"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
@@ -1624,7 +1648,7 @@ msgstr ""
"Il est impossible de désactiver le chiffrement, une fois que celui-ci est "
"activé."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2026,18 +2050,18 @@ msgstr "Ouvrir un salon privé"
msgid "Copy link"
msgstr "Copier un lien"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Vérification de la session"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Consentement de l'utilisateur"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2047,17 +2071,17 @@ msgstr ""
"avant de pouvoir l'utiliser. Veuillez cliquer sur le bouton ci-dessous pour "
"les lire."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Ouvrir"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Démarrer une conversation"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Voulez-vous démarrer une discussion avec %1 ?"
@@ -2252,7 +2276,7 @@ msgid "Ban"
msgstr "Bannir"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2331,27 +2355,27 @@ msgstr "Rechercher « %1 »"
msgid "Configure Web Shortcuts..."
msgstr "Configurer les raccourcis Internet..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Supprimer des messages"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Supprimer un message"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Raison pour la suppression des messages récents de cet utilisateur"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Raison pour la suppression de ce message"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2652,8 +2676,8 @@ msgstr "Quitter un salon"
msgid "Explore rooms"
msgstr "Explorer les salons"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Créer des salons et des fils de discussions"
@@ -2812,59 +2836,65 @@ msgid "Search"
msgstr "Rechercher"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "Rechercher dans ce salon"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Supprimer le salon des signets"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Ajouter le salon comme signet"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Membres"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Rechercher un utilisateur dans un salon"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Inviter des utilisateurs dans un salon"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "Membre %1"
msgstr[1] "%1 membres"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Aucun numéro de membre"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Général"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Sécurité"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Permissions"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Notifications"
@@ -4099,9 +4129,6 @@ msgstr "Quitter"
#~ msgid "Save as"
#~ msgstr "Enregistrer sous"
#~ msgid "Close"
#~ msgstr "Fermer"
#~ msgid " (edited)"
#~ msgstr " (modifié)"

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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-05-09 22:36+0200\n"
"Last-Translator: K. Áron <aronkvh@gmail.com>\n"
"Language-Team: Hungarian <kde-l10n-hu@kde.org>\n"
@@ -129,91 +129,91 @@ msgstr "Célhely"
msgid "Network Error"
msgstr "Hálózati hiba"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix kliens"
#: src/main.cpp:165
#: src/main.cpp:168
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020-2022 KDE Community"
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© Black Hat, 2018-2020, A KDE közösség, 2020-2022"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Karbantartó"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "A Spectral eredeti készítője"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "A Quotient karbantartója"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Kiszel Kristóf, Kovács Áron"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "kiszel.kristof@gmail.com, aronkvh@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Qt5 könyvtár cross-platform Matrix kliensek létrehozásához"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (fordítva ezzel: %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Kliens a matrix kommunikációs protokollhoz"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Támogatja a 'matrix:' url sémát"
@@ -661,24 +661,24 @@ msgstr "<i>[Törölt üzenet]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Törölt üzenet: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[KITAKARVA]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[KITAKARVA: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "1 felhasználó: "
msgstr[1] "%1 felhasználó: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1093,7 +1093,7 @@ msgstr "Hossz.: %1, Szél.: %2"
msgid "Encrypted Message"
msgstr "Titkosított üzenet"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1331,6 +1331,17 @@ msgstr "Emojik"
msgid "Stickers"
msgstr "Matricák"
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "Meghívás Hely"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Bezárás"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1357,6 +1368,19 @@ msgstr "Elutasítás"
msgid "Accept"
msgstr "Elfogadás"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Értesítések"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Már tagja vagy ennek a szobának."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1590,22 +1614,22 @@ msgstr "Helyi fájl kiválasztása"
msgid "Clipboard image"
msgstr "Vágólap kép"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Ugrás az első olvasatlan üzenetre"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Ugrás a legújabb üzenetre"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Húzz ide elemeket a megosztásukhoz"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1613,19 +1637,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 gépel"
msgstr[1] "%2 gépel"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "A titkosítás bekapcsolása"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "A titkosítást nem lehet majd kikapcsolni, ha egyszer bekapcsolta."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2019,18 +2043,18 @@ msgstr "Egy privát csevegés megnyitása"
msgid "Copy link"
msgstr "Link másolása"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Munkamenet-ellenőrzés"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Felhasználói hozzájárulás"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2039,17 +2063,17 @@ msgstr ""
"A kezdőkiszolgálója a használati feltételek elfogadását kéri, mielőtt "
"használhatná azt. Kattintson a lenti gombra az elolvasásukhoz."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Megnyitás"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Csevegés indítása"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Szeretnél csevegést indítani vele: %1 ?"
@@ -2244,7 +2268,7 @@ msgid "Ban"
msgstr "Letiltás"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2323,27 +2347,27 @@ msgstr "Keresés: '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Webes parancsikonok konfigurálása ..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Az üzenetek eltávolítása"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Az üzenet eltávolítása"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "A felhasználó legutóbbi üzeneteinek eltávolításának oka"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Az üzenet eltávolításának oka"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2644,8 +2668,8 @@ msgstr "Szoba elhagyása"
msgid "Explore rooms"
msgstr "Szobák felfedezése"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Szobák és privát beszélgetések létrehozása"
@@ -2806,59 +2830,65 @@ msgid "Search"
msgstr "Keresés"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "Keresés a szobában"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Eltávolítás a kedvencek közül"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Kedvenc"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Tagok"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Keresés a szobában lévő felhasználók között"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Meghívás a szobába"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 tag"
msgstr[1] "%1 tag"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Nincs tagszám"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Általános"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Biztonság"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Engedélyek"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Értesítések"
@@ -4099,9 +4129,6 @@ msgstr "Kilépés"
#~ msgid "Save as"
#~ msgstr "Mentés másként"
#~ msgid "Close"
#~ msgstr "Bezárás"
#~ msgid " (edited)"
#~ msgstr "(szerkesztve)"

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: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-06-11 22:43+0200\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-21 22:03+0200\n"
"Last-Translator: giovanni <g.sora@tiscali.it>\n"
"Language-Team: Interlingua <kde-i18n-doc@kde.org>\n"
"Language: ia\n"
@@ -20,7 +20,7 @@ msgstr ""
#: src/controller.cpp:262
#, kde-format
msgid "Login Failed: Access Token invalid or revoked"
msgstr "Accesso falleva: token de accesso invalide o revocate"
msgstr "Accesso falleva: indicio (token) de accesso invalide o revocate"
#: src/controller.cpp:265 src/controller.cpp:270 src/login.cpp:99
#, kde-format
@@ -122,92 +122,92 @@ msgstr "Destination"
msgid "Network Error"
msgstr "Error de rete"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "Neochat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Cliente de Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020 -2023 Communitate de KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Mantenitor"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Autor original de Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Mantenitor de Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Giovanni Sora"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "g.sora@tiscali.it"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
"Un bibliotheca de Qt5 per scriber clientes de cross-platform (platteformas "
"cruciate) per Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (construite contra %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Cliente per le protocollo de cmmmunication de matrice"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Supporta matrix: url schema"
@@ -652,24 +652,24 @@ msgstr "<i>[Iste message ha essite delite]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Iste message esseva delite: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[REAGITE]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[REAGITE: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "1 Usator: "
msgstr[1] "%1 Usatores:"
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1084,7 +1084,7 @@ msgstr "Lat: %1, Lon: %2"
msgid "Encrypted Message"
msgstr "Message Cryptate"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1318,6 +1318,17 @@ msgstr "Emojis"
msgid "Stickers"
msgstr "Etiquettas Gummate (Stickers)"
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "Invia un location"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Claude"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1344,6 +1355,19 @@ msgstr "Rejecta"
msgid "Accept"
msgstr "Accepta"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Notificationes"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Tu ja es in iste sala"
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1577,22 +1601,22 @@ msgstr "Selige file local"
msgid "Clipboard image"
msgstr "Image de Area de transferentia"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Salta al prime message non legite"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Salta al ultime message"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Trahe elementos hic per compartir los"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1600,19 +1624,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 es typante"
msgstr[1] "%2 es typante"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Activa cryptation"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1973,18 +1997,18 @@ msgstr "Aperi in conversation private"
msgid "Copy link"
msgstr "Copia Ligamine"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Veification de Session"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Consenso de usator"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -1994,17 +2018,17 @@ msgstr ""
"conditiones ante poter usar lo. Pro favor tu clicca le button a basso per "
"leger los."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Aperi"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Initia un conversation"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Tu vole initiar un conversation con %1"
@@ -2199,7 +2223,7 @@ msgid "Ban"
msgstr "Prohibi (Ban)"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2278,27 +2302,27 @@ msgstr "Cerca '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Configura vias breve de Web..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Remove messages"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Remove message"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2599,8 +2623,8 @@ msgstr "Lassa sala"
msgid "Explore rooms"
msgstr "Explora salas"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Crea salas e conversationes"
@@ -2759,59 +2783,65 @@ msgid "Search"
msgstr "Cerca"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "Cerca in iste sala"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Remove sala ex favoritos"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Face sala favorite"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Membros"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Cerca usator in sala"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Invita usator a sala"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 Member"
msgstr[1] "%1 Membros"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Necun computo de membro"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "General"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Securitate"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Permissiones"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Notificationes"
@@ -4014,9 +4044,6 @@ msgstr "Quita"
#~ msgid "Save as"
#~ msgstr "Salveguarda como"
#~ msgid "Close"
#~ msgstr "Claude"
#~ msgid " (edited)"
#~ msgstr "(edited)"

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: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-05-19 10:51+0700\n"
"POT-Creation-Date: 2023-06-24 00:50+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"
"Language: id\n"
@@ -80,16 +80,14 @@ msgid "Contact your matrix server administrator for support."
msgstr "Hubungi administrator server Matrix Anda untuk dukungan."
#: src/controller.cpp:531
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
#, kde-format
msgid "Room creation failed: %1"
msgstr "Pembuatan ruangan gagal: \"%1\""
msgstr "Pembuatan ruangan gagal: %1"
#: src/controller.cpp:552
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
#, kde-format
msgid "Space creation failed: %1"
msgstr "Pembuatan ruangan gagal: \"%1\""
msgstr "Pembuatan space gagal: %1"
#: src/controller.cpp:566
#, kde-format
@@ -125,90 +123,90 @@ msgstr "Tujuan"
msgid "Network Error"
msgstr "Kesalahan Jaringan"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Klien Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2023 Komunitas KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Pemelihara"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Penulis asli Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Pemelihara Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Linerly"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "linerly@protonmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Sebuah pustaka Qt5 untuk membuat klien lintas platform untuk Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (dibangun pada %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Klien untuk protokol komunikasi Matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Mendukung skema URL matrix:"
@@ -635,18 +633,16 @@ msgid "Custom"
msgstr "Kustom"
#: src/models/imagepacksmodel.cpp:90
#, fuzzy, kde-format
#| msgid "Own Stickers"
#, kde-format
msgctxt "As in 'The user's own Stickers'"
msgid "Own Stickers"
msgstr "Stiker Sendiri"
#: src/models/imagepacksmodel.cpp:90
#, fuzzy, kde-format
#| msgid "Emojis"
#, kde-format
msgctxt "As in 'The user's own emojis"
msgid "Own Emojis"
msgstr "Emoji"
msgstr "Emoji Sendiri"
#: src/models/messageeventmodel.cpp:477 src/models/messageeventmodel.cpp:486
#, kde-format
@@ -658,24 +654,24 @@ msgstr "<i>[Pesan ini telah dihapus]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Pesan ini telah dihapus: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[DIHAPUS]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[DIHAPUS: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "%1 pengguna: "
msgstr[1] "%1 pengguna"
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1090,7 +1086,7 @@ msgstr "Lintang: %1, Bujur: %2"
msgid "Encrypted Message"
msgstr "Pesan Terenkripsi"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1303,10 +1299,9 @@ msgid "Available Room Versions"
msgstr "Versi Ruangan yang Tersedia"
#: src/qml/Component/Emoji/EmojiGrid.qml:83
#, fuzzy, kde-format
#| msgid "Stickers"
#, kde-format
msgid "No stickers"
msgstr "Stiker"
msgstr "Tidak ada stiker"
#: src/qml/Component/Emoji/EmojiGrid.qml:83
#, kde-format
@@ -1327,6 +1322,17 @@ msgstr "Emoji"
msgid "Stickers"
msgstr "Stiker"
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "Kirim Lokasi"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Tutup"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1353,6 +1359,19 @@ msgstr "Tolak"
msgid "Accept"
msgstr "Terima"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Notifikasi"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Anda sudah ada di ruangan ini."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1585,22 +1604,22 @@ msgstr "Pilih berkas lokal"
msgid "Clipboard image"
msgstr "Gambar papan klip"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Pergi ke pesan pertama yang belum dibaca"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Pergi ke pesan terkini"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Seret item ke sini untuk membagikannya"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1608,19 +1627,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 sedang mengetik"
msgstr[1] "%2 sedang mengetik"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Aktifkan Enkripsi"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "Menonaktifkan enkripsi tidak dimungkinkan setelah diaktifkan."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1663,38 +1682,30 @@ msgstr "Oke"
#: src/qml/Dialog/CreateSpaceDialog.qml:15
#: src/qml/Page/RoomList/ExploreComponent.qml:40
#, fuzzy, kde-format
#| msgctxt "'Space' is a matrix space"
#| msgid "Leave Space"
#, kde-format
msgid "Create a Space"
msgstr "Tinggalkan Space"
msgstr "Buat Space"
#: src/qml/Dialog/CreateSpaceDialog.qml:23
#, fuzzy, kde-format
#| msgctxt "'Space' is a matrix space"
#| msgid "Leave Space"
#, kde-format
msgctxt "@title"
msgid "Create a Space"
msgstr "Tinggalkan Space"
msgstr "Buat Space"
#: src/qml/Dialog/CreateSpaceDialog.qml:27
#, fuzzy, kde-format
#| msgctxt "@option:check"
#| msgid "Space members"
#, kde-format
msgid "Space name"
msgstr "Anggota space"
msgstr "Nama space"
#: src/qml/Dialog/CreateSpaceDialog.qml:31
#, kde-format
msgid "Space topic (optional)"
msgstr ""
msgstr "Topik space (opsional)"
#: src/qml/Dialog/CreateSpaceDialog.qml:34
#, fuzzy, kde-format
#| msgctxt "'Space' is a matrix space"
#| msgid "Leave Space"
#, kde-format
msgid "Create space"
msgstr "Tinggalkan Space"
msgstr "Buat space"
#: src/qml/Dialog/KeyVerification/EmojiSas.qml:23
#, kde-format
@@ -2010,18 +2021,18 @@ msgstr "Buka sebuah obrolan privat"
msgid "Copy link"
msgstr "Salin tautan"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Verifikasi Sesi"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Persetujuan pengguna"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2030,17 +2041,17 @@ msgstr ""
"Homeserver Anda membutuhkan Anda untuk menerima syarat dan kondisi sebelum "
"Anda dapat menggunakannya. Mohon klik tombol di bawah untuk membacanya."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Buka"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Mulai sebuah obrolan"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Apakah Anda ingin memulai sebuah obrolan dengan %1?"
@@ -2235,7 +2246,7 @@ msgid "Ban"
msgstr "Cekal"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2314,27 +2325,27 @@ msgstr "Cari '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Konfigurasi Pintasan Web..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Hapus Pesan"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Hapus Pesan"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Alasan untuk menghapus pesan terkini pengguna ini"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Alasan untuk menghapus pesan ini"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2635,8 +2646,8 @@ msgstr "Tinggalkan Ruangan"
msgid "Explore rooms"
msgstr "Jelajahi ruangan"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Buat ruangan dan percakapan"
@@ -2795,59 +2806,65 @@ msgid "Search"
msgstr "Cari"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "Cari di ruangan ini"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Hilangkan ruangan dari favorit"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Buat ruangan sebagai favorit"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Anggota"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Cari pengguna di ruangan"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Undang pengguna ke ruangan"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 anggota"
msgstr[1] "%1 Anggota"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Tidak ada hitungan anggota"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Umum"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Keamanan"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Perizinan"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Notifikasi"
@@ -3511,19 +3528,17 @@ msgstr "Tambahkan Stiker"
#: src/qml/Settings/EmoticonEditorPage.qml:31
#: src/qml/Settings/EmoticonFormCard.qml:59
#, fuzzy, kde-format
#| msgid "Add Emoji..."
#, kde-format
msgctxt "@title"
msgid "Edit Emoji"
msgstr "Tambahkan Emoji..."
msgstr "Sunting Emoji"
#: src/qml/Settings/EmoticonEditorPage.qml:31
#: src/qml/Settings/EmoticonFormCard.qml:109
#, fuzzy, kde-format
#| msgid "Add Emoji..."
#, kde-format
msgctxt "@title"
msgid "Add Emoji"
msgstr "Tambahkan Emoji..."
msgstr "Tambahkan Emoji"
#: src/qml/Settings/EmoticonEditorPage.qml:40
#, kde-format
@@ -3531,8 +3546,7 @@ msgid "Sticker"
msgstr "Stiker"
#: src/qml/Settings/EmoticonEditorPage.qml:40
#, fuzzy, kde-format
#| msgid "Emojis"
#, kde-format
msgid "Emoji"
msgstr "Emoji"
@@ -3557,18 +3571,15 @@ msgid "Description:"
msgstr "Deskripsi:"
#: src/qml/Settings/EmoticonFormCard.qml:77
#, fuzzy, kde-format
#| msgctxt "As in 'This sticker has no description'"
#| msgid "No Description"
#, kde-format
msgctxt "As in 'This sticker/emoji has no description'"
msgid "No Description"
msgstr "Tidak ada deskripsi"
#: src/qml/Settings/EmoticonFormCard.qml:118
#, fuzzy, kde-format
#| msgid "Add Emoji..."
#, kde-format
msgid "Add Emoji"
msgstr "Tambahkan Emoji..."
msgstr "Tambahkan Emoji"
#: src/qml/Settings/EmoticonFormCard.qml:118
#, kde-format
@@ -3859,10 +3870,9 @@ msgid "Appearance"
msgstr "Tampilan"
#: src/qml/Settings/SettingsPage.qml:37
#, fuzzy, kde-format
#| msgid "Stickers"
#, kde-format
msgid "Stickers & Emojis"
msgstr "Stiker"
msgstr "Stiker & Emoji"
#: src/qml/Settings/SettingsPage.qml:44
#, kde-format
@@ -4074,9 +4084,6 @@ msgstr "Keluar"
#~ msgid "Save as"
#~ msgstr "Simpan sebagai"
#~ msgid "Close"
#~ msgstr "Tutup"
#~ msgid " (edited)"
#~ msgstr " (disunting)"

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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+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"
@@ -128,92 +128,92 @@ msgstr "Inviar un invitation"
msgid "Network Error"
msgstr "Errore de rete"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Un cliente de Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020-2022 KDE Community"
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2022 li comunité de KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr ""
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "OIS"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "mistresssilvara@hotmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
"Un biblioteca usante Qt5 por scrir transplatformal clientes por Matrix."
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr ""
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Un cliente del protocol de communication Matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, fuzzy, kde-format
msgid "Supports matrix: url scheme"
msgstr "Ínsupportat schema de URL"
@@ -701,24 +701,24 @@ msgstr "<i>[Ti missage esset removet]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Ti missage esset removet: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[CENSURAT]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[CENSURAT: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] ""
msgstr[1] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, fuzzy, kde-format
#| msgctxt "[action 1], [action 2 and action 3]"
#| msgid ", "
@@ -1142,7 +1142,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr "Ciffrat missage"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1387,6 +1387,17 @@ msgstr "Converter smileys a emojis"
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send invitation"
msgid "View Location"
msgstr "Inviar un invitation"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Cluder"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1413,6 +1424,19 @@ msgstr "Rejecter"
msgid "Accept"
msgstr "Acceptar"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Notificationes"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Vu ja es in ti chambre."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1648,22 +1672,22 @@ msgstr "Selecter un local file"
msgid "Clipboard image"
msgstr "Image in li Paperiere"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Ear al prim ínleet missage"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Ear al ultim missage"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr ""
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1671,19 +1695,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 tippa"
msgstr[1] "%2 tippa"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, fuzzy, kde-format
msgid "Activate Encryption"
msgstr "Fine de vive"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2058,35 +2082,35 @@ msgstr "Aperte un privat conversation"
msgid "Copy link"
msgstr "Copiar"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Verification del session"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Consente del usator"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them."
msgstr ""
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Aperter"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Iniciar conversation"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Esque vu vole iniciar un conversation con %1?"
@@ -2282,7 +2306,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2364,29 +2388,29 @@ msgstr "Serchar por «%1»"
msgid "Configure Web Shortcuts..."
msgstr "Configurar abreviationes de web..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Report Message"
msgid "Remove Messages"
msgstr "Raportar li missage"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Report Message"
msgid "Remove Message"
msgstr "Raportar li missage"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, fuzzy, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Raportante spam..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, fuzzy, kde-format
msgid "Reason for removing this message"
msgstr "Raportante spam..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button 'Remove' as in 'Remove this message'"
@@ -2689,8 +2713,8 @@ msgstr "Forlassar li chambre"
msgid "Explore rooms"
msgstr "Explorar chambres"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, fuzzy, kde-format
#| msgid "Rooms and private chats:"
msgid "Create rooms and chats"
@@ -2858,30 +2882,35 @@ msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
msgid "Show locations for this room"
msgstr "Saliente Cinnamon"
#: src/qml/Panel/RoomDrawer.qml:162
#, fuzzy, kde-format
msgid "Remove room from favorites"
msgstr "Remover ex li preferat"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, fuzzy, kde-format
msgid "Make room favorite"
msgstr "chambre"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Membres"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, fuzzy, kde-format
msgid "Search user in room"
msgstr "Saliente Cinnamon"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, fuzzy, kde-format
msgid "Invite user to room"
msgstr "Invitar un usator"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "%1 Member"
#| msgid_plural "%1 Members"
@@ -2890,29 +2919,29 @@ msgid_plural "%1 members"
msgstr[0] "%1 membre"
msgstr[1] "%1 membres"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "No Member Count"
msgid "No member count"
msgstr "Sin númere de membres"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "General"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Securitá"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Notificationes"
@@ -4172,9 +4201,6 @@ msgstr "Surtir"
#~ msgid "Save as"
#~ msgstr "Gardar quam"
#~ msgid "Close"
#~ msgstr "Cluder"
#~ msgid " (edited)"
#~ msgstr " (Modificat)"

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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-09 15:52+0200\n"
"Last-Translator: Vincenzo Reale <smart2128vr@gmail.com>\n"
"Language-Team: Italian <kde-i18n-it@kde.org>\n"
@@ -122,90 +122,90 @@ msgstr "Destinazione"
msgid "Network Error"
msgstr "Errore di rete"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Client Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2023 La comunità KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Responsabile"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Autore originale di Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Responsabile di Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Vincenzo Reale"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "smart2128vr@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Una libreria Qt5 per scrivere client multipiattaforma per Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (compilato con %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Client per il protocollo di comunicazione matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Supporta schema URL matrix:"
@@ -653,24 +653,24 @@ msgstr "<i>[Questo messaggio è stato eliminato]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Questo messaggio è stato eliminato: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[REDATTO]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[REDATTO: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "1 utente: "
msgstr[1] "%1 utenti: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1085,7 +1085,7 @@ msgstr "Lat: %1, Lon: %2"
msgid "Encrypted Message"
msgstr "Messaggio cifrato"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1321,6 +1321,17 @@ msgstr "Emoji"
msgid "Stickers"
msgstr "Adesivi"
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "Invia una località"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Chiudi"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1347,6 +1358,19 @@ msgstr "Rifiuta"
msgid "Accept"
msgstr "Accetta"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Notifiche"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Sei già in questa stanza."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1580,22 +1604,22 @@ msgstr "Scegli file locale"
msgid "Clipboard image"
msgstr "Immagine dagli appunti"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Passa al primo messaggio non letto"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Salta all'ultimo messaggio"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Trascina qui gli elementi per condividerli"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1603,20 +1627,20 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 sta scrivendo"
msgstr[1] "%2 stanno scrivendo"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Attiva la cifratura"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
"Non sarà possibile disattivare la cifratura dopo che è stata abilitata."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2013,18 +2037,18 @@ msgstr "Apri una chat privata"
msgid "Copy link"
msgstr "Copia collegamento"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Verifica della sessione"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Consenso dell'utente"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2033,17 +2057,17 @@ msgstr ""
"Il tuo server ti richiede di accettare i suoi termini e le sue condizioni "
"prima di poterlo utilizzare. Fai clic sul pulsante in basso per leggerli."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Apri"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Avvia una chat"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Vuoi iniziare una chat con %1?"
@@ -2238,7 +2262,7 @@ msgid "Ban"
msgstr "Bando"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2317,27 +2341,27 @@ msgstr "Cerca «%1»"
msgid "Configure Web Shortcuts..."
msgstr "Configura le scorciatoie web..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Rimuovi i messaggi"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Rimuovi il messaggio"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Motivo per la rimozione dei messaggi recenti di questo utente"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Motivo per la rimozione di questo messaggio"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2638,8 +2662,8 @@ msgstr "Lascia la stanza"
msgid "Explore rooms"
msgstr "Esplora le stanze"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Crea stanze e chat"
@@ -2798,59 +2822,65 @@ msgid "Search"
msgstr "Cerca"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "Cerca in questa stanza"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Rimuovi la stanza dai preferiti"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Rendi preferita la stanza"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Membri"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Cerca l'utente nella stanza"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Invita utente alla stanza"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 membro"
msgstr[1] "%1 membri"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Nessun conteggio dei membri"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Generale"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Sicurezza"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Permessi"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Notifiche"
@@ -4084,9 +4114,6 @@ msgstr "Esci"
#~ msgid "Save as"
#~ msgstr "Salva come"
#~ msgid "Close"
#~ msgstr "Chiudi"
#~ msgid " (edited)"
#~ msgstr " (modificato)"

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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+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"
@@ -118,90 +118,90 @@ msgstr ""
msgid "Network Error"
msgstr ""
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr ""
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr ""
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr ""
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr ""
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr ""
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr ""
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr ""
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr ""
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr ""
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr ""
@@ -644,23 +644,23 @@ msgstr ""
msgid "<i>[This message was deleted: %1]</i>"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr ""
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1073,7 +1073,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr ""
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr ""
@@ -1307,6 +1307,16 @@ msgstr ""
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr ""
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1333,6 +1343,17 @@ msgstr ""
msgid "Accept"
msgstr ""
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr ""
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr ""
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1563,41 +1584,41 @@ msgstr ""
msgid "Clipboard image"
msgstr ""
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr ""
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr ""
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr ""
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
msgid_plural "%2 are typing"
msgstr[0] ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1958,35 +1979,35 @@ msgstr ""
msgid "Copy link"
msgstr ""
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr ""
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr ""
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them."
msgstr ""
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr ""
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr ""
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr ""
@@ -2181,7 +2202,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2260,27 +2281,27 @@ msgstr ""
msgid "Configure Web Shortcuts..."
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2579,8 +2600,8 @@ msgstr ""
msgid "Explore rooms"
msgstr ""
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr ""
@@ -2740,57 +2761,62 @@ msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr ""

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: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-06-10 06:34+0200\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-25 10:17+0200\n"
"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
"Language-Team: Georgian <kde-i18n-doc@kde.org>\n"
"Language: ka\n"
@@ -122,91 +122,91 @@ msgstr "დანიშნულება"
msgid "Network Error"
msgstr "ქსელის შეცდომა"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix -ის კლიენტი"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr ""
"© 2018-2020 Black Hat, 2020-2023 KDE -ის საზოგადოება, ყველა უფლება დაცულია"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "წამყვანი პროგრამისტი"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "ჯეიმს გრეჰემი"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Spectral- ის ორიგინალური ავტორი"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "ალექსეი რუსაკოვი"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "კოვოტიენტის პროგრამისტი"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Temuri Doghonadze"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "Temuri.doghonadze@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Qt5 ბიბლიოთეკა Matrix-ისთვის კლიენტების დასაწერად"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (აგებულია %2-ით)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "კლიენტი Matrix-ის კომუნიკაციის პროტოკოლისთვის"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Matrix-ის მხარდჭერა: ბმული სქემა"
@@ -651,24 +651,24 @@ msgstr "<i>[ეს შეტყობინება წაშლილია]</
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[ეს შეტყობინება წაშლილია: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[ჩასწორებული]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[ჩასწორებულია: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "1 მომხმარებელი: "
msgstr[1] "%1 მომხმარებელი: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1083,7 +1083,7 @@ msgstr "გან: %1, გრძ: %2"
msgid "Encrypted Message"
msgstr "დაშიფრული შეტყობინება"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1319,6 +1319,16 @@ msgstr "ემოჯიები"
msgid "Stickers"
msgstr "სტიკერები"
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr "მდებარეობის ნახვა"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "დახურვა"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1345,6 +1355,17 @@ msgstr "უარყოფა"
msgid "Accept"
msgstr "დასტური"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr "მდებარეობები"
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr "ამ ოთახში მდებარეობები გაზიარებული არაა."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1578,22 +1599,22 @@ msgstr "აირჩიეთ ლოკალური ფაილი"
msgid "Clipboard image"
msgstr "ბუფერის გამოსახულება"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "პირველ წაუკითხავ შეტყობინებაზე გადასვლა"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "უახლეს შეტყობინებებზე გადასვლა"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "გადმოათრიეთ საგნები აქ, მათ გასაზიარებლად"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1601,19 +1622,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 კრეფს"
msgstr[1] "%2 კრეფს"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "დაშიფვრის გააქტიურება"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "დაშიფვრის გამორთვა მისი ჩართვის შემდეგ შეუძლებელია."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1986,18 +2007,18 @@ msgstr "პირადი საუბრის გახსნა"
msgid "Copy link"
msgstr "ბმულის კოპირება"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "სესიის გადამოწმება"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "მომხმარებლის თანხმობა"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2006,17 +2027,17 @@ msgstr ""
"თქვენი სახლის სერვერის გამოყენებამდე საჭიროა მის პირობებს და ლიცენზიას "
"დაეთანხმოთ. მის წასაკითხად ქვემოთ ღილაკს დააჭირეთ."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "გახსნა"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "საუბრის დაწყება"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "გნებავთ დაიწყოთ საუბარი %1-სთან?"
@@ -2211,7 +2232,7 @@ msgid "Ban"
msgstr "ბანი"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2290,27 +2311,27 @@ msgstr "%1-იs მოძებნა"
msgid "Configure Web Shortcuts..."
msgstr "ვებ მალსახმობების მორგება..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "შეტყობინებების წაშლა"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "შეტყობინების წაშლა"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "ამ მომხმარებლის უახლესი მომხმარებლების წაშლის მიზეზი"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "ამ შეტყობინების წაშლის მიზეზი"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2611,8 +2632,8 @@ msgstr "ოთახიდან გასვლა"
msgid "Explore rooms"
msgstr "ოთახების დათვალიერება"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "ჩატებისა და ოთახების შექმნა"
@@ -2772,58 +2793,63 @@ msgstr "ძებნა"
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr "ამ ოთახისთვის მდებარეობების ჩვენება"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "ოთახის რჩეულებიდან წაშლა"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "ოთახის რჩეულად მონიშვნა"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "წევრები"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "ოთახში მომხმარებლის ძებნა"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "მომხმარებლის ოთახში მოწვევა"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 წევრი"
msgstr[1] "%1 წევრი"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "წევრების რაოდენობის გარეშე"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "ზოგადი"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "უსაფრთხოება"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "უფლებები"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "გაფრთხილებები"
@@ -4036,9 +4062,6 @@ msgstr "დატოვება"
#~ msgid "Save as"
#~ msgstr "შენახვა, როგორც"
#~ msgid "Close"
#~ msgstr "დახურვა"
#~ msgid " (edited)"
#~ 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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2022-08-09 13:27+0200\n"
"Last-Translator: Shinjo Park <kde@peremen.name>\n"
"Language-Team: Korean <kde-kr@kde.org>\n"
@@ -129,91 +129,91 @@ msgstr "초대 보내기"
msgid "Network Error"
msgstr "네트워크 오류"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix 클라이언트"
#: src/main.cpp:165
#: src/main.cpp:168
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020-2022 KDE Community"
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2022 KDE Community"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr ""
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "박신조"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "kde@peremen.name"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "크로스 플랫폼 Matrix 클라이언트를 작성할 수 있는 Qt5 라이브러리"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr ""
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Matrix 대화 프로토콜 클라이언트"
#: src/main.cpp:325
#: src/main.cpp:333
#, fuzzy, kde-format
#| msgid "Supports appstream: url scheme"
msgid "Supports matrix: url scheme"
@@ -724,23 +724,23 @@ msgstr "<i>[이 메시지가 삭제됨]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[이 메시지가 삭제됨: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[검열됨]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[검열됨: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, fuzzy, kde-format
#| msgctxt "[action 1], [action 2 and action 3]"
#| msgid ", "
@@ -1182,7 +1182,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr "메시지 편집"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1436,6 +1436,17 @@ msgstr "사용자 정의 이모지"
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send invitation"
msgid "View Location"
msgstr "초대 보내기"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "닫기"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1462,6 +1473,19 @@ msgstr "거부"
msgid "Accept"
msgstr "수락"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Show notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "알림 표시"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "There are no locations shared in this room."
msgstr "이 대화방에서 NeoChat 열기"
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1696,42 +1720,42 @@ msgstr "로컬 파일 선택"
msgid "Clipboard image"
msgstr "클립보드의 그림"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "첫 읽지 않은 메시지로 이동"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "최신 메시지로 이동"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "공유할 항목을 여기에 드래그"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
msgid_plural "%2 are typing"
msgstr[0] "%2 님이 메시지를 입력하는 중"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, fuzzy, kde-format
#| msgid "activated End-to-End Encryption"
msgid "Activate Encryption"
msgstr "님이 종단간 암호화를 활성화함"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2107,19 +2131,19 @@ msgstr "개인 대화 열기"
msgid "Copy link"
msgstr "복사"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, fuzzy, kde-format
#| msgid "Show notifications"
msgctxt "@title:window"
msgid "Session Verification"
msgstr "알림 표시"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "사용자 동의"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2128,17 +2152,17 @@ msgstr ""
"홈 서버를 사용하기 전에 사용 조건에 동의해야 합니다. 아래 단추를 클릭하여 읽"
"으십시오."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "열기"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "대화 시작"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "%1 님과 대화를 시작하시겠습니까?"
@@ -2335,7 +2359,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2417,29 +2441,29 @@ msgstr "'%1' 검색"
msgid "Configure Web Shortcuts..."
msgstr "웹 바로 가기 설정..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Edit Message"
msgid "Remove Messages"
msgstr "메시지 편집"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Edit Message"
msgid "Remove Message"
msgstr "메시지 편집"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button 'Remove' as in 'Remove this message'"
@@ -2753,8 +2777,8 @@ msgstr "대화방 떠나기"
msgid "Explore rooms"
msgstr "대화방 탐색"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, fuzzy, kde-format
#| msgid "Rooms and private chats:"
msgid "Create rooms and chats"
@@ -2926,33 +2950,39 @@ msgid "Search"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "Show locations for this room"
msgstr "이 대화방에서 NeoChat 열기"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "책갈피에서 대화방 삭제"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "책갈피에 대화방 추가"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "구성원"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "Search user in room"
msgstr "이 대화방에서 NeoChat 열기"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, fuzzy, kde-format
#| msgid "%1 invited you to a room"
msgid "Invite user to room"
msgstr "%1 님이 대화방에 초대함"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "%1 Member"
#| msgid_plural "%1 Members"
@@ -2960,29 +2990,29 @@ msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "구성원 %1명"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "No Member Count"
msgid "No member count"
msgstr "구성원 집계 없음"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "일반"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "보안"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, fuzzy, kde-format
#| msgid "Show notifications"
msgid "Notifications"
@@ -4294,9 +4324,6 @@ msgstr "끝내기"
#~ msgid "Save as"
#~ msgstr "다른 이름으로 저장"
#~ msgid "Close"
#~ msgstr "닫기"
#~ msgid " (edited)"
#~ 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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-02-25 01:00+0000\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -122,90 +122,90 @@ msgstr ""
msgid "Network Error"
msgstr ""
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr ""
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr ""
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr ""
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr ""
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr ""
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr ""
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr ""
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr ""
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr ""
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr ""
@@ -652,17 +652,17 @@ msgstr ""
msgid "<i>[This message was deleted: %1]</i>"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr ""
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
@@ -671,7 +671,7 @@ msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1088,7 +1088,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr ""
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr ""
@@ -1322,6 +1322,16 @@ msgstr ""
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr ""
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1348,6 +1358,17 @@ msgstr ""
msgid "Accept"
msgstr ""
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr ""
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr ""
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1580,22 +1601,22 @@ msgstr ""
msgid "Clipboard image"
msgstr ""
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr ""
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr ""
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr ""
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1604,19 +1625,19 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1977,35 +1998,35 @@ msgstr ""
msgid "Copy link"
msgstr ""
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr ""
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr ""
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them."
msgstr ""
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr ""
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr ""
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr ""
@@ -2200,7 +2221,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2279,27 +2300,27 @@ msgstr ""
msgid "Configure Web Shortcuts..."
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2598,8 +2619,8 @@ msgstr ""
msgid "Explore rooms"
msgstr ""
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr ""
@@ -2759,30 +2780,35 @@ msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
@@ -2791,28 +2817,28 @@ msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
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: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-06-09 11:04+0200\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-24 12:16+0200\n"
"Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n"
"Language-Team: \n"
"Language: nl\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 23.04.1\n"
"X-Generator: Lokalize 23.04.2\n"
#: src/controller.cpp:262
#, kde-format
@@ -122,90 +122,90 @@ msgstr "Bestemming"
msgid "Network Error"
msgstr "Netwerkfout"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "Neochat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix-client"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2023 KDE-gemeenschap"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Onderhouder"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Oorspronkelijke auteur van Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Onderhouder van Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Freek de Kruijf - 2020 t/m 2022"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "freekdekruijf@kde.nl"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Een Qt5 bibliotheek om cross-platform clients voor Matrix te schrijven"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (gebouwd tegen %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Client voor het matrix communicatieprotocol"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Ondersteunt matrix: url schema"
@@ -650,24 +650,24 @@ msgstr "<i>[Dit bericht is verwijderd]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Dit bericht is verwijderd: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[GEREDIGEERD]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[GEREDIGEERD: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "1 gebruiker: "
msgstr[1] "%1 gebruikers "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1082,7 +1082,7 @@ msgstr "Bte: %1, Lte: %2"
msgid "Encrypted Message"
msgstr "Versleuteld bericht"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1318,6 +1318,16 @@ msgstr "Emoji's"
msgid "Stickers"
msgstr "Stickers"
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr "Locatie bekijken"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Sluiten"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1344,6 +1354,17 @@ msgstr "Afwijzen"
msgid "Accept"
msgstr "Accepteren"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Locaties"
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr "Er worden geen locaties in deze room gedeeld."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1577,22 +1598,22 @@ msgstr "Lokaal bestand kiezen"
msgid "Clipboard image"
msgstr "Afbeelding in klembord"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Naar het eerste ongelezen bericht gaan"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Naar het laatste bericht gaan"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Items hierheen verslepen om ze te delen"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1600,13 +1621,13 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 is bezig met typen"
msgstr[1] "%2 zijn bezig met het typen"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Versleuteling activeren"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
@@ -1614,7 +1635,7 @@ msgstr ""
"Het zal niet mogelijk zijn om de versleuteling te deactiveren nadat het is "
"ingeschakeld."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2008,18 +2029,18 @@ msgstr "Een privé chat openen"
msgid "Copy link"
msgstr "Koppeling kopiëren"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Verificatie van sessie"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Toestemming van gebruiker"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2028,17 +2049,17 @@ msgstr ""
"Uw homeserver vereist dat u met deze termen en voorwaarden instemt alvorens "
"u deze kunt gebruiken. Klik op de ondersteunde knop om ze te lezen."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Openen"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Een chat starten"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Wilt u een chat beginnen met %1?"
@@ -2233,7 +2254,7 @@ msgid "Ban"
msgstr "Verbannen"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2312,27 +2333,27 @@ msgstr "Zoeken naar '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Websnelkoppelingen configureren..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Berichten verwijderen"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Bericht verwijderen"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Reden om deze recente berichten van de gebruiker te verwijderen"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Reden om dit bericht te verwijderen"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2633,8 +2654,8 @@ msgstr "Room verlaten"
msgid "Explore rooms"
msgstr "Rooms verkennen"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Rooms en chats aanmaken"
@@ -2749,7 +2770,7 @@ msgstr "Welkom bij Matrix"
#: src/qml/Panel/GroupChatDrawerHeader.qml:55
#, kde-format
msgid "No name"
msgstr "Freek de Kruijf - 2020"
msgstr "Geen naam"
#: src/qml/Panel/GroupChatDrawerHeader.qml:61
#, kde-format
@@ -2794,58 +2815,63 @@ msgstr "Zoeken"
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr "Locaties in deze room tonen"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Room uit favorieten verwijderen"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Room als favoriet instellen"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Leden"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Gebruiker in room zoeken"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Gebruiker uitnodigen in room"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 lid"
msgstr[1] "%1 leden"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Geen aantal leden"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Algemeen"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Beveiliging"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Toegangsrechten"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Meldingen"
@@ -4067,9 +4093,6 @@ msgstr "Afsluiten"
#~ msgid "Save as"
#~ msgstr "Opslaan als"
#~ msgid "Close"
#~ msgstr "Sluiten"
#~ msgid " (edited)"
#~ msgstr " (bewerkt)"

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: 2023-06-09 00:48+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2021-12-15 11:17+0100\n"
"Last-Translator: Øystein Steffensen-Alværvik <oysteins.omsetting@protonmail."
"com>\n"
@@ -125,90 +125,90 @@ msgstr ""
msgid "Network Error"
msgstr "Nettverksfeil"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix-klient"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr ""
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr ""
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Karl Ove Hufthammer"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "karl@huftis.org"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr ""
#: src/main.cpp:323
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Lynmeldings­klient for Matrix-protokollen"
#: src/main.cpp:324
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr ""
@@ -643,35 +643,35 @@ msgctxt "As in 'The user's own emojis"
msgid "Own Emojis"
msgstr ""
#: src/models/messageeventmodel.cpp:469 src/models/messageeventmodel.cpp:478
#: src/models/messageeventmodel.cpp:477 src/models/messageeventmodel.cpp:486
#, kde-format
msgid "<i>[This message was deleted]</i>"
msgstr "<i>[Denne meldinga er sletta]</i>"
#: src/models/messageeventmodel.cpp:470
#: src/models/messageeventmodel.cpp:478
#, kde-format
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Denne meldinga er sletta: %1]</i>"
# Eller «SENSURERT»?
#: src/models/messageeventmodel.cpp:545
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[TREKT TILBAKE]"
#: src/models/messageeventmodel.cpp:545
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[TREKT TILBAKE: %1]"
#: src/models/messageeventmodel.cpp:854
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] ""
msgstr[1] ""
#: src/models/messageeventmodel.cpp:861
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -729,353 +729,353 @@ msgstr "Låg prioritet"
msgid "Spaces"
msgstr ""
#: src/models/searchmodel.cpp:164
#: src/models/searchmodel.cpp:261
#, kde-format
msgid "Today"
msgstr "I dag"
#: src/models/searchmodel.cpp:167
#: src/models/searchmodel.cpp:264
#, kde-format
msgid "Yesterday"
msgstr "I går"
#: src/models/searchmodel.cpp:170
#: src/models/searchmodel.cpp:267
#, kde-format
msgid "The day before yesterday"
msgstr "I forgårs"
#: src/neochatroom.cpp:527
#: src/neochatroom.cpp:530
#, kde-format
msgid "a file"
msgstr "ei fil"
#: src/neochatroom.cpp:578
#: src/neochatroom.cpp:581
#, kde-format
msgid "reinvited %1 to the room"
msgstr "inviterte %1 på nytt til rommet"
#: src/neochatroom.cpp:580
#: src/neochatroom.cpp:583
#, kde-format
msgctxt "Optional reason for an invitation"
msgid ": %1"
msgstr ": %1"
#: src/neochatroom.cpp:589 src/neochatroom.cpp:734
#: src/neochatroom.cpp:592 src/neochatroom.cpp:737
#, kde-format
msgid "joined the room (repeated)"
msgstr "kom inn i rommet (på nytt)"
#: src/neochatroom.cpp:591
#: src/neochatroom.cpp:594
#, kde-format
msgid "invited %1 to the room"
msgstr "inviterte %1 til rommet"
#: src/neochatroom.cpp:591 src/neochatroom.cpp:736
#: src/neochatroom.cpp:594 src/neochatroom.cpp:739
#, kde-format
msgid "joined the room"
msgstr "kom inn i rommet"
#: src/neochatroom.cpp:595
#: src/neochatroom.cpp:598
#, kde-format
msgid ": %1"
msgstr ": %1"
#: src/neochatroom.cpp:602 src/neochatroom.cpp:744
#: src/neochatroom.cpp:605 src/neochatroom.cpp:747
#, kde-format
msgctxt "their refers to a singular user"
msgid "cleared their display name"
msgstr "fjerna visingsnamnet"
#: src/neochatroom.cpp:604
#: src/neochatroom.cpp:607
#, kde-format
msgctxt "their refers to a singular user"
msgid "changed their display name to %1"
msgstr "endra visingsnamn til %1"
#: src/neochatroom.cpp:609 src/neochatroom.cpp:751
#: src/neochatroom.cpp:612 src/neochatroom.cpp:754
#, kde-format
msgid " and "
msgstr " og "
#: src/neochatroom.cpp:612 src/neochatroom.cpp:754
#: src/neochatroom.cpp:615 src/neochatroom.cpp:757
#, kde-format
msgctxt "their refers to a singular user"
msgid "cleared their avatar"
msgstr "fjerna avataren"
#: src/neochatroom.cpp:618 src/neochatroom.cpp:760
#: src/neochatroom.cpp:621 src/neochatroom.cpp:763
#, kde-format
msgid "set an avatar"
msgstr "valde ein avatar"
#: src/neochatroom.cpp:620 src/neochatroom.cpp:762
#: src/neochatroom.cpp:623 src/neochatroom.cpp:765
#, kde-format
msgctxt "their refers to a singular user"
msgid "updated their avatar"
msgstr "bytte avataren sin"
#: src/neochatroom.cpp:624 src/neochatroom.cpp:766
#: src/neochatroom.cpp:627 src/neochatroom.cpp:769
#, kde-format
msgctxt "<user> changed nothing"
msgid "changed nothing"
msgstr ""
#: src/neochatroom.cpp:630
#: src/neochatroom.cpp:633
#, kde-format
msgid "withdrew %1's invitation"
msgstr "trekte tilbake invitasjonen til %1"
#: src/neochatroom.cpp:630 src/neochatroom.cpp:772
#: src/neochatroom.cpp:633 src/neochatroom.cpp:775
#, kde-format
msgid "rejected the invitation"
msgstr "avviste invitasjonen"
#: src/neochatroom.cpp:634
#: src/neochatroom.cpp:637
#, kde-format
msgid "unbanned %1"
msgstr "oppheva utestenging av %1"
#: src/neochatroom.cpp:634 src/neochatroom.cpp:776
#: src/neochatroom.cpp:637 src/neochatroom.cpp:779
#, kde-format
msgid "self-unbanned"
msgstr "utestengde seg sjølv"
#: src/neochatroom.cpp:637
#: src/neochatroom.cpp:640
#, kde-format
msgid "has put %1 out of the room: %2"
msgstr "fjerna %1 frå rommet: %2"
#: src/neochatroom.cpp:638 src/neochatroom.cpp:778
#: src/neochatroom.cpp:641 src/neochatroom.cpp:781
#, kde-format
msgid "left the room"
msgstr "forlét rommet"
#: src/neochatroom.cpp:642
#: src/neochatroom.cpp:645
#, kde-format
msgid "banned %1 from the room"
msgstr ""
#: src/neochatroom.cpp:644
#: src/neochatroom.cpp:647
#, kde-format
msgid "banned %1 from the room: %2"
msgstr "utestengde %1 frå rommet: %2"
#: src/neochatroom.cpp:647 src/neochatroom.cpp:783
#: src/neochatroom.cpp:650 src/neochatroom.cpp:786
#, kde-format
msgid "self-banned from the room"
msgstr "utestengde seg sjølv frå rommet"
#: src/neochatroom.cpp:651 src/neochatroom.cpp:786
#: src/neochatroom.cpp:654 src/neochatroom.cpp:789
#, kde-format
msgid "requested an invite"
msgstr ""
#: src/neochatroom.cpp:651
#: src/neochatroom.cpp:654
#, kde-format
msgid "requested an invite with reason: %1"
msgstr ""
#: src/neochatroom.cpp:655 src/neochatroom.cpp:790
#: src/neochatroom.cpp:658 src/neochatroom.cpp:793
#, kde-format
msgid "made something unknown"
msgstr "gjorde noko ukjend"
#: src/neochatroom.cpp:658 src/neochatroom.cpp:793
#: src/neochatroom.cpp:661 src/neochatroom.cpp:796
#, kde-format
msgid "cleared the room main alias"
msgstr "fjerna hovudaliaset til rommet"
#: src/neochatroom.cpp:658
#: src/neochatroom.cpp:661
#, kde-format
msgid "set the room main alias to: %1"
msgstr "bytte hovudalias for rommet til: %1"
#: src/neochatroom.cpp:661 src/neochatroom.cpp:796
#: src/neochatroom.cpp:664 src/neochatroom.cpp:799
#, kde-format
msgid "cleared the room name"
msgstr "fjerna romnamnet"
#: src/neochatroom.cpp:661
#: src/neochatroom.cpp:664
#, kde-format
msgid "set the room name to: %1"
msgstr "bytte romnamnet til: %1"
#: src/neochatroom.cpp:664 src/neochatroom.cpp:799
#: src/neochatroom.cpp:667 src/neochatroom.cpp:802
#, kde-format
msgid "cleared the topic"
msgstr "tømte emnefeltet"
#: src/neochatroom.cpp:665
#: src/neochatroom.cpp:668
#, kde-format
msgid "set the topic to: %1"
msgstr "bytte emnet til: %1"
#: src/neochatroom.cpp:671 src/neochatroom.cpp:802
#: src/neochatroom.cpp:674 src/neochatroom.cpp:805
#, kde-format
msgid "changed the room avatar"
msgstr "bytte ut romavataren"
#: src/neochatroom.cpp:674 src/neochatroom.cpp:805
#: src/neochatroom.cpp:677 src/neochatroom.cpp:808
#, kde-format
msgid "activated End-to-End Encryption"
msgstr "slå på ende-til-ende-kryptering"
#: src/neochatroom.cpp:677
#: src/neochatroom.cpp:680
#, kde-format
msgid "upgraded the room to version %1"
msgstr "oppgraderte rommet til versjon %1"
#: src/neochatroom.cpp:678
#: src/neochatroom.cpp:681
#, kde-format
msgid "created the room, version %1"
msgstr "oppretta rommet, versjon %1"
#: src/neochatroom.cpp:681 src/neochatroom.cpp:811
#: src/neochatroom.cpp:684 src/neochatroom.cpp:814
#, kde-format
msgctxt "'power level' means permission level"
msgid "changed the power levels for this room"
msgstr ""
#: src/neochatroom.cpp:685 src/neochatroom.cpp:815
#: src/neochatroom.cpp:688 src/neochatroom.cpp:818
#, kde-format
msgid "changed the server access control lists for this room"
msgstr ""
#: src/neochatroom.cpp:689
#: src/neochatroom.cpp:692
#, kde-format
msgctxt "[User] added <name> widget"
msgid "added %1 widget"
msgstr ""
#: src/neochatroom.cpp:692
#: src/neochatroom.cpp:695
#, kde-format
msgctxt "[User] removed <name> widget"
msgid "removed %1 widget"
msgstr ""
#: src/neochatroom.cpp:694
#: src/neochatroom.cpp:697
#, kde-format
msgctxt "[User] configured <name> widget"
msgid "configured %1 widget"
msgstr ""
#: src/neochatroom.cpp:696
#: src/neochatroom.cpp:699
#, kde-format
msgid "updated %1 state"
msgstr "oppdaterte %1-tilstand"
#: src/neochatroom.cpp:697
#: src/neochatroom.cpp:700
#, kde-format
msgid "updated %1 state for %2"
msgstr "oppdaterte %1-tilstand for %2"
#: src/neochatroom.cpp:704 src/neochatroom.cpp:834
#: src/neochatroom.cpp:707 src/neochatroom.cpp:837
#, kde-format
msgid "Unknown event"
msgstr "Ukjend hending"
#: src/neochatroom.cpp:717
#: src/neochatroom.cpp:720
#, kde-format
msgid "sent a message"
msgstr ""
#: src/neochatroom.cpp:721
#: src/neochatroom.cpp:724
#, kde-format
msgid "sent a sticker"
msgstr ""
#: src/neochatroom.cpp:727
#: src/neochatroom.cpp:730
#, kde-format
msgid "reinvited someone to the room"
msgstr ""
#: src/neochatroom.cpp:736
#: src/neochatroom.cpp:739
#, kde-format
msgid "invited someone to the room"
msgstr ""
#: src/neochatroom.cpp:746
#: src/neochatroom.cpp:749
#, kde-format
msgctxt "their refers to a singular user"
msgid "changed their display name"
msgstr ""
#: src/neochatroom.cpp:772
#: src/neochatroom.cpp:775
#, kde-format
msgid "withdrew a user's invitation"
msgstr ""
#: src/neochatroom.cpp:776
#: src/neochatroom.cpp:779
#, kde-format
msgid "unbanned a user"
msgstr ""
#: src/neochatroom.cpp:778
#: src/neochatroom.cpp:781
#, kde-format
msgid "put a user out of the room"
msgstr ""
#: src/neochatroom.cpp:781
#: src/neochatroom.cpp:784
#, kde-format
msgid "banned a user from the room"
msgstr ""
#: src/neochatroom.cpp:793
#: src/neochatroom.cpp:796
#, kde-format
msgid "set the room main alias"
msgstr ""
#: src/neochatroom.cpp:796
#: src/neochatroom.cpp:799
#, kde-format
msgid "set the room name"
msgstr ""
#: src/neochatroom.cpp:799
#: src/neochatroom.cpp:802
#, kde-format
msgid "set the topic"
msgstr ""
#: src/neochatroom.cpp:808
#: src/neochatroom.cpp:811
#, kde-format
msgid "upgraded the room version"
msgstr ""
#: src/neochatroom.cpp:808
#: src/neochatroom.cpp:811
#, kde-format
msgid "created the room"
msgstr ""
#: src/neochatroom.cpp:819
#: src/neochatroom.cpp:822
#, kde-format
msgid "added a widget"
msgstr ""
#: src/neochatroom.cpp:822
#: src/neochatroom.cpp:825
#, kde-format
msgid "removed a widget"
msgstr ""
#: src/neochatroom.cpp:824
#: src/neochatroom.cpp:827
#, kde-format
msgid "configured a widget"
msgstr ""
#: src/neochatroom.cpp:826
#: src/neochatroom.cpp:829
#, kde-format
msgid "updated the state"
msgstr ""
#: src/neochatroom.cpp:831
#: src/neochatroom.cpp:834
#, kde-format
msgid "started a poll"
msgstr ""
#: src/neochatroom.cpp:1730 src/neochatroom.cpp:1731
#: src/neochatroom.cpp:1733 src/neochatroom.cpp:1734
#, kde-format
msgid "Report sent successfully."
msgstr ""
#: src/neochatroom.cpp:2033 src/neochatroom.cpp:2041
#: src/neochatroom.cpp:2036 src/neochatroom.cpp:2044
#, kde-format
msgctxt "'Lat' and 'Lon' as in Latitude and Longitude"
msgid "Lat: %1, Lon: %2"
@@ -1086,7 +1086,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr ""
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1194,7 +1194,7 @@ msgctxt "@action:button"
msgid "Cancel reply"
msgstr ""
#: src/qml/Component/ChatBox/ChatBox.qml:60
#: src/qml/Component/ChatBox/ChatBox.qml:64
#, kde-format
msgid "NeoChat is offline. Please check your network connection."
msgstr ""
@@ -1320,6 +1320,16 @@ msgstr ""
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Lukk"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1346,6 +1356,17 @@ msgstr "Avvis"
msgid "Accept"
msgstr "Godta"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr ""
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr ""
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1577,22 +1598,22 @@ msgstr "Vel lokal fil"
msgid "Clipboard image"
msgstr "Utklippstavle-bilete"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Gå til første ulesne melding"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Gå til nyaste melding"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Dra element her for å dela dei"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1600,19 +1621,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 skriv"
msgstr[1] "%2 skriv"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1973,18 +1994,18 @@ msgstr "Start privat prat"
msgid "Copy link"
msgstr ""
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr ""
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Brukar­samtykke"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -1993,17 +2014,17 @@ msgstr ""
"Heimetenaren krev at du godtek brukarvilkåra før du kan ta han i bruk. Trykk "
"på knappen nedanfor for å lesa vilkåra."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Opna"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr ""
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr ""
@@ -2198,7 +2219,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2277,27 +2298,27 @@ msgstr "Søk etter «%1»"
msgid "Configure Web Shortcuts..."
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2598,8 +2619,8 @@ msgstr "Forlat rommet"
msgid "Explore rooms"
msgstr "Utforsk rom"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr ""
@@ -2759,58 +2780,63 @@ msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Fjern rom frå favorittar"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Gjer rom til favoritt"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Medlemmar"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] ""
msgstr[1] ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+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"
@@ -131,91 +131,91 @@ msgstr "ਸੱਦਾ ਭੇਜੋ"
msgid "Network Error"
msgstr "ਨੈੱਟਵਰਕ ਗ਼ਲਤੀ"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "ਨਿਓ-ਚੈਟ"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "ਮੈਟਰਿਕਸ ਕਲਾਈਂਟ"
#: src/main.cpp:165
#: src/main.cpp:168
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020-2021 KDE Community"
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2021 KDE Community"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "ਕਾਰਲ ਸਚਵਾਨ"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr ""
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "ਟੋਬਿਸ ਫੇਲਾ"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "ਅ.ਸ.ਆਲਮ ੨੦੨੧"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "alam.yellow@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr ""
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr ""
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr ""
@@ -721,24 +721,24 @@ msgstr "<i>[ਇਹ ਸੁਨੇਹਾ ਹਟਾਇਆ ਗਿਆ ਸੀ]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[ਇਹ ਸੁਨੇਹਾ ਹਟਾਇਆ ਗਿਆ ਸੀ: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr ""
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] ""
msgstr[1] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1173,7 +1173,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr "ਸੁਨੇਹੇ ਨੂੰ ਸੋਧੋ"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1428,6 +1428,17 @@ msgstr "ਕਸਟਮ"
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send invitation"
msgid "View Location"
msgstr "ਸੱਦਾ ਭੇਜੋ"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "ਬੰਦ ਕਰੋ"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1454,6 +1465,19 @@ msgstr "ਰੱਦ ਕਰੋ"
msgid "Accept"
msgstr "ਮਨਜ਼ੂਰ ਕਰੋ"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Show notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਵੇਖਾਓ"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "There are no locations shared in this room."
msgstr "ਇਸ ਰੂਮ ਵਿੱਚ ਨਿਓ-ਚੈਟ ਖੋਲ੍ਹੋ"
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1688,22 +1712,22 @@ msgstr "ਲੋਕਲ ਫਾਇਲ ਚੁਣੋ"
msgid "Clipboard image"
msgstr "ਕਲਿੱਪਬੋਰਡ ਚਿੱਤਰ"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "ਪਹਿਲੇ ਨਾ-ਪੜ੍ਹੇ ਸੁਨੇਹੇ ਉੱਤੇ ਜਾਓ"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "ਸਭ ਤੋਂ ਨਵੇ ਸੁਨੇਹੇ ਉੱਤੇ ਜਾਓ"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr ""
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1711,20 +1735,20 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 ਲਿਖ ਰਹੇ ਹਨ"
msgstr[1] "%2 ਲਿਖ ਰਹੇ ਹਨ"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, fuzzy, kde-format
#| msgid "activated End-to-End Encryption"
msgid "Activate Encryption"
msgstr "ਸਿਰੇ ਤੋਂ ਸਿਰੇ ਤੱਕ ਇੰਕ੍ਰਿਪਸ਼ਨ ਸਰਗਰਮ ਕੀਤੀ"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2099,36 +2123,36 @@ msgstr "ਪ੍ਰਾਈਵੇਟ ਚੈਟ ਵਿੱਚ ਖੋਲ੍ਹੋ"
msgid "Copy link"
msgstr "ਕਾਪੀ ਕਰੋ"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, fuzzy, kde-format
#| msgid "Show notifications"
msgctxt "@title:window"
msgid "Session Verification"
msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਵੇਖਾਓ"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "ਵਰਤੋਂਕਾਰ ਸਹਿਮਤੀ"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them."
msgstr ""
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "ਖੋਲ੍ਹੋ"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "ਗੱਲਬਾਤ ਸ਼ੁਰੂ ਕਰੋ"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "ਕੀ ਤੁਸੀਂ %1 ਨਾਲ ਗੱਲਬਾਤ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ?"
@@ -2327,7 +2351,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2409,29 +2433,29 @@ msgstr "'%1' ਲਈ ਖੋਜੋ"
msgid "Configure Web Shortcuts..."
msgstr "...ਵੈੱਬ ਸ਼ਾਰਟਕੱਟਾਂ ਦੀ ਸੰਰਚਨਾ ਕਰੋ"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Edit Message"
msgid "Remove Messages"
msgstr "ਸੁਨੇਹੇ ਨੂੰ ਸੋਧੋ"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Edit Message"
msgid "Remove Message"
msgstr "ਸੁਨੇਹੇ ਨੂੰ ਸੋਧੋ"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button 'Remove' as in 'Remove this message'"
@@ -2744,8 +2768,8 @@ msgstr "ਰੂਮ ਨੂੰ ਛੱਡੋ"
msgid "Explore rooms"
msgstr "ਰੂਮ ਛਾਣੋ"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, fuzzy, kde-format
#| msgid "Rooms and private chats:"
msgid "Create rooms and chats"
@@ -2917,33 +2941,39 @@ msgid "Search"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "Show locations for this room"
msgstr "ਇਸ ਰੂਮ ਵਿੱਚ ਨਿਓ-ਚੈਟ ਖੋਲ੍ਹੋ"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਰੂਮ ਹਟਾਓ"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "ਰੂਮ ਪਸੰਦੀਦਾ ਬਣਾਓ"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "ਮੈਂਬਰ"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "Search user in room"
msgstr "ਇਸ ਰੂਮ ਵਿੱਚ ਨਿਓ-ਚੈਟ ਖੋਲ੍ਹੋ"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, fuzzy, kde-format
#| msgid "%1 invited you to a room"
msgid "Invite user to room"
msgstr "%1 ਨੇ ਤੁਹਾਨੂੰ ਰੂਮ ਲਈ ਸੱਦਾ ਦਿੱਤਾ"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "%1 Member"
#| msgid_plural "%1 Members"
@@ -2952,29 +2982,29 @@ msgid_plural "%1 members"
msgstr[0] "%1 ਮੈਂਬਰ"
msgstr[1] "%1 ਮੈਂਬਰ"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "No Member Count"
msgid "No member count"
msgstr "ਕੋਈ ਮੈਂਬਰ ਗਿਣਤੀ ਨਹੀਂ"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "ਆਮ"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "ਸੁਰੱਖਿਆ"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, fuzzy, kde-format
#| msgid "Show notifications"
msgid "Notifications"
@@ -4264,9 +4294,6 @@ msgstr "ਬਾਹਰ"
#~ msgid "Save as"
#~ msgstr "ਇੰਝ ਸੰਭਾਲੋ"
#~ msgid "Close"
#~ msgstr "ਬੰਦ ਕਰੋ"
#~ msgid " (edited)"
#~ 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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-04-29 11:30+0200\n"
"Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>\n"
"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
@@ -125,91 +125,91 @@ msgstr "Miejsce docelowe"
msgid "Network Error"
msgstr "Błąd sieci"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Klient Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020-2022 KDE Community"
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2022 Społeczność KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Opiekun"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Czarny kapelusz"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Pierwotny autor Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Opiekun Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Karol Kosek, Łukasz Wojniłowicz"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "krkk@krkk.ct8.pl, lukasz.wojnilowicz@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Biblioteka Qt5 do pisania wieloplatformowych programów dla Matriksa"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (zbudowane na %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Program do obsługi protokołu matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Obsługuje matriksa: schemat url"
@@ -658,17 +658,17 @@ msgstr "<i>[Wiadomość została usunięta]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Wiadomość została usunięta: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[ZREDAGOWANO]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[ZREDAGOWANO: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
@@ -676,7 +676,7 @@ msgstr[0] "1 użytkownik: "
msgstr[1] "%1 użytkowników: "
msgstr[2] "%1 użytkowników: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1093,7 +1093,7 @@ msgstr "Szer.: %1, Dł.: %2"
msgid "Encrypted Message"
msgstr "Zaszyfrowana wiadomość"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1338,6 +1338,17 @@ msgstr "Bez emoji"
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "Wyślij położenie"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Zamknij"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1364,6 +1375,19 @@ msgstr "Odrzuć"
msgid "Accept"
msgstr "Zaakceptuj"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Powiadomienia"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Już jesteś w tym pokoju."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1598,22 +1622,22 @@ msgstr "Wybierz plik lokalny"
msgid "Clipboard image"
msgstr "Obraz ze schowka"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Przeskocz do pierwszej nieprzeczytanej wiadomości"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Przeskocz do ostatniej wiadomości"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Przeciągnij tutaj elementy, aby je udostępnić"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1622,19 +1646,19 @@ msgstr[0] "%2 pisze"
msgstr[1] "%2 piszą"
msgstr[2] "%2 pisze"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Włącz szyfrowanie"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "Nie będzie można wyłączyć szyfrowania po jego włączeniu."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2027,18 +2051,18 @@ msgstr "Rozpocznij prywatną rozmowę"
msgid "Copy link"
msgstr "Skopiuj odnośnik"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Sprawdzenie posiedzenia"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Zgoda użytkownika"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2047,17 +2071,17 @@ msgstr ""
"Twój serwer domowy wymaga zgody na jego warunki, zanim będzie można go "
"używać. Aby je przeczytać, naciśnij na przycisk poniżej."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Otwórz"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Rozpocznij rozmowę"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Czy chcesz rozpocząć rozmowę z %1?"
@@ -2252,7 +2276,7 @@ msgid "Ban"
msgstr "Zbanuj"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2331,27 +2355,27 @@ msgstr "Znajdź '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Ustawienia skrótów sieciowych..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Usuń wiadomości"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Usuń wiadomość"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Powód usunięcia ostatnich wiadomości tego użytkownika"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Powód usunięcia tej wiadomości"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2652,8 +2676,8 @@ msgstr "Opuść pokój"
msgid "Explore rooms"
msgstr "Przeglądaj pokoje"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Twórz pokoje i rozmowy"
@@ -2814,31 +2838,37 @@ msgid "Search"
msgstr "Poszukaj"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "Poszukaj w tym pokoju"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Usuń pokój z ulubionych"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Dodaj pokój do ulubionych"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Członkowie"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Poszukaj użytkownika w pokoju"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Zaproś użytkownika do pokoju"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
@@ -2846,28 +2876,28 @@ msgstr[0] "%1 członek"
msgstr[1] "%1 członków"
msgstr[2] "%1 członków"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Brak liczby członków"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Ogólne"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Zabezpieczenia"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Uprawnienia"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Powiadomienia"
@@ -4097,9 +4127,6 @@ msgstr "Zakończ"
#~ msgid "Save as"
#~ msgstr "Zapisz jako"
#~ msgid "Close"
#~ msgstr "Zamknij"
#~ msgid " (edited)"
#~ msgstr " (edytowana)"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-06-09 23:16+0100\n"
"POT-Creation-Date: 2023-06-24 00:50+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"
"Language: pt\n"
@@ -126,91 +126,91 @@ msgstr "Destino"
msgid "Network Error"
msgstr "Erro de Rede"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Cliente do Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2023 da Comunidade do KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Manutenção"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Autor original do Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Manutenção do Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "José Nuno Pires"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "zepires@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
"Uma biblioteca do Qt5 para criar clientes multi-plataforma para o Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (compilado com a %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Cliente para o protocolo de comunicações Matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Suporta o esquema de URL's 'matrix:'"
@@ -657,24 +657,24 @@ msgstr "<i>[Esta mensagem foi removida]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Esta mensagem foi removida: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[REDIGIDO]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[REDIGIDO: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "1 utilizador: "
msgstr[1] "%1 utilizadores: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1089,7 +1089,7 @@ msgstr "Lat: %1, Lon: %2"
msgid "Encrypted Message"
msgstr "Mensagem Encriptada"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1325,6 +1325,16 @@ msgstr "Emojis"
msgid "Stickers"
msgstr "Autocolantes"
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr "Ver a Localização"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Fechar"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1351,6 +1361,17 @@ msgstr "Rejeitar"
msgid "Accept"
msgstr "Aceitar"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Localizações"
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr "Não se encontram localizações partilhadas nesta sala."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1584,22 +1605,22 @@ msgstr "Escolher um ficheiro local"
msgid "Clipboard image"
msgstr "Imagem da área de transferência"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Ir para a primeira mensagem não-lida"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Ir para a última mensagem"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Arraste os itens para aqui para os partilhar"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1607,19 +1628,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 está a escrever"
msgstr[1] "%2 estão a escrever"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Activar a Codificação"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "Não será possível desactivar a codificação depois de activada."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2011,18 +2032,18 @@ msgstr "Abrir uma conversa privada"
msgid "Copy link"
msgstr "Copiar a ligação"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Verificação da Sessão"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Consentimento do utilizador"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2031,17 +2052,17 @@ msgstr ""
"O seu servidor caseiro obriga a que concorde com os seus termos e condições "
"antes de o poder usar. Por favor carregue no botão abaixo para os ler."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Abrir"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Iniciar uma conversa"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Deseja iniciar uma conversa com %1?"
@@ -2236,7 +2257,7 @@ msgid "Ban"
msgstr "Banir"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2315,27 +2336,27 @@ msgstr "Procurar por '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Configurar os Atalhos Web..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Remover as Mensagens"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Remover a Mensagem"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Razão para remover as mensagens recentes deste utilizador"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Razão para remover esta mensagem"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2636,8 +2657,8 @@ msgstr "Sair da Sala"
msgid "Explore rooms"
msgstr "Explorar as salas"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Criar salas e conversas"
@@ -2797,58 +2818,63 @@ msgstr "Procurar"
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr "Mostrar as localizações desta sala"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Remover a sala dos favoritos"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Adicionar a sala aos favoritos"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Membros"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Procurar um utilizador nesta sala"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Convidar o utilizador para a sala"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 membro"
msgstr[1] "%1 membros"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Sem número de membros"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Geral"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Segurança"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Permissões"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Notificações"

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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-07 13:33-0300\n"
"Last-Translator: Luiz Fernando Ranghetti <elchevive@opensuse.org>\n"
"Language-Team: Brazilian Portuguese <kde-i18n-pt_BR@kde.org>\n"
@@ -124,92 +124,92 @@ msgstr "Destino"
msgid "Network Error"
msgstr "Erro de rede"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Cliente Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020-2022 KDE Community"
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2022 A comunidade KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Mantenedor"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Autor original do Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Mantenedor do Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Luiz Fernando Ranghetti, Thiago Masato Costa Sueto"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "elchevive@opensuse.org, herzenschein@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
"Uma biblioteca Qt5 para escrever clientes multiplataformas para o Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (compilado com %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Cliente para o protocolo de comunicação Matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, fuzzy, kde-format
#| msgid "Supports appstream: url scheme"
msgid "Supports matrix: url scheme"
@@ -718,24 +718,24 @@ msgstr "<i>[Esta mensagem foi excluída]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Esta mensagem foi excluída: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[CENSURADO]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[CENSURADO: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] ""
msgstr[1] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, fuzzy, kde-format
#| msgctxt "[action 1], [action 2 and action 3]"
#| msgid ", "
@@ -1176,7 +1176,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr "Mensagem criptografada"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1430,6 +1430,17 @@ msgstr "Emoji personalizado"
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send invitation"
msgid "View Location"
msgstr "Enviar convite"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Fechar"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1456,6 +1467,19 @@ msgstr "Rejeitar"
msgid "Accept"
msgstr "Aceitar"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Show notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Mostrar notificações"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Você já está nesta sala."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1691,22 +1715,22 @@ msgstr "Escolher arquivo local"
msgid "Clipboard image"
msgstr "Imagem da área de transferência"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Ir para primeira mensagem não lida"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Ir para a mensagem mais antiga"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Arraste itens aqui para compartilhar"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1714,20 +1738,20 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 está digitando"
msgstr[1] "%2 estão digitando"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, fuzzy, kde-format
#| msgid "activated End-to-End Encryption"
msgid "Activate Encryption"
msgstr "ativou criptografia ponta-a-ponta"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2103,19 +2127,19 @@ msgstr "Abrir um bate-papo privado:"
msgid "Copy link"
msgstr "Copiar"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, fuzzy, kde-format
#| msgid "Show notifications"
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Mostrar notificações"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Consentimento do usuário"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2124,17 +2148,17 @@ msgstr ""
"O seu homeserver requer que você concorde com seus termos e condições antes "
"de ser usado. Clique no botão abaixo para lê-los."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Abrir"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Iniciar um bate-papo"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Você gostaria de iniciar um bate-papo com %1?"
@@ -2331,7 +2355,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2413,29 +2437,29 @@ msgstr "Pesquisar por '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Configurar os atalhos da Web..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Edit Message"
msgid "Remove Messages"
msgstr "Editar mensagem"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Edit Message"
msgid "Remove Message"
msgstr "Editar mensagem"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button 'Remove' as in 'Remove this message'"
@@ -2749,8 +2773,8 @@ msgstr "Sair da sala"
msgid "Explore rooms"
msgstr "Explorar salas"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, fuzzy, kde-format
#| msgid "Rooms and private chats:"
msgid "Create rooms and chats"
@@ -2922,33 +2946,39 @@ msgid "Search"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "Show locations for this room"
msgstr "Abrir o NeoChat nesta sala"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Remover sala dos favoritos"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Marcar sala como favorito"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Membros"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "Search user in room"
msgstr "Abrir o NeoChat nesta sala"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, fuzzy, kde-format
#| msgid "%1 invited you to a room"
msgid "Invite user to room"
msgstr "%1 convidou você para uma sala"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "%1 Member"
#| msgid_plural "%1 Members"
@@ -2957,29 +2987,29 @@ msgid_plural "%1 members"
msgstr[0] "%1 membro"
msgstr[1] "%1 membros"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "No Member Count"
msgid "No member count"
msgstr "Sem contagem de membros"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Geral"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Segurança"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, fuzzy, kde-format
#| msgid "Show notifications"
msgid "Notifications"
@@ -4298,9 +4328,6 @@ msgstr "Sair"
#~ msgid "Save as"
#~ msgstr "Salvar como"
#~ msgid "Close"
#~ msgstr "Fechar"
#~ msgid " (edited)"
#~ msgstr "(editado)"

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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-04-27 15:01+0300\n"
"Last-Translator: Olesya Gerasimenko <translation-team@basealt.ru>\n"
"Language-Team: Basealt Translation Team\n"
@@ -127,17 +127,17 @@ msgstr "Назначение"
msgid "Network Error"
msgstr "Ошибка соединения"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Клиент Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020-2022 KDE Community"
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
@@ -145,75 +145,75 @@ msgstr ""
"© Black Hat 2018-2020\n"
"© Сообщество KDE 2020-2022"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Сопровождающий"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Первоначальный автор Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Алексей Русаков"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Сопровождающий Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Александр Яворский, Павел Чернышов, Олеся Герасименко"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "kekcuha@gmail.com, farline99@yandex.ru, translation-team@basealt.ru"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Библиотека Qt5 для написания кроссплатформенных клиентов Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (собрано с версией %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Клиент для протокола связи Matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Адрес, соответствующий схеме Matrix"
@@ -666,17 +666,17 @@ msgstr "<i>[Это сообщение было удалено]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Cообщение было удалено: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[ОТРЕДАКТИРОВАНО]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[ОТРЕДАКТИРОВАНО: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
@@ -685,7 +685,7 @@ msgstr[1] "%1 пользователя: "
msgstr[2] "%1 пользователей: "
msgstr[3] "1 пользователь: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1104,7 +1104,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr "Зашифрованное сообщение"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1350,6 +1350,16 @@ msgstr "Не найдено ни одного эмодзи"
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
msgid "View Location"
msgstr "Отправить приглашение"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Закрыть"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1376,6 +1386,19 @@ msgstr "Отклонить"
msgid "Accept"
msgstr "Принять"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Уведомления"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "Вы уже находитесь в этой комнате."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1611,22 +1634,22 @@ msgstr "Выберите файл на компьютере"
msgid "Clipboard image"
msgstr "Изображение из буфера обмена"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Перейти к первому непрочитанному сообщению"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Перейти к последнему сообщению"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Чтобы опубликовать файла, перетащите их сюда"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1636,19 +1659,19 @@ msgstr[1] "%2 набирают сообщение"
msgstr[2] "%2 набирают сообщение"
msgstr[3] "%2 набирает сообщение"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Включить шифрование"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "Отключить шифрование после его включения будет невозможно."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2024,18 +2047,18 @@ msgstr "Открыть личный чат"
msgid "Copy link"
msgstr "Копировать ссылку"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Проверка сеанса"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Согласие пользователя"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2045,17 +2068,17 @@ msgstr ""
"условиями, прежде чем сможете его использовать. Нажмите на кнопку, "
"расположенную ниже, ниже, чтобы прочитать их."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Открыть"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Начать общение"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Начать чат с %1?"
@@ -2250,7 +2273,7 @@ msgid "Ban"
msgstr "Заблокировать"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2329,27 +2352,27 @@ msgstr "Поиск «%1»"
msgid "Configure Web Shortcuts..."
msgstr "Настроить веб-сокращения…"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Удалить сообщения"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Удалить сообщение"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Причина удаления последних сообщений этого пользователя"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Причина удаления этого сообщения"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2652,8 +2675,8 @@ msgstr "Покинуть комнату"
msgid "Explore rooms"
msgstr "Просмотреть комнаты"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Создать комнаты и чаты"
@@ -2814,31 +2837,37 @@ msgid "Search"
msgstr "Поиск"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "Искать в этой комнате"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Убрать комнату из избранного"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Добавить комнату в избранное"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Участники"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Искать пользователя в комнате"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Пригласить пользователя в комнату"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
msgid "%1 member"
msgid_plural "%1 members"
@@ -2847,28 +2876,28 @@ msgstr[1] "%1 участника"
msgstr[2] "%1 участников"
msgstr[3] "%1 участник"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
msgid "No member count"
msgstr "Количество участников не подсчитывается"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Общие"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Безопасность"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Разрешения"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Уведомления"
@@ -4112,9 +4141,6 @@ msgstr "Выход"
#~ msgid "Save as"
#~ msgstr "Сохранить как"
#~ msgid "Close"
#~ msgstr "Закрыть"
#~ msgid " (edited)"
#~ 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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2022-04-18 17:58+0200\n"
"Last-Translator: Roman Paholik <wizzardsk@gmail.com>\n"
"Language-Team: Slovak <kde-sk@linux.sk>\n"
@@ -130,91 +130,91 @@ msgstr "Odoslať pozvanie"
msgid "Network Error"
msgstr "Chyba siete"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix client"
#: src/main.cpp:165
#: src/main.cpp:168
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020 KDE Community"
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020 KDE komunita"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr ""
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Roman Paholík"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "wizzardsk@gmail.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr ""
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Klient pre komunikačný protokol matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, fuzzy, kde-format
#| msgid "Supports appstream: url scheme"
msgid "Supports matrix: url scheme"
@@ -743,17 +743,17 @@ msgstr "<i>[Táto správa bola odstránená]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Táto správa bola odstránená: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[REVIDOVANÉ]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[REVIDOVANÉ: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
@@ -761,7 +761,7 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, fuzzy, kde-format
#| msgctxt "[action 1], [action 2 and action 3]"
#| msgid ", "
@@ -1201,7 +1201,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr "Upraviť správu"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1459,6 +1459,17 @@ msgstr "Vlastné"
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send invitation"
msgid "View Location"
msgstr "Odoslať pozvanie"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Zatvoriť"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1485,6 +1496,19 @@ msgstr "Odmietnuť"
msgid "Accept"
msgstr "Prijať"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Show notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Zobraziť upozornenia"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "There are no locations shared in this room."
msgstr "Otvoriť NeoChat v tejto miestnosti"
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1719,22 +1743,22 @@ msgstr "Vybrať miestny súbor"
msgid "Clipboard image"
msgstr "Obrázok schránky"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Skočiť na prvú neprečítanú správu"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Prejsť na najnovšiu správu"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Presuňte položky sem na zdieľanie"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1743,20 +1767,20 @@ msgstr[0] "%2 píše"
msgstr[1] "%2 píšu"
msgstr[2] "%2 píšu"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, fuzzy, kde-format
#| msgid "activated End-to-End Encryption"
msgid "Activate Encryption"
msgstr "aktivoval End-to-End šifrovanie"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2130,19 +2154,19 @@ msgstr "Otvoriť súkromný chat"
msgid "Copy link"
msgstr "Kopírovať"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, fuzzy, kde-format
#| msgid "Show notifications"
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Zobraziť upozornenia"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Používateľský súhlas"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2152,17 +2176,17 @@ msgstr ""
"zmluvnými podmienkami. Ak si ich chcete prečítať, kliknite na tlačidlo "
"nižšie."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Otvoriť"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Začať rozhovor"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Chcete začať rozhovor s %1?"
@@ -2364,7 +2388,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2446,29 +2470,29 @@ msgstr "Hľadať '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Nastaviť webové skratky..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Edit Message"
msgid "Remove Messages"
msgstr "Upraviť správu"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Edit Message"
msgid "Remove Message"
msgstr "Upraviť správu"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button 'Remove' as in 'Remove this message'"
@@ -2778,8 +2802,8 @@ msgstr "Opustiť miestnosť"
msgid "Explore rooms"
msgstr "Prehliadať miestnosti"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, fuzzy, kde-format
#| msgid "Rooms and private chats:"
msgid "Create rooms and chats"
@@ -2951,33 +2975,39 @@ msgid "Search"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "Show locations for this room"
msgstr "Otvoriť NeoChat v tejto miestnosti"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Odstrániť miestnosť z obľúbených"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Nastaviť miestnosť ako pbľúbenú"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Členovia"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "Search user in room"
msgstr "Otvoriť NeoChat v tejto miestnosti"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, fuzzy, kde-format
#| msgid "invited %1 to the room"
msgid "Invite user to room"
msgstr "pozval %1 do miestnosti"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "%1 Member"
#| msgid_plural "%1 Members"
@@ -2987,29 +3017,29 @@ msgstr[0] "%1 Člen"
msgstr[1] "%1 Členovia"
msgstr[2] "%1 Členov"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "No Member Count"
msgid "No member count"
msgstr "Žiadny počet členov"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Všeobecné"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Bezpečnosť"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, fuzzy, kde-format
#| msgid "Show notifications"
msgid "Notifications"
@@ -4307,9 +4337,6 @@ msgstr "Ukončiť"
#~ msgid "Save as"
#~ msgstr "Uložiť ako"
#~ msgid "Close"
#~ msgstr "Zatvoriť"
#~ msgid " (edited)"
#~ msgstr "(upravené)"

View File

@@ -8,16 +8,16 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-06-09 08:30+0200\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-24 07:31+0200\n"
"Last-Translator: Matjaž Jeran <matjaz.jeran@amis.net>\n"
"Language-Team: Slovenian <lugos-slo@lugos.si>\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100>=3 && n"
"%100<=4 ? 2 : 3);\n"
"X-Generator: Poedit 3.3.1\n"
#: src/controller.cpp:262
@@ -124,90 +124,90 @@ msgstr "Cilj"
msgid "Network Error"
msgstr "Napaka omrežja"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrixov odjemalec"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2023 skupnost KDE"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Vzdrževalec"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Izvorni avtor programa Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Vzdrževalec programa Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Matjaž Jeran,Martin Srebotnjak"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "matjaz.jeran@amis.net,miles@filmsi.net"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Knjižnica Qt5 za pisanje odjemalcev za več platform za Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (zgrajeno na %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Odjemalec za komunikacijski protokol matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Podpira matriko: shema url"
@@ -656,17 +656,17 @@ msgstr "<i>[To sporočilo je bilo izbrisano]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[To sporočilo je bilo izbrisano: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[PREKRIVANJE PODATKOV]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[PREKRIVANJE PODATKOV: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
@@ -675,7 +675,7 @@ msgstr[1] "%1 uporabnika: "
msgstr[2] "%1 uporabniki: "
msgstr[3] "%1 uporabnikov: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1094,7 +1094,7 @@ msgstr "Širina: %1, Dolžina: %2"
msgid "Encrypted Message"
msgstr "Šifrirano sporočilo"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1330,6 +1330,16 @@ msgstr "Čustvenčki"
msgid "Stickers"
msgstr "Nalepke"
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr "Poglej lokacijo"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Zapri"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1356,6 +1366,17 @@ msgstr "Zavračam"
msgid "Accept"
msgstr "Sprejemam"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Lokacije"
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr "Ni deljenih lokacij v tej sobi."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1590,22 +1611,22 @@ msgstr "Izberi lokalno datoteko"
msgid "Clipboard image"
msgstr "Slika odložišča"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Skoči na prvo neprebrano sporočilo"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Skoči na nedavno sporočilo"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Povleci predmete sem, da jih deliš z drugimi"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1615,19 +1636,19 @@ msgstr[1] "%2 tipkata"
msgstr[2] "%2 tipkajo"
msgstr[3] "%2 tipka"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Aktiviraj šifriranje"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "Ne bo mogoče deaktivirati šifriranja, potem ko je omogočeno."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2012,18 +2033,18 @@ msgstr "Odpri zasebni razgovor"
msgid "Copy link"
msgstr "Kopiraj povezavo"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Verifikacija seje"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Privoljenje uporabnika"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2032,17 +2053,17 @@ msgstr ""
"Vaš domači strežnik zahteva, da se strinjate s pogoji njegove rabe pred "
"dovoljenjem za uporabo. Prosimo, kliknite spodnji gumb, da jih preberete."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Odpri"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Začni pogovor"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Ali želite začeti pogovor s %1?"
@@ -2237,7 +2258,7 @@ msgid "Ban"
msgstr "Prepoved"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2316,27 +2337,27 @@ msgstr "Poišči za '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Nastavi spletne bližnjice…"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Odstrani sporočila"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Odstrani sporočilo"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Razlog za odstranjevanje nedavnih sporočil tega uporabnika"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Razlog za odstranjevanje tega sporočila"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2637,8 +2658,8 @@ msgstr "Zapusti sobo"
msgid "Explore rooms"
msgstr "Razišči sobe"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Ustvari sobe in klepete"
@@ -2798,30 +2819,35 @@ msgstr "Išči"
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr "Pokaži lokacije za to sobo"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Odstrani sobo izmed priljubljenih"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Proglasi sobo za priljubljeno"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Člani"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Išči uporabnika v sobi"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Povabite uporabnika v sobo"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
@@ -2830,28 +2856,28 @@ msgstr[1] "%1 člana"
msgstr[2] "%1 člani"
msgstr[3] "%1 članov"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Ni števila članov"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Splošno"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Varnost"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Dovoljenja"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Obvestila"
@@ -4064,9 +4090,6 @@ msgstr "Zapusti"
#~ msgid "Save as"
#~ msgstr "Shrani kot"
#~ msgid "Close"
#~ msgstr "Zapri"
#~ msgid " (edited)"
#~ msgstr " (urejano)"

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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2022-09-28 16:37+0200\n"
"Last-Translator: Stefan Asserhäll <stefan.asserhall@bredband.net>\n"
"Language-Team: Swedish <kde-i18n-doc@kde.org>\n"
@@ -130,91 +130,91 @@ msgstr "Skicka inbjudan"
msgid "Network Error"
msgstr "Nätverksfel"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix-klient"
#: src/main.cpp:165
#: src/main.cpp:168
#, fuzzy, kde-format
#| msgid "© 2018-2020 Black Hat, 2020-2022 KDE Community"
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2022 KDE-gemenskapen"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr ""
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Stefan Asserhäll"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "stefan.asserhall@bredband.net"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Att Qt5-bibliotek för att skriva Matrix-klienter för flera plattformar"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr ""
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Klient för kommunikationsprotokollet Matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, fuzzy, kde-format
#| msgid "Supports appstream: url scheme"
msgid "Supports matrix: url scheme"
@@ -740,24 +740,24 @@ msgstr "<i>[Meddelandet har tagits bort]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Meddelandet har tagits bort: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[ÄNDRAD]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[ÄNDRAD: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] ""
msgstr[1] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, fuzzy, kde-format
#| msgctxt "[action 1], [action 2 and action 3]"
#| msgid ", "
@@ -1198,7 +1198,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr "Redigera meddelande"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1452,6 +1452,17 @@ msgstr "Egna emoji"
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send invitation"
msgid "View Location"
msgstr "Skicka inbjudan"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Stäng"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1478,6 +1489,19 @@ msgstr "Avslå"
msgid "Accept"
msgstr "Acceptera"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Underrättelser"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "There are no locations shared in this room."
msgstr "Öppna NeoChat för rummet"
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1713,22 +1737,22 @@ msgstr "Välj lokal fil"
msgid "Clipboard image"
msgstr "Klippbordsbild"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Gå till första olästa meddelande"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Gå till sista meddelande"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Dra objekt hit för att dela dem"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1736,20 +1760,20 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 skriver"
msgstr[1] "%2 skriver"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, fuzzy, kde-format
#| msgid "activated End-to-End Encryption"
msgid "Activate Encryption"
msgstr "aktiverade kryptering hela vägen"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2147,18 +2171,18 @@ msgstr "Starta en privat chatt"
msgid "Copy link"
msgstr "Kopiera"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Sessionsverifikation"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Användargodkännande"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2167,17 +2191,17 @@ msgstr ""
"Din hemserver kräver att du godkänner dess villkor innan den kan användas. "
"Klicka på knappen nedan för att läsa dem."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Öppna"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Starta en chatt"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Vill du starta en chatt med %1?"
@@ -2374,7 +2398,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2456,31 +2480,31 @@ msgstr "Sök efter '%1'"
msgid "Configure Web Shortcuts..."
msgstr "Anpassa webbgenvägar..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Report Message"
msgid "Remove Messages"
msgstr "Rapportera meddelande"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Report Message"
msgid "Remove Message"
msgstr "Rapportera meddelande"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, fuzzy, kde-format
#| msgid "Reason for reporting this message"
msgid "Reason for removing this user's recent messages"
msgstr "Anledning att meddelandet rapporteras"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, fuzzy, kde-format
#| msgid "Reason for reporting this message"
msgid "Reason for removing this message"
msgstr "Anledning att meddelandet rapporteras"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, fuzzy, kde-format
#| msgid "Remove"
msgctxt "@action:button 'Remove' as in 'Remove this message'"
@@ -2786,8 +2810,8 @@ msgstr "Lämna rum"
msgid "Explore rooms"
msgstr "Utforska rum"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, fuzzy, kde-format
#| msgid "Rooms and private chats:"
msgid "Create rooms and chats"
@@ -2960,32 +2984,38 @@ msgid "Search"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "Show locations for this room"
msgstr "Öppna NeoChat för rummet"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Ta bort rum från favoriter"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Gör rum till favorit"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Medlemmar"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, fuzzy, kde-format
#| msgid "Open NeoChat in this room"
msgid "Search user in room"
msgstr "Öppna NeoChat för rummet"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Bjöd in användare till ett rum"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "%1 Member"
#| msgid_plural "%1 Members"
@@ -2994,29 +3024,29 @@ msgid_plural "%1 members"
msgstr[0] "%1 medlem"
msgstr[1] "%1 medlemmar"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, fuzzy, kde-format
#| msgid "No Member Count"
msgid "No member count"
msgstr "Ingen medlemsräkning"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Allmänt"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Säkerhet"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Underrättelser"
@@ -4324,9 +4354,6 @@ msgstr "Avsluta"
#~ msgid "Save as"
#~ msgstr "Spara som"
#~ msgid "Close"
#~ msgstr "Stäng"
#~ msgid " (edited)"
#~ msgstr " (redigerad)"

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: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-06-11 17:29+0530\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-18 14:28+0530\n"
"Last-Translator: Kishore G <kishore96@gmail.com>\n"
"Language-Team: Tamil <kde-i18n-doc@kde.org>\n"
"Language: ta\n"
@@ -123,90 +123,90 @@ msgstr "சேருமிடம்"
msgid "Network Error"
msgstr "பிணைய சிக்கல்"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "நியோச்சாட்"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix வாங்கி"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 பிளாக் ஹாட், 2020-2023 கே.டீ.யீ. சமூகம்"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "கார்ல் ஷுவான்"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "பராமரிப்பாளர்"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "டோபியாஸ் ஃபெல்லா"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "ஜேம்சு கிரஹாம்"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "பிளாக் ஹாட்"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Spectral-ஐ முதலில் இயற்றியவர்"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "அலெக்செய் ருசாக்கொவ்"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Quotient-இன் பராமரிப்பாளர்"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "கோ. கிஷோர்"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "Kde-l10n-ta@kde.org"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "மேட்ரிக்ஸுக்கான பல்லியங்குதள செயலிகளை எழுத உதவும் Qt5 நிரலகம்"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (%2 கொண்டு தொகுக்கப்பட்டது)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Matrix தொடர்பு நெறிமுறைக்கான வாங்கி"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "matrix: முகவரி திட்டமுறையை ஆதரிக்கும்"
@@ -557,7 +557,7 @@ msgstr ", "
#, kde-format
msgctxt "[action 1, action 2] or [action 3]"
msgid " or "
msgstr "அல்லது"
msgstr " அல்லது "
#: src/models/collapsestateproxymodel.cpp:94
#, kde-format
@@ -653,24 +653,24 @@ msgstr "<i>[இந்த செய்தி நீக்கப்பட்டத
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[இந்த செய்தி நீக்கப்பட்டது: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[தணிக்கை செய்யப்பட்டது]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[தணிக்கை செய்யப்பட்டது: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "1 பயனர்: "
msgstr[1] "%1 பயனர்கள்: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1085,7 +1085,7 @@ msgstr "அட்ச: %1, தீர்க்க: %2"
msgid "Encrypted Message"
msgstr "மறையாக்கப்பட்டுள்ள செய்தி"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1321,6 +1321,17 @@ msgstr "முகவடிகள்"
msgid "Stickers"
msgstr "ஒட்டிகள்"
#: src/qml/Component/FullScreenMap.qml:23
#, fuzzy, kde-format
#| msgid "Send a Location"
msgid "View Location"
msgstr "இடத்தை அனுப்பு"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "மூடு"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1347,6 +1358,19 @@ msgstr "மறு"
msgid "Accept"
msgstr "ஏற்றுக்கொள்"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "அறிவிப்புகள்"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "நீங்கள் ஏற்கனவே இவ்வரங்கில் உள்ளிர்கள்."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1579,22 +1603,22 @@ msgstr "உள்ளமைக் கோப்பைத் தேர்ந்த
msgid "Clipboard image"
msgstr "பிடிப்புப்பலகைப் படம்"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "படிக்காத முதல் செய்திக்குத் தாவு"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "கடைசி செய்திக்குத் தாவு"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "எதையாவது பகிர, அதை இங்கு இழுத்துப் போடுங்கள்"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1602,19 +1626,19 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 தட்டச்சிடுகிறார்"
msgstr[1] "%2 தட்டச்சிடுகிறார்கள்"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "மறையாக்கத்தை செயல்படுத்து"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "மறையாக்கத்தை செயல்படுத்தியபின் அதை முடக்க முடியாது."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1986,18 +2010,18 @@ msgstr "தனிப்பட்ட உரையாடலைத் துவக
msgid "Copy link"
msgstr "இணைப்பை நகலெடு"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "அமர்வு உறுதிப்பாடு"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "பயனர் ஒப்புதல்"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2006,17 +2030,17 @@ msgstr ""
"பயன்படுத்துமுன் அதன் விதிமுறைகளை ஏற்குமாறு உங்கள் தாய் சேவையகம் உங்களை "
"கட்டாயப்படுத்துகிறது. அவற்றைப் படிக்க கீழுள்ள பட்டனைத் தட்டுங்கள்."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "திற"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "உரையாடலைத் துவக்கு"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "உறுதியாக %1 என்பவருடன் உரையாடலைத் துவக்க வேண்டுமா?"
@@ -2211,7 +2235,7 @@ msgid "Ban"
msgstr "தடை செய்"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2290,27 +2314,27 @@ msgstr "'%1' என்பதை தேடு"
msgid "Configure Web Shortcuts..."
msgstr "இணைய சுருக்குவழிகளை அமை..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "செய்திகளை நீக்குவது"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "செய்தியை நீக்குவது"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "இப்பயனரின் சமீபத்திய செய்திகளை நீக்குவதற்கான காரணம்"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "இச்செய்தியை நீக்குவதற்கான காரணம்"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2611,8 +2635,8 @@ msgstr "அரங்கிலிருந்து வெளியேறு"
msgid "Explore rooms"
msgstr "அரங்குகளை உலாவுங்கள்"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "அரங்குகளையும் தனிப்பட்ட உரையாடல்களையும் உருவாக்கு"
@@ -2771,59 +2795,65 @@ msgid "Search"
msgstr "தேடல்"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "இவ்வரங்கில் தேடு"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "பிடித்தவற்றிலிருந்து அரங்கை நீக்கு"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "அரங்கைப் பிடித்ததாகக் குறி"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "உறுப்பினர்கள்"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "அரங்கில் பயனரை கண்டுபிடி"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "பயனரை ஓர் அரங்குக்கு வரவழை"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 உறுப்பினர்"
msgstr[1] "%1 உறுப்பினர்கள்"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "உறுப்பினர்களின் எண்ணிக்கை தெரியாதது"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "பொது"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "பாதுகாப்பு"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "அனுமதிகள்"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "அறிவிப்புகள்"
@@ -4032,9 +4062,6 @@ msgstr "வெளியேறு"
#~ msgid "Save as"
#~ msgstr "வேறு பெயரில் சேமி"
#~ msgid "Close"
#~ msgstr "மூடு"
#~ msgid " (edited)"
#~ 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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2022-06-20 03:30+0000\n"
"Last-Translator: Weblate Admin <admin@example.com>\n"
"Language-Team: Toki Pona <http://weblate.blackquill.cc/projects/ante-toki-pi-"
@@ -129,90 +129,90 @@ msgstr ""
msgid "Network Error"
msgstr ""
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr ""
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr ""
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr ""
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr ""
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr ""
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr ""
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "kulupu pi ante toki pi toki pona"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr ""
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr ""
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr ""
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr ""
@@ -675,17 +675,17 @@ msgstr ""
msgid "<i>[This message was deleted: %1]</i>"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr ""
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
@@ -694,7 +694,7 @@ msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1120,7 +1120,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr "o ante e toki"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr ""
@@ -1362,6 +1362,16 @@ msgstr "sitelen Emosi sina"
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "o weka"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1388,6 +1398,17 @@ msgstr ""
msgid "Accept"
msgstr ""
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr ""
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr ""
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1623,22 +1644,22 @@ msgstr ""
msgid "Clipboard image"
msgstr ""
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr ""
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr ""
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr ""
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1648,19 +1669,19 @@ msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2030,35 +2051,35 @@ msgstr "o open e tomo toki pi sina tu taso"
msgid "Copy link"
msgstr "o tu e lipu tawa lipu jo"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr ""
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr ""
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them."
msgstr ""
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "o open"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr ""
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr ""
@@ -2255,7 +2276,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2337,29 +2358,29 @@ msgstr ""
msgid "Configure Web Shortcuts..."
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Edit Message"
msgid "Remove Messages"
msgstr "o ante e toki"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, fuzzy, kde-format
#| msgid "Edit Message"
msgid "Remove Message"
msgstr "o ante e toki"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2661,8 +2682,8 @@ msgstr ""
msgid "Explore rooms"
msgstr ""
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, fuzzy, kde-format
#| msgid "Open a private chat"
msgid "Create rooms and chats"
@@ -2826,30 +2847,35 @@ msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
@@ -2858,28 +2884,28 @@ msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr ""
@@ -4073,9 +4099,6 @@ msgstr ""
#~ msgid "Save as"
#~ msgstr "o awen sona"
#~ msgid "Close"
#~ msgstr "o weka"
#~ msgid " (edited)"
#~ msgstr " (ante)"

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: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-06-09 12:30+0300\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-24 12:54+0300\n"
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
"Language-Team: Turkish <kde-l10n-tr@kde.org>\n"
"Language: tr\n"
@@ -123,90 +123,90 @@ msgstr "Hedef"
msgid "Network Error"
msgstr "Ağ Hatası"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix istemcisi"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© 2018-2020 Black Hat, 2020-2023 KDE Topluluğu"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Bakımcı"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Spectral'in özgün yazarı"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Aleksey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Quotient bakımcısı"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Emir SARI"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "emir_sari@icloud.com"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "Matrix için çapraz platform istemciler yazmak için bir Qt5 kitaplığı"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (%2 üzerine yapılı)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Matrix iletişim protokolü için istemci"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "matrix: URL şemasını destekler"
@@ -651,24 +651,24 @@ msgstr "<i>[Bu ileti silindi]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Bu ileti silindi: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[DEĞİŞTİRİLDİ]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[DEĞİŞTİRİLDİ: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] "%1 kullanıcı: "
msgstr[1] "%1 kullanıcı: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1083,7 +1083,7 @@ msgstr "Enlem: %1, Boylam: %2"
msgid "Encrypted Message"
msgstr "Şifreli İleti"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1319,6 +1319,16 @@ msgstr "Emojiler"
msgid "Stickers"
msgstr "Yapışkanlar"
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr "Konumu Görüntüle"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Kapat"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1345,6 +1355,17 @@ msgstr "Reddet"
msgid "Accept"
msgstr "Kabul Et"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Konumlar"
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr "Bu odada paylaşılmış bir konum yok."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1576,22 +1597,22 @@ msgstr "Yerel dosya seçin"
msgid "Clipboard image"
msgstr "Pano görseli"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "İlk okunmamış iletiye atla"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "En son iletiye atla"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Onları paylaşmak için ögeleri buraya sürükleyin"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1599,13 +1620,13 @@ msgid_plural "%2 are typing"
msgstr[0] "%2 yazıyor"
msgstr[1] "%2 yazıyor"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Şifrelemeyi Etkinleştir"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
@@ -1613,7 +1634,7 @@ msgstr ""
"Şifreleme etkinleştirildikten sonra onu devre dışı bırakmak olanaklı "
"olmayacak."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1997,18 +2018,18 @@ msgstr "Özel bir sohbet aç"
msgid "Copy link"
msgstr "Bağlantıyı kopyala"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Oturum Doğrulama"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Kullanıcı onayı"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2017,17 +2038,17 @@ msgstr ""
"Ana sunucunuz, kullanım öncesinde kullanım koşullarını kabul etmenizi "
"gerektiriyor. Okumak için aşağıdaki düğmeye tıklayın."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Aç"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Bir sohbet başlat"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "%1 ile bir sohbet başlatmak istiyor musunuz?"
@@ -2222,7 +2243,7 @@ msgid "Ban"
msgstr "Yasakla"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2301,27 +2322,27 @@ msgstr "'%1' ara"
msgid "Configure Web Shortcuts..."
msgstr "Web Kısayollarını Yapılandır..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "İletileri Kaldır"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "İletiyi Kaldır"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Bu kullanıcının son iletisini kaldırma gerekçesi"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Bu iletiyi kaldırma gerekçesi"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2622,8 +2643,8 @@ msgstr "Odadan Ayrıl"
msgid "Explore rooms"
msgstr "Odaları Keşfet"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Odalar ve sohbetler oluştur"
@@ -2783,58 +2804,63 @@ msgstr "Ara"
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr "Bu oda için olan konumları göster"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Odayı sık kullanılanlardan kaldır"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Odayı sık kullanılanlara ekle"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Üyeler"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Kullanıcıyı odada ara"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Kullanıcıyı odaya davet et"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] "%1 üye"
msgstr[1] "%1 üye"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Üye sayısı yok"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Genel"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Güvenlik"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "İzinler"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Bildirimler"
@@ -4046,9 +4072,6 @@ msgstr "Çık"
#~ msgid "Save as"
#~ msgstr "Farklı Kaydet"
#~ msgid "Close"
#~ msgstr "Kapat"
#~ msgid " (edited)"
#~ msgstr " (düzenlendi)"

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-06-09 17:30+0300\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-24 08:02+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
"Language: uk\n"
@@ -127,92 +127,92 @@ msgstr "Призначення"
msgid "Network Error"
msgstr "Помилка у мережі"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Клієнт Matrix"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr "© Black Hat, 2018-2020, Спільнота KDE, 20202023"
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "Супровідник"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Перший автор Spectral"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Супровідник Quotient"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Юрій Чорноіван"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "yurchor@ukr.net"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
"Бібліотека Qt5 для написання багатоплатформових клієнтських програм для "
"Matrix"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (зібрано з %2)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Клієнт для протоколу обміну даними matrix"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "Передбачає підтримку схеми адрес matrix:"
@@ -663,17 +663,17 @@ msgstr "<i>[Це повідомлення було вилучено]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[Це повідомлення було вилучено: %1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr "[ЗМІНЕНО]"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr "[ЗМІНЕНО: %1]"
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
@@ -682,7 +682,7 @@ msgstr[1] "%1 користувачі: "
msgstr[2] "%1 користувачів: "
msgstr[3] "%1 користувач: "
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1101,7 +1101,7 @@ msgstr "Шир: %1, Довг: %2"
msgid "Encrypted Message"
msgstr "Зашифроване повідомлення"
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr "%1: %2"
@@ -1339,6 +1339,16 @@ msgstr "Емоційки"
msgid "Stickers"
msgstr "Наліпки"
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr "Надіслати дані місця"
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr "Закрити"
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1365,6 +1375,17 @@ msgstr "Відкинути"
msgid "Accept"
msgstr "Прийняти"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr "Місця"
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr "У цій кімнаті не оприлюднюються місця перебування."
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1600,22 +1621,22 @@ msgstr "Виберіть локальний файл"
msgid "Clipboard image"
msgstr "Зображення з буфера"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "Перейти до першого непрочитаного повідомлення"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "Перейти до останнього повідомлення"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "Перетягніть пункти сюди, щоб оприлюднити їх"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
@@ -1625,19 +1646,19 @@ msgstr[1] "%2 вводять текст…"
msgstr[2] "%2 вводять текст…"
msgstr[3] "%2 вводить текст…"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "Задіяти шифрування"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "Після вмикання шифрування його не можна буде вимкнути."
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -2023,18 +2044,18 @@ msgstr "Відкрити особисте спілкування"
msgid "Copy link"
msgstr "Копіювати посилання"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr "Перевірка сеансу"
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "Згода користувача"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -2044,17 +2065,17 @@ msgstr ""
"використання. Будь ласка, натисніть розташовану нижче кнопку для того, щоб "
"ознайомитися з ними."
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "Відкрити"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "Почати спілкування"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "Хочете розпочати спілкування з %1?"
@@ -2249,7 +2270,7 @@ msgid "Ban"
msgstr "Заблокувати"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2328,27 +2349,27 @@ msgstr "Пошук «%1»"
msgid "Configure Web Shortcuts..."
msgstr "Налаштувати вебскорочення…"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr "Вилучити повідомлення"
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr "Вилучити повідомлення"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr "Причина вилучення нещодавніх повідомлень цього користувача"
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr "Причина вилучення цього повідомлення"
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2649,8 +2670,8 @@ msgstr "Полишити кімнату"
msgid "Explore rooms"
msgstr "Ознайомитися з кімнатами"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr "Створити кімнати і спілкування"
@@ -2810,30 +2831,35 @@ msgstr "Пошук"
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr "Показувати місця перебування для цієї кімнати"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "Вилучити кімнату з улюблених"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "Зробити кімнату улюбленою"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "Учасники"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr "Шукати користувача у кімнаті"
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "Запросити користувача до кімнати"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
@@ -2842,28 +2868,28 @@ msgstr[1] "%1 учасники"
msgstr[2] "%1 учасників"
msgstr[3] "%1 учасник"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr "Немає лічильника учасників"
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "Загальне"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "Захист"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "Права доступу"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "Сповіщення"
@@ -4089,9 +4115,6 @@ msgstr "Вийти"
#~ msgid "Save as"
#~ msgstr "Зберегти як"
#~ msgid "Close"
#~ msgstr "Закрити"
#~ msgid " (edited)"
#~ msgstr " (змінено)"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: kdeorg\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-06-11 00:47+0000\n"
"PO-Revision-Date: 2023-05-22 14:01\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2023-06-17 04:12\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -80,16 +80,14 @@ msgid "Contact your matrix server administrator for support."
msgstr ""
#: src/controller.cpp:531
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
#, kde-format
msgid "Room creation failed: %1"
msgstr "聊天室创建失败:\"%1\""
msgstr ""
#: src/controller.cpp:552
#, fuzzy, kde-format
#| msgid "Room creation failed: \"%1\""
#, kde-format
msgid "Space creation failed: %1"
msgstr "聊天室创建失败:\"%1\""
msgstr ""
#: src/controller.cpp:566
#, kde-format
@@ -125,62 +123,62 @@ msgstr ""
msgid "Network Error"
msgstr "网络错误"
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr "NeoChat"
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr "Matrix 客户端"
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr ""
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr "Carl Schwan"
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr "维护人员"
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr "Tobias Fella"
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr "James Graham"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr "Black Hat"
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr "Spectral 的原作者"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr "Alexey Rusakov"
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr "Quotient 的维护人员"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
@@ -188,7 +186,7 @@ msgstr ""
"KDE China (中国), Guo Yunhe (郭云鹤), Yang Boyuan (杨博远), Coelacanthus, "
"Tyson Tan (钛山), Gary Wang"
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
@@ -196,23 +194,23 @@ msgstr ""
"kde-china@kde.org, i@guoyunhe.me, 073plan@gmail.com, coelacanthus@kde.org, "
"tysontan@tysontan.com, git@blumia.net"
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr "一个用于编写跨平台 Matrix 客户端的 Qt5 库"
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr "%1 (使用 %2 构建)"
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr "Matrix 通信协议客户端"
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr "支持 matrix: URL 协议"
@@ -640,11 +638,10 @@ msgid "Own Stickers"
msgstr ""
#: src/models/imagepacksmodel.cpp:90
#, fuzzy, kde-format
#| msgid "Add Emoji..."
#, kde-format
msgctxt "As in 'The user's own emojis"
msgid "Own Emojis"
msgstr "添加表情..."
msgstr ""
#: src/models/messageeventmodel.cpp:477 src/models/messageeventmodel.cpp:486
#, kde-format
@@ -656,23 +653,23 @@ msgstr "<i>[这条消息已被删除]</i>"
msgid "<i>[This message was deleted: %1]</i>"
msgstr "<i>[这条消息已被删除:%1]</i>"
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr ""
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1085,7 +1082,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr ""
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr ""
@@ -1319,6 +1316,16 @@ msgstr ""
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr ""
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1345,6 +1352,19 @@ msgstr "拒绝"
msgid "Accept"
msgstr "接受"
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, fuzzy, kde-format
#| msgid "Notifications"
msgctxt "Locations on a map"
msgid "Locations"
msgstr "通知"
#: src/qml/Component/LocationPage.qml:51
#, fuzzy, kde-format
#| msgid "You are already in this room."
msgid "There are no locations shared in this room."
msgstr "你已经在这个聊天室了。"
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1575,41 +1595,41 @@ msgstr "选择本地文件"
msgid "Clipboard image"
msgstr "剪贴板图像"
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr "跳转到第一条未读消息"
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr "跳转到最新消息"
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr "拖动项目到此处来分享"
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
msgid_plural "%2 are typing"
msgstr[0] "%2 正在輸入"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr "激活加密"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr "启用后无法停用加密。"
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1652,26 +1672,20 @@ msgstr "确定"
#: src/qml/Dialog/CreateSpaceDialog.qml:15
#: src/qml/Page/RoomList/ExploreComponent.qml:40
#, fuzzy, kde-format
#| msgctxt "'Space' is a matrix space"
#| msgid "Leave Space"
#, kde-format
msgid "Create a Space"
msgstr "离开空间"
msgstr ""
#: src/qml/Dialog/CreateSpaceDialog.qml:23
#, fuzzy, kde-format
#| msgctxt "'Space' is a matrix space"
#| msgid "Leave Space"
#, kde-format
msgctxt "@title"
msgid "Create a Space"
msgstr "离开空间"
msgstr ""
#: src/qml/Dialog/CreateSpaceDialog.qml:27
#, fuzzy, kde-format
#| msgctxt "@option:check"
#| msgid "Space members"
#, kde-format
msgid "Space name"
msgstr "空间成员"
msgstr ""
#: src/qml/Dialog/CreateSpaceDialog.qml:31
#, kde-format
@@ -1679,11 +1693,9 @@ msgid "Space topic (optional)"
msgstr ""
#: src/qml/Dialog/CreateSpaceDialog.qml:34
#, fuzzy, kde-format
#| msgctxt "'Space' is a matrix space"
#| msgid "Leave Space"
#, kde-format
msgid "Create space"
msgstr "离开空间"
msgstr ""
#: src/qml/Dialog/KeyVerification/EmojiSas.qml:23
#, kde-format
@@ -1978,18 +1990,18 @@ msgstr "打开私聊"
msgid "Copy link"
msgstr "复制链接"
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr ""
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr "用户许可"
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
@@ -1998,17 +2010,17 @@ msgstr ""
"您的主服务器需要您同意它的条款和条件,然后才能使用。请点击下面的按钮阅读它"
"们。"
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr "打开"
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr "开始聊天"
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr "您想要与 %1 开始聊天吗?"
@@ -2203,7 +2215,7 @@ msgid "Ban"
msgstr "封禁"
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2282,27 +2294,27 @@ msgstr ""
msgid "Configure Web Shortcuts..."
msgstr "配置网页快捷键..."
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2601,8 +2613,8 @@ msgstr "离开聊天室"
msgid "Explore rooms"
msgstr "探索聊天室"
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr ""
@@ -2761,58 +2773,64 @@ msgid "Search"
msgstr "搜索"
#: src/qml/Panel/RoomDrawer.qml:150
#, fuzzy, kde-format
#| msgid "Search in this room"
msgid "Show locations for this room"
msgstr "在此聊天室中搜索"
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr "从收藏夹中移除聊天室"
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr "收藏聊天室"
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr "成员"
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr "邀请用户到聊天室"
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr "常规"
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr "安全"
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr "权限"
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr "通知"
@@ -3460,19 +3478,17 @@ msgstr ""
#: src/qml/Settings/EmoticonEditorPage.qml:31
#: src/qml/Settings/EmoticonFormCard.qml:59
#, fuzzy, kde-format
#| msgid "Add Emoji..."
#, kde-format
msgctxt "@title"
msgid "Edit Emoji"
msgstr "添加表情..."
msgstr ""
#: src/qml/Settings/EmoticonEditorPage.qml:31
#: src/qml/Settings/EmoticonFormCard.qml:109
#, fuzzy, kde-format
#| msgid "Add Emoji..."
#, kde-format
msgctxt "@title"
msgid "Add Emoji"
msgstr "添加表情..."
msgstr ""
#: src/qml/Settings/EmoticonEditorPage.qml:40
#, kde-format
@@ -3511,10 +3527,9 @@ msgid "No Description"
msgstr ""
#: src/qml/Settings/EmoticonFormCard.qml:118
#, fuzzy, kde-format
#| msgid "Add Emoji..."
#, kde-format
msgid "Add Emoji"
msgstr "添加表情..."
msgstr ""
#: src/qml/Settings/EmoticonFormCard.qml:118
#, kde-format
@@ -3967,13 +3982,3 @@ msgstr "显示"
#, kde-format
msgid "Quit"
msgstr "退出"
#~ msgctxt "@title:window"
#~ msgid "Custom Emojis"
#~ msgstr "自定义表情"
#~ msgid "Images (*.png *.gif *.webp)"
#~ msgstr "图片 (*.png *.gif *.webp)"
#~ msgid "Custom Emojis"
#~ 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: 2023-06-11 00:47+0000\n"
"POT-Creation-Date: 2023-06-24 00:50+0000\n"
"PO-Revision-Date: 2022-12-30 18:05+0900\n"
"Last-Translator: Kisaragi Hiu <mail@kisaragi-hiu.com>\n"
"Language-Team: Traditional Chinese <zh-l10n@linux.org.tw>\n"
@@ -124,90 +124,90 @@ msgstr ""
msgid "Network Error"
msgstr ""
#: src/main.cpp:161
#: src/main.cpp:164
#, kde-format
msgid "NeoChat"
msgstr ""
#: src/main.cpp:163
#: src/main.cpp:166
#, kde-format
msgid "Matrix client"
msgstr ""
#: src/main.cpp:165
#: src/main.cpp:168
#, kde-format
msgid "© 2018-2020 Black Hat, 2020-2023 KDE Community"
msgstr ""
#: src/main.cpp:166
#: src/main.cpp:169
#, kde-format
msgid "Carl Schwan"
msgstr ""
#: src/main.cpp:166 src/main.cpp:167 src/main.cpp:168
#: src/main.cpp:169 src/main.cpp:170 src/main.cpp:171
#, kde-format
msgid "Maintainer"
msgstr ""
#: src/main.cpp:167
#: src/main.cpp:170
#, kde-format
msgid "Tobias Fella"
msgstr ""
#: src/main.cpp:168
#: src/main.cpp:171
#, kde-format
msgid "James Graham"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Black Hat"
msgstr ""
#: src/main.cpp:169
#: src/main.cpp:172
#, kde-format
msgid "Original author of Spectral"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Alexey Rusakov"
msgstr ""
#: src/main.cpp:170
#: src/main.cpp:173
#, kde-format
msgid "Maintainer of Quotient"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr ""
#: src/main.cpp:171
#: src/main.cpp:174
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr ""
#: src/main.cpp:175
#: src/main.cpp:178
#, kde-format
msgid "A Qt5 library to write cross-platform clients for Matrix"
msgstr ""
#: src/main.cpp:178
#: src/main.cpp:181
#, kde-format
msgctxt "<version number> (built against <possibly different version number>)"
msgid "%1 (built against %2)"
msgstr ""
#: src/main.cpp:324
#: src/main.cpp:332
#, kde-format
msgid "Client for the matrix communication protocol"
msgstr ""
#: src/main.cpp:325
#: src/main.cpp:333
#, kde-format
msgid "Supports matrix: url scheme"
msgstr ""
@@ -650,23 +650,23 @@ msgstr ""
msgid "<i>[This message was deleted: %1]</i>"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED]"
msgstr ""
#: src/models/messageeventmodel.cpp:553
#: src/models/messageeventmodel.cpp:556
#, kde-format
msgid "[REDACTED: %1]"
msgstr ""
#: src/models/messageeventmodel.cpp:862
#: src/models/messageeventmodel.cpp:870
#, kde-format
msgid "1 user: "
msgid_plural "%1 users: "
msgstr[0] ""
#: src/models/messageeventmodel.cpp:869
#: src/models/messageeventmodel.cpp:877
#, kde-format
msgctxt "list separator"
msgid ", "
@@ -1079,7 +1079,7 @@ msgstr ""
msgid "Encrypted Message"
msgstr ""
#: src/notificationsmanager.cpp:217 src/qml/main.qml:254
#: src/notificationsmanager.cpp:217 src/qml/main.qml:257
#, kde-format
msgid "%1: %2"
msgstr ""
@@ -1313,6 +1313,16 @@ msgstr ""
msgid "Stickers"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:23
#, kde-format
msgid "View Location"
msgstr ""
#: src/qml/Component/FullScreenMap.qml:64
#, kde-format
msgid "Close"
msgstr ""
#: src/qml/Component/HoverActions.qml:79
#, kde-format
msgid "This message was sent from a verified device"
@@ -1339,6 +1349,17 @@ msgstr ""
msgid "Accept"
msgstr ""
#: src/qml/Component/LocationPage.qml:17 src/qml/Panel/RoomDrawer.qml:155
#, kde-format
msgctxt "Locations on a map"
msgid "Locations"
msgstr ""
#: src/qml/Component/LocationPage.qml:51
#, kde-format
msgid "There are no locations shared in this room."
msgstr ""
#: src/qml/Component/Login/Homeserver.qml:18
#, kde-format
msgctxt "@title"
@@ -1569,41 +1590,41 @@ msgstr ""
msgid "Clipboard image"
msgstr ""
#: src/qml/Component/TimelineView.qml:202
#: src/qml/Component/TimelineView.qml:203
#, kde-format
msgid "Jump to first unread message"
msgstr ""
#: src/qml/Component/TimelineView.qml:225
#: src/qml/Component/TimelineView.qml:226
#, kde-format
msgid "Jump to latest message"
msgstr ""
#: src/qml/Component/TimelineView.qml:251
#: src/qml/Component/TimelineView.qml:252
#, kde-format
msgid "Drag items here to share them"
msgstr ""
#: src/qml/Component/TimelineView.qml:277
#: src/qml/Component/TimelineView.qml:278
#, kde-format
msgctxt "Message displayed when some users are typing"
msgid "%2 is typing"
msgid_plural "%2 are typing"
msgstr[0] ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:17
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:36
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:19
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:38
#, kde-format
msgid "Activate Encryption"
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:20
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:22
#, kde-format
msgid ""
"It will not be possible to deactivate the encryption after it is enabled."
msgstr ""
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:30
#: src/qml/Dialog/ConfirmEncryptionDialog.qml:32
#: src/qml/Dialog/ConfirmLogout.qml:29 src/qml/Page/ImageEditorPage.qml:125
#: src/qml/Settings/AccountEditorPage.qml:183
#, kde-format
@@ -1964,35 +1985,35 @@ msgstr ""
msgid "Copy link"
msgstr ""
#: src/qml/main.qml:295
#: src/qml/main.qml:298
#, kde-format
msgctxt "@title:window"
msgid "Session Verification"
msgstr ""
#: src/qml/main.qml:305
#: src/qml/main.qml:308
#, kde-format
msgid "User consent"
msgstr ""
#: src/qml/main.qml:310
#: src/qml/main.qml:313
#, kde-format
msgid ""
"Your homeserver requires you to agree to its terms and conditions before "
"being able to use it. Please click the button below to read them."
msgstr ""
#: src/qml/main.qml:315
#: src/qml/main.qml:318
#, kde-format
msgid "Open"
msgstr ""
#: src/qml/main.qml:349
#: src/qml/main.qml:352
#, kde-format
msgid "Start a chat"
msgstr ""
#: src/qml/main.qml:351
#: src/qml/main.qml:354
#, kde-format
msgid "Do you want to start a chat with %1?"
msgstr ""
@@ -2187,7 +2208,7 @@ msgid "Ban"
msgstr ""
#: src/qml/Menu/Timeline/BanSheet.qml:41
#: src/qml/Menu/Timeline/RemoveSheet.qml:47
#: src/qml/Menu/Timeline/RemoveSheet.qml:49
#: src/qml/Menu/Timeline/ReportSheet.qml:41 src/qml/Page/InviteUserPage.qml:22
#, kde-format
msgctxt "@action"
@@ -2266,27 +2287,27 @@ msgstr ""
msgid "Configure Web Shortcuts..."
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:18
#: src/qml/Menu/Timeline/RemoveSheet.qml:20
#, kde-format
msgid "Remove Message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this user's recent messages"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:22
#: src/qml/Menu/Timeline/RemoveSheet.qml:24
#, kde-format
msgid "Reason for removing this message"
msgstr ""
#: src/qml/Menu/Timeline/RemoveSheet.qml:34
#: src/qml/Menu/Timeline/RemoveSheet.qml:36
#, kde-format
msgctxt "@action:button 'Remove' as in 'Remove this message'"
msgid "Remove"
@@ -2585,8 +2606,8 @@ msgstr ""
msgid "Explore rooms"
msgstr ""
#: src/qml/Page/RoomList/ExploreComponent.qml:66
#: src/qml/Page/RoomList/ExploreComponent.qml:120
#: src/qml/Page/RoomList/ExploreComponent.qml:63
#: src/qml/Page/RoomList/ExploreComponent.qml:117
#, kde-format
msgid "Create rooms and chats"
msgstr ""
@@ -2746,57 +2767,62 @@ msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#, kde-format
msgid "Show locations for this room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Remove room from favorites"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:150
#: src/qml/Panel/RoomDrawer.qml:162
#, kde-format
msgid "Make room favorite"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:156
#: src/qml/Panel/RoomDrawer.qml:168
#, kde-format
msgid "Members"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:165
#: src/qml/Panel/RoomDrawer.qml:177
#, kde-format
msgid "Search user in room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:182
#: src/qml/Panel/RoomDrawer.qml:194
#, kde-format
msgid "Invite user to room"
msgstr ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "%1 member"
msgid_plural "%1 members"
msgstr[0] ""
#: src/qml/Panel/RoomDrawer.qml:189
#: src/qml/Panel/RoomDrawer.qml:201
#, kde-format
msgid "No member count"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:16 src/qml/RoomSettings/General.qml:20
#: src/qml/RoomSettings/Categories.qml:18 src/qml/RoomSettings/General.qml:20
#: src/qml/Settings/SettingsPage.qml:13
#, kde-format
msgid "General"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:27 src/qml/RoomSettings/Security.qml:19
#: src/qml/RoomSettings/Categories.qml:29 src/qml/RoomSettings/Security.qml:19
#, kde-format
msgid "Security"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:38
#: src/qml/RoomSettings/Categories.qml:40
#, kde-format
msgid "Permissions"
msgstr ""
#: src/qml/RoomSettings/Categories.qml:49 src/qml/Settings/SettingsPage.qml:25
#: src/qml/RoomSettings/Categories.qml:51 src/qml/Settings/SettingsPage.qml:25
#, kde-format
msgid "Notifications"
msgstr ""

View File

@@ -56,6 +56,9 @@ add_library(neochat STATIC
events/stickerevent.cpp
models/reactionmodel.cpp
delegatesizehelper.cpp
models/livelocationsmodel.cpp
models/locationsmodel.cpp
locationhelper.cpp
)
ecm_qt_declare_logging_category(neochat
@@ -65,12 +68,6 @@ ecm_qt_declare_logging_category(neochat
DEFAULT_SEVERITY Info
)
ecm_qt_declare_logging_category(neochat
HEADER "voip_logging.h"
IDENTIFIER "voip"
CATEGORY_NAME "org.kde.neochat.voip"
)
add_executable(neochat-app
main.cpp
res.qrc
@@ -117,20 +114,6 @@ endif()
target_include_directories(neochat PRIVATE ${CMAKE_BINARY_DIR})
target_link_libraries(neochat PUBLIC Qt::Core Qt::Quick Qt::Qml Qt::Gui Qt::Multimedia Qt::Network Qt::QuickControls2 KF${QT_MAJOR_VERSION}::I18n KF${QT_MAJOR_VERSION}::Kirigami2 KF${QT_MAJOR_VERSION}::Notifications KF${QT_MAJOR_VERSION}::ConfigCore KF${QT_MAJOR_VERSION}::ConfigGui KF${QT_MAJOR_VERSION}::CoreAddons KF${QT_MAJOR_VERSION}::SonnetCore KF${QT_MAJOR_VERSION}::ItemModels Quotient${QUOTIENT_SUFFIX} cmark::cmark ${QTKEYCHAIN_LIBRARIES} QCoro::Core)
if (TARGET PkgConfig::GSTREAMER)
target_link_libraries(neochat PUBLIC PkgConfig::GSTREAMER)
target_sources(neochat PRIVATE
call/callmanager.cpp
call/callsession.cpp
call/audiosources.cpp
call/videosources.cpp
call/devicemonitor.cpp
models/callparticipantsmodel.cpp
call/callparticipant.cpp
)
target_compile_definitions(neochat PUBLIC GSTREAMER_AVAILABLE)
endif()
kconfig_add_kcfg_files(neochat GENERATE_MOC neochatconfig.kcfgc)
if(NEOCHAT_FLATPAK)

View File

@@ -1,99 +0,0 @@
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-License-Identifier: LGPL-2.0-or-later
#include "audiosources.h"
#include <gst/gst.h>
#include <QDebug>
#include <QString>
#include "devicemonitor.h"
#include "neochatconfig.h"
int AudioSources::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
return DeviceMonitor::instance().audioSources().size();
}
QVariant AudioSources::data(const QModelIndex &index, int role) const
{
if (index.row() >= DeviceMonitor::instance().audioSources().size()) {
return QVariant(QStringLiteral("DEADBEEF"));
}
if (role == TitleRole) {
return DeviceMonitor::instance().audioSources()[index.row()]->title;
}
return QVariant();
}
QHash<int, QByteArray> AudioSources::roleNames() const
{
return {
{TitleRole, "title"},
};
}
AudioSources::AudioSources()
: QAbstractListModel()
{
connect(&DeviceMonitor::instance(), &DeviceMonitor::audioSourceAdded, this, [this]() {
beginResetModel();
endResetModel();
Q_EMIT currentIndexChanged();
});
connect(&DeviceMonitor::instance(), &DeviceMonitor::audioSourceRemoved, this, [this]() {
beginResetModel();
endResetModel();
Q_EMIT currentIndexChanged();
});
}
GstDevice *AudioSources::currentDevice() const
{
const auto config = NeoChatConfig::self();
const QString name = config->microphone();
for (const auto &audioSource : DeviceMonitor::instance().audioSources()) {
if (audioSource->title == name) {
qDebug() << "WebRTC: microphone:" << name;
return audioSource->device;
}
}
return DeviceMonitor::instance().audioSources()[0]->device;
}
void AudioSources::setCurrentIndex(int index) const
{
if (DeviceMonitor::instance().audioSources().size() == 0) {
return;
}
NeoChatConfig::setMicrophone(DeviceMonitor::instance().audioSources()[index]->title);
NeoChatConfig::self()->save();
}
int AudioSources::currentIndex() const
{
const auto config = NeoChatConfig::self();
const QString name = config->microphone();
if (name.isEmpty()) {
return getDefaultDeviceIndex();
}
for (auto i = 0; i < DeviceMonitor::instance().audioSources().size(); i++) {
if (DeviceMonitor::instance().audioSources()[i]->title == name) {
return i;
}
}
return 0;
}
int AudioSources::getDefaultDeviceIndex() const
{
for (auto i = 0; i < DeviceMonitor::instance().audioSources().size(); i++) {
if (DeviceMonitor::instance().audioSources()[i]->isDefault) {
return i;
}
}
return 0;
}

View File

@@ -1,41 +0,0 @@
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-License-Identifier: LGPL-2.0-or-later
#pragma once
#include <QtCore/QAbstractListModel>
#include <gst/gst.h>
class AudioSources : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged)
public:
enum Roles {
TitleRole = Qt::UserRole + 1,
};
static AudioSources &instance()
{
static AudioSources _instance;
return _instance;
}
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
QHash<int, QByteArray> roleNames() const override;
GstDevice *currentDevice() const;
void setCurrentIndex(int index) const;
int currentIndex() const;
Q_SIGNALS:
void currentIndexChanged();
private:
AudioSources();
int getDefaultDeviceIndex() const;
};

View File

@@ -1,199 +0,0 @@
// SPDX-FileCopyrightText: 2021 Nheko Contributors
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-FileCopyrightText: 2021 Carl Schwan <carl@carlschwan.eu>
//
// SPDX-License-Identifier: GPL-3.0-or-later
#include "calldevices.h"
#include "audiodevicesmodel.h"
#include "neochatconfig.h"
#include "videodevicesmodel.h"
#include <QStringView>
#include <cstring>
#include <optional>
#include "voiplogging.h"
#ifdef GSTREAMER_AVAILABLE
extern "C" {
#include "gst/gst.h"
}
#endif
#ifdef GSTREAMER_AVAILABLE
CallDevices::CallDevices()
: QObject()
, m_audioDevicesModel(new AudioDevicesModel(this))
, m_videoDevicesModel(new VideoDevicesModel(this))
{
init();
}
AudioDevicesModel *CallDevices::audioDevicesModel() const
{
return m_audioDevicesModel;
}
VideoDevicesModel *CallDevices::videoDevicesModel() const
{
return m_videoDevicesModel;
}
void CallDevices::addDevice(GstDevice *device)
{
if (!device)
return;
gchar *type = gst_device_get_device_class(device);
bool isVideo = !std::strncmp(type, "Video", 5);
g_free(type);
if (isVideo) {
m_videoDevicesModel->addDevice(device);
m_videoDevicesModel->setDefaultDevice();
} else {
m_audioDevicesModel->addDevice(device);
m_audioDevicesModel->setDefaultDevice();
}
}
void CallDevices::removeDevice(GstDevice *device, bool changed)
{
if (device) {
if (m_audioDevicesModel->removeDevice(device, changed) || m_videoDevicesModel->removeDevice(device, changed))
return;
}
}
namespace
{
gboolean newBusMessage(GstBus *bus, GstMessage *msg, gpointer user_data)
{
Q_UNUSED(bus)
Q_UNUSED(user_data)
switch (GST_MESSAGE_TYPE(msg)) {
case GST_MESSAGE_DEVICE_ADDED: {
GstDevice *device;
gst_message_parse_device_added(msg, &device);
CallDevices::instance().addDevice(device);
Q_EMIT CallDevices::instance().devicesChanged();
break;
}
case GST_MESSAGE_DEVICE_REMOVED: {
GstDevice *device;
gst_message_parse_device_removed(msg, &device);
CallDevices::instance().removeDevice(device, false);
Q_EMIT CallDevices::instance().devicesChanged();
break;
}
case GST_MESSAGE_DEVICE_CHANGED: {
GstDevice *device;
GstDevice *oldDevice;
gst_message_parse_device_changed(msg, &device, &oldDevice);
CallDevices::instance().removeDevice(oldDevice, true);
CallDevices::instance().addDevice(device);
Q_EMIT CallDevices::instance().devicesChanged();
break;
}
default:
break;
}
return true;
}
}
void CallDevices::init()
{
static GstDeviceMonitor *monitor = nullptr;
if (!monitor) {
monitor = gst_device_monitor_new();
Q_ASSERT(monitor);
GstCaps *caps = gst_caps_new_empty_simple("audio/x-raw");
gst_device_monitor_add_filter(monitor, "Audio/Source", caps);
gst_device_monitor_add_filter(monitor, "Audio/Duplex", caps);
gst_caps_unref(caps);
caps = gst_caps_new_empty_simple("video/x-raw");
gst_device_monitor_add_filter(monitor, "Video/Source", caps);
gst_device_monitor_add_filter(monitor, "Video/Duplex", caps);
gst_caps_unref(caps);
GstBus *bus = gst_device_monitor_get_bus(monitor);
gst_bus_add_watch(bus, newBusMessage, nullptr);
gst_object_unref(bus);
if (!gst_device_monitor_start(monitor)) {
qCCritical(voip) << "Failed to start device monitor";
return;
} else {
qCDebug(voip) << "Device monitor started";
}
}
}
bool CallDevices::hasMicrophone() const
{
return m_audioDevicesModel->hasMicrophone();
}
bool CallDevices::hasCamera() const
{
return m_videoDevicesModel->hasCamera();
}
QStringList CallDevices::resolutions(const QString &cameraName) const
{
return m_videoDevicesModel->resolutions(cameraName);
}
QStringList CallDevices::frameRates(const QString &cameraName, const QString &resolution) const
{
if (auto s = m_videoDevicesModel->getVideoSource(cameraName); s) {
if (auto it = std::find_if(s->caps.cbegin(),
s->caps.cend(),
[&](const auto &c) {
return c.resolution == resolution;
});
it != s->caps.cend())
return it->frameRates;
}
return {};
}
GstDevice *CallDevices::audioDevice() const
{
return m_audioDevicesModel->currentDevice();
}
GstDevice *CallDevices::videoDevice(QPair<int, int> &resolution, QPair<int, int> &frameRate) const
{
return m_videoDevicesModel->currentDevice(resolution, frameRate);
}
#else
bool CallDevices::hasMicrophone() const
{
return false;
}
bool CallDevices::hasCamera() const
{
return false;
}
QStringList CallDevices::names(bool, const QString &) const
{
return {};
}
QStringList CallDevices::resolutions(const QString &) const
{
return {};
}
QStringList CallDevices::frameRates(const QString &, const QString &) const
{
return {};
}
#endif

View File

@@ -1,64 +0,0 @@
// SPDX-FileCopyrightText: 2021 Contributors
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-FileCopyrightText: 2021 Carl Schwan <carl@carlschwan.eu>
//
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <string>
#include <utility>
#include <vector>
#include <QObject>
typedef struct _GstDevice GstDevice;
class CallDevices;
class AudioDevicesModel;
class VideoDevicesModel;
class CallDevices : public QObject
{
Q_OBJECT
Q_PROPERTY(AudioDevicesModel *audioDevices READ audioDevicesModel CONSTANT);
Q_PROPERTY(VideoDevicesModel *videoDevices READ videoDevicesModel CONSTANT);
public:
static CallDevices &instance()
{
static CallDevices instance;
return instance;
}
CallDevices(CallDevices const &) = delete;
void operator=(CallDevices const &) = delete;
bool hasMicrophone() const;
bool hasCamera() const;
QStringList names(bool isVideo, const QString &defaultDevice) const;
QStringList resolutions(const QString &cameraName) const;
QStringList frameRates(const QString &cameraName, const QString &resolution) const;
AudioDevicesModel *audioDevicesModel() const;
VideoDevicesModel *videoDevicesModel() const;
void addDevice(GstDevice *device);
void removeDevice(GstDevice *device, bool changed);
Q_SIGNALS:
void devicesChanged();
private:
CallDevices();
void init();
GstDevice *audioDevice() const;
GstDevice *videoDevice(QPair<int, int> &resolution, QPair<int, int> &frameRate) const;
AudioDevicesModel *m_audioDevicesModel;
VideoDevicesModel *m_videoDevicesModel;
friend class CallSession;
friend class Audio;
};

View File

@@ -1,617 +0,0 @@
// SPDX-FileCopyrightText: 2020-2021 Nheko Authors
// SPDX-FileCopyrightText: 2021-2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-3.0-or-later
#include "callmanager.h"
#include "controller.h"
#include <gst/gst.h>
#include "voiplogging.h"
#include <KLocalizedString>
#include <QDateTime>
#include <QMediaPlaylist>
#include <QMimeDatabase>
#include <qcoro/qcorosignal.h>
#include <qt_connection_util.h>
#include "neochatconfig.h"
#define CALL_VERSION "1"
CallManager::CallManager()
{
init();
connect(&Controller::instance(), &Controller::activeConnectionChanged, this, [this] {
updateTurnServers();
});
}
QCoro::Task<void> CallManager::updateTurnServers()
{
if (m_cachedTurnUrisValidUntil > QDateTime::currentDateTime()) {
co_return;
}
Controller::instance().activeConnection()->getTurnServers();
auto servers = co_await qCoro(Controller::instance().activeConnection(), &Connection::turnServersChanged);
m_cachedTurnUrisValidUntil = QDateTime::currentDateTime().addSecs(servers["ttl"].toInt());
const auto password = servers["password"].toString();
const auto username = servers["username"].toString();
const auto uris = servers["uris"].toArray();
m_cachedTurnUris.clear();
for (const auto &u : uris) {
QString uri = u.toString();
auto c = uri.indexOf(':');
if (c == -1) {
qCWarning(voip) << "Invalid TURN URI:" << uri;
continue;
}
QString scheme = uri.left(c);
if (scheme != "turn" && scheme != "turns") {
qCWarning(voip) << "Invalid TURN scheme:" << scheme;
continue;
}
m_cachedTurnUris += QStringLiteral("%1://%2:%3@%4").arg(scheme, QUrl::toPercentEncoding(username), QUrl::toPercentEncoding(password), uri.mid(c + 1));
}
}
QString CallManager::callId() const
{
return m_callId;
}
void CallManager::handleCallEvent(NeoChatRoom *room, const Quotient::RoomEvent *event)
{
if (const auto &inviteEvent = eventCast<const CallInviteEvent>(event)) {
handleInvite(room, inviteEvent);
} else if (const auto &hangupEvent = eventCast<const CallHangupEvent>(event)) {
handleHangup(room, hangupEvent);
} else if (const auto &candidatesEvent = eventCast<const CallCandidatesEvent>(event)) {
handleCandidates(room, candidatesEvent);
} else if (const auto &answerEvent = eventCast<const CallAnswerEvent>(event)) {
handleAnswer(room, answerEvent);
} else if (const auto &negotiateEvent = eventCast<const CallNegotiateEvent>(event)) {
handleNegotiate(room, negotiateEvent);
}
}
void CallManager::checkStartCall()
{
if ((m_incomingCandidates.isEmpty() && !m_incomingSdp.contains("candidates"_ls)) || m_incomingSdp.isEmpty()) {
qCDebug(voip) << "Not ready to start this call yet";
return;
}
m_session->acceptAnswer(m_incomingSdp, m_incomingCandidates, m_remoteUser->id());
m_incomingCandidates.clear();
m_incomingSdp.clear();
setGlobalState(ACTIVE);
}
void CallManager::handleAnswer(NeoChatRoom *room, const Quotient::CallAnswerEvent *event)
{
if (globalState() != OUTGOING) {
qCDebug(voip) << "Ignoring answer while in state" << globalState();
return;
}
if (event->callId() != m_callId) {
qCDebug(voip) << "Ignoring answer for unknown call id" << event->callId() << ". Our call id is" << m_callId;
return;
}
if (event->senderId() == room->localUser()->id() && partyId() == event->contentJson()["party_id"].toString()) {
qCDebug(voip) << "Ignoring echo for answer";
return;
}
if (event->senderId() == room->localUser()->id()) {
qCDebug(voip) << "Call was accepted on a different device";
// Show the user that call was accepted on a different device
// Stop ringing
return;
}
// TODO handle that MSC wrt to accepting on other devices
m_session->setMetadata(event->contentJson()["org.matrix.msc3077.sdp_stream_metadata"].toObject());
m_remotePartyId = event->contentJson()["party_id"].toString();
m_incomingSdp = event->sdp();
checkStartCall();
}
void CallManager::handleCandidates(NeoChatRoom *room, const Quotient::CallCandidatesEvent *event)
{
// TODO what if candidates come before invite? this looks wrong
if (globalState() == IDLE) {
qCDebug(voip) << "Ignoring candidates in state" << globalState();
return;
}
if (event->senderId() == room->localUser()->id()) {
qCDebug(voip) << "Ignoring candidates sent by ourself";
return;
}
if (globalState() == ACTIVE) {
QVector<Candidate> candidates;
for (const auto &candidate : event->candidates()) {
candidates += Candidate{candidate.toObject()["candidate"].toString(),
candidate.toObject()["sdpMLineIndex"].toInt(),
candidate.toObject()["sdpMid"].toString()};
}
m_session->acceptCandidates(candidates);
return;
}
qCDebug(voip) << "Storing" << event->candidates().size() << "incoming candidates";
for (const auto &candidate : event->candidates()) {
m_incomingCandidates +=
Candidate{candidate.toObject()["candidate"].toString(), candidate.toObject()["sdpMLineIndex"].toInt(), candidate.toObject()["sdpMid"].toString()};
}
if (globalState() == OUTGOING) {
checkStartCall();
}
}
void CallManager::handleInvite(NeoChatRoom *room, const Quotient::CallInviteEvent *event)
{
if (event->senderId() == room->localUser()->id()) {
qCDebug(voip) << "Igoring invite sent by ourself";
return;
}
if (globalState() != IDLE) {
// TODO handle glare
qCDebug(voip) << "Ignoring invite while already in a call";
return;
}
if (event->originTimestamp() < QDateTime::currentDateTime().addSecs(-60)) {
qCDebug(voip) << "Ignoring outdated invite; sent at:" << event->originTimestamp() << "current:" << QDateTime::currentDateTime();
return;
}
setGlobalState(INCOMING);
m_incomingSdp = event->sdp();
setRemoteUser(dynamic_cast<NeoChatUser *>(room->user(event->senderId())));
setRoom(room);
setCallId(event->callId());
setPartyId(generatePartyId());
m_remotePartyId = event->contentJson()["party_id"].toString();
setLifetime(event->lifetime());
Q_EMIT incomingCall(remoteUser(), room, event->lifetime(), callId());
ring(event->lifetime());
}
void CallManager::handleNegotiate(NeoChatRoom *room, const Quotient::CallNegotiateEvent *event)
{
Q_UNUSED(room);
if (event->callId() != m_callId) {
qCDebug(voip) << "Ignoring negotiate for unknown call id" << event->callId() << ". Our call id is" << m_callId;
return;
}
if (event->partyId() != m_remotePartyId) {
qCDebug(voip) << "Ignoring negotiate for unknown party id" << event->partyId() << ". Remote party id is" << m_remotePartyId;
return;
}
if (event->senderId() != m_remoteUser->id()) {
qCDebug(voip) << "Ignoring negotiate for unknown user id" << event->senderId() << ". Remote user id is" << m_remoteUser->id();
return;
}
// TODO DUPLICATES FFS
m_session->setMetadata(event->contentJson()["org.matrix.msc3077.sdp_stream_metadata"].toObject());
m_session->renegotiateOffer(event->sdp(), m_remoteUser->id(), event->contentJson()["description"]["type"] == QStringLiteral("answer"));
}
void CallManager::ring(int lifetime)
{
// TODO put a better default ringtone in the kcfg
// TODO which one? ship one? plasma-mobile-sounds?
if (!QFileInfo::exists(NeoChatConfig::ringtone())) {
qCWarning(voip) << "Ringtone file doesn't exist. Not audibly ringing";
return;
}
auto ringtone = QUrl::fromLocalFile(NeoChatConfig::ringtone());
m_playlist.setPlaybackMode(QMediaPlaylist::Loop);
m_playlist.clear();
m_ringPlayer.setPlaylist(&m_playlist);
m_playlist.addMedia(ringtone);
m_ringPlayer.play();
QTimer::singleShot(lifetime, this, [this]() {
stopRinging();
Q_EMIT callEnded();
});
}
void CallManager::stopRinging()
{
m_ringPlayer.stop();
}
void CallManager::handleHangup(NeoChatRoom *room, const Quotient::CallHangupEvent *event)
{
if (globalState() == IDLE) {
qCDebug(voip) << "Ignoring hangup since we're not in a call";
return;
}
if (event->senderId() == room->localUser()->id()) {
qCDebug(voip) << "Ignoring hangup we sent ourselves";
// TODO hangup-to-decline by different device?
return;
}
if (event->callId() != m_callId) {
qCDebug(voip) << "Hangup not for this call. Event's call id:" << event->callId() << ". Our call id" << m_callId;
return;
}
stopRinging();
if (m_session) {
m_session->end();
delete m_session;
}
setGlobalState(IDLE);
Q_EMIT callEnded();
}
void CallManager::acceptCall()
{
// TODO metadata for this case
if (globalState() != INCOMING) {
qCWarning(voip) << "Not accepting call while state is" << globalState();
return;
}
stopRinging();
if (!checkPlugins()) {
qCCritical(voip) << "Missing plugins; can't accept call";
}
updateTurnServers();
// TODO wait until candidates are here
m_session = CallSession::acceptCall(m_incomingSdp, m_incomingCandidates, m_cachedTurnUris, m_remoteUser->id(), this);
m_participants->clear();
connect(m_session.data(), &CallSession::stateChanged, this, [this] {
Q_EMIT stateChanged();
if (state() == CallSession::ICEFAILED) {
Q_EMIT callEnded();
}
}); // TODO refactor away?
m_incomingCandidates.clear();
connectSingleShot(m_session.data(), &CallSession::answerCreated, this, [this](const QString &_sdp, const QVector<Candidate> &candidates) {
const auto &[uuids, sdp] = mangleSdp(_sdp);
QVector<std::pair<QString, QString>> msidToPurpose;
for (const auto &uuid : uuids) {
msidToPurpose += {uuid, "m.usermedia"}; // TODO
}
auto answer = createAnswer(m_callId, sdp, msidToPurpose);
m_room->postJson("m.call.answer", answer);
qCWarning(voip) << "Sending Answer";
auto c = createCandidates(m_callId, candidates);
auto cand = createCandidates(m_callId, candidates);
m_room->postJson("m.call.candidates", cand);
qCWarning(voip) << "Sending Candidates";
setGlobalState(ACTIVE);
});
}
void CallManager::hangupCall()
{
qCDebug(voip) << "Ending call";
if (m_session) {
m_session->end();
delete m_session;
m_session = nullptr;
}
stopRinging();
m_room->postJson("m.call.hangup", createHangup(m_callId));
setGlobalState(IDLE);
Q_EMIT callEnded();
}
NeoChatUser *CallManager::remoteUser() const
{
return m_remoteUser;
}
NeoChatRoom *CallManager::room() const
{
return m_room;
}
CallSession::State CallManager::state() const
{
if (!m_session) {
return CallSession::DISCONNECTED;
}
return m_session->state();
}
int CallManager::lifetime() const
{
return m_lifetime;
}
void CallManager::ignoreCall()
{
setLifetime(0);
setCallId({});
setRoom(nullptr);
setRemoteUser(nullptr);
}
void CallManager::startCall(NeoChatRoom *room)
{
if (m_session) {
// Don't start calls if there already is one
Q_EMIT Controller::instance().errorOccured(i18n("A call is already started"));
return;
}
if (room->users().size() != 2) {
// Don't start calls if the room doesn't have exactly two members
Q_EMIT Controller::instance().errorOccured(i18n("Calls are limited to 1:1 rooms"));
return;
}
auto missingPlugins = CallSession::missingPlugins();
if (!missingPlugins.isEmpty()) {
qCCritical(voip) << "Missing GStreamer plugins:" << missingPlugins;
Q_EMIT Controller::instance().errorOccured("Missing GStreamer plugins.");
return;
}
setLifetime(60000);
setRoom(room);
setRemoteUser(otherUser(room));
updateTurnServers();
setCallId(generateCallId());
setPartyId(generatePartyId());
m_participants->clear();
for (const auto &user : m_room->users()) {
auto participant = new CallParticipant(m_session);
participant->m_user = dynamic_cast<NeoChatUser *>(user);
m_participants->addParticipant(participant);
}
m_session = CallSession::startCall(m_cachedTurnUris, this);
setGlobalState(OUTGOING);
connect(m_session, &CallSession::stateChanged, this, [this] {
Q_EMIT stateChanged();
if (state() == CallSession::ICEFAILED) {
Q_EMIT callEnded();
}
});
connectSingleShot(m_session.data(), &CallSession::offerCreated, this, [this](const QString &_sdp, const QVector<Candidate> &candidates) {
const auto &[uuids, sdp] = mangleSdp(_sdp);
QVector<std::pair<QString, QString>> msidToPurpose;
for (const auto &uuid : uuids) {
msidToPurpose += {uuid, "m.usermedia"}; // TODO
}
qCWarning(voip) << "Sending Invite";
qCWarning(voip) << "Sending Candidates";
auto invite = createInvite(m_callId, sdp, msidToPurpose);
auto c = createCandidates(m_callId, candidates);
m_room->postJson("m.call.invite", invite);
m_room->postJson("m.call.candidates", c);
});
connect(m_session, &CallSession::renegotiate, this, [this](const QString &sdp, const QString &type) {
QVector<std::pair<QString, QString>> msidToPurpose;
const auto &[uuids, _sdp] = mangleSdp(sdp);
for (const auto &uuid : uuids) {
msidToPurpose += {uuid, "m.usermedia"}; // TODO
}
QJsonObject json{
{QStringLiteral("lifetime"), 60000},
{QStringLiteral("version"), 1},
{QStringLiteral("description"), QJsonObject{{QStringLiteral("type"), type}, {QStringLiteral("sdp"), _sdp}}}, // AAAAA
{QStringLiteral("party_id"), m_partyId},
{QStringLiteral("call_id"), m_callId},
};
QJsonObject metadata;
for (const auto &[stream, purpose] : msidToPurpose) {
QJsonObject data = {{"purpose", purpose}};
metadata[stream] = data;
}
json["org.matrix.msc3077.sdp_stream_metadata"] = metadata;
m_room->postJson("m.call.negotiate", json);
});
}
QString CallManager::generateCallId() const
{
return QDateTime::currentDateTime().toString("yyyyMMddhhmmsszzz");
}
QString CallManager::generatePartyId() const
{
return QUuid::createUuid().toString();
}
void CallManager::setCallId(const QString &callId)
{
m_callId = callId;
Q_EMIT callIdChanged();
}
void CallManager::setPartyId(const QString &partyId)
{
m_partyId = partyId;
}
void CallManager::setMuted(bool muted)
{
if (!m_session) {
return;
}
m_session->setMuted(muted);
Q_EMIT mutedChanged();
}
bool CallManager::muted() const
{
if (!m_session) {
return false;
}
return m_session->muted();
}
bool CallManager::init()
{
qRegisterMetaType<Candidate>();
qRegisterMetaType<QVector<Candidate>>();
GError *error = nullptr;
if (!gst_init_check(nullptr, nullptr, &error)) {
QString strError;
if (error) {
strError += error->message;
g_error_free(error);
}
qCCritical(voip) << "Failed to initialize GStreamer:" << strError;
return false;
}
gchar *version = gst_version_string();
qCDebug(voip) << "GStreamer version" << version;
g_free(version);
// Required to register the qml types
auto _sink = gst_element_factory_make("qmlglsink", nullptr);
Q_ASSERT(_sink);
gst_object_unref(_sink);
return true;
}
void CallManager::setLifetime(int lifetime)
{
m_lifetime = lifetime;
Q_EMIT lifetimeChanged();
}
void CallManager::setRoom(NeoChatRoom *room)
{
m_room = room;
Q_EMIT roomChanged();
}
void CallManager::setRemoteUser(NeoChatUser *user)
{
m_remoteUser = user;
Q_EMIT roomChanged();
}
NeoChatUser *CallManager::otherUser(NeoChatRoom *room)
{
return dynamic_cast<NeoChatUser *>(room->users()[0]->id() == room->localUser()->id() ? room->users()[1] : room->users()[0]);
}
QJsonObject CallManager::createCandidates(const QString &callId, const QVector<Candidate> &candidates) const
{
QJsonArray candidatesJson;
for (const auto &candidate : candidates) {
candidatesJson += QJsonObject{{"candidate", candidate.candidate}, {"sdpMid", candidate.sdpMid}, {"sdpMLineIndex", candidate.sdpMLineIndex}};
}
return QJsonObject{{"call_id", callId}, {"candidates", candidatesJson}, {"version", CALL_VERSION}, {"party_id", "todopartyid"}};
}
void CallManager::setGlobalState(GlobalState globalState)
{
if (m_globalState == globalState) {
return;
}
m_globalState = globalState;
Q_EMIT globalStateChanged();
}
CallManager::GlobalState CallManager::globalState() const
{
return m_globalState;
}
CallParticipantsModel *CallManager::callParticipants() const
{
return m_participants;
}
std::pair<QStringList, QString> CallManager::mangleSdp(const QString &_sdp)
{
QString sdp = _sdp;
QRegularExpression regex("msid:user[0-9]+@host-[0-9a-f]+ webrtctransceiver([0-9])");
auto iter = regex.globalMatch(sdp);
QStringList uuids;
while (iter.hasNext()) {
auto uuid = QUuid::createUuid();
auto match = iter.next();
uuids += uuid.toString();
sdp.replace(match.captured(), QStringLiteral("msid:") + uuid.toString() + QStringLiteral(" foo"));
}
return {uuids, sdp};
}
QJsonObject CallManager::createInvite(const QString &callId, const QString &sdp, const QVector<std::pair<QString, QString>> &msidToPurpose) const
{
QJsonObject metadata;
for (const auto &[msid, purpose] : msidToPurpose) {
metadata[msid] = QJsonObject{{"purpose", purpose}};
}
return {{"call_id", callId},
{"party_id", "todopartyid"},
{"lifetime", 60000},
{"capabilities", QJsonObject{{"m.call.transferee", false}}},
{"offer", QJsonObject{{"sdp", sdp}, {"type", "offer"}}},
{"org.matrix.msc3077.sdp_stream_metadata", metadata},
{"version", CALL_VERSION}};
}
QJsonObject CallManager::createHangup(const QString &callId) const
{
return {{"call_id", callId}, {"party_id", "todopartyid"}, {"version", CALL_VERSION}};
}
QJsonObject CallManager::createAnswer(const QString &callId, const QString &sdp, const QVector<std::pair<QString, QString>> &msidToPurpose) const
{
Q_ASSERT(!callId.isEmpty());
QJsonObject metadata;
for (const auto &[msid, purpose] : msidToPurpose) {
metadata[msid] = QJsonObject{{"purpose", purpose}};
}
return {{"call_id", callId},
{"party_id", "todopartyid"},
{"lifetime", "lifetime"},
{"capabilities", QJsonObject{{"m.call.transferee", false}}},
{"offer", QJsonObject{{"sdp", sdp}, {"type", "offer"}}},
{"org.matrix.msc3077.sdp_stream_metadata", metadata},
{"version", CALL_VERSION}};
}
void CallManager::toggleCamera()
{
m_session->toggleCamera();
}
QString CallManager::partyId() const
{
return m_partyId;
}
bool CallManager::checkPlugins() const
{
auto missingPlugins = m_session->missingPlugins();
if (!missingPlugins.isEmpty()) {
qCCritical(voip) << "Missing GStreamer plugins:" << missingPlugins;
Q_EMIT Controller::instance().errorOccured("Missing GStreamer plugins.");
}
return !missingPlugins.isEmpty();
}

View File

@@ -1,159 +0,0 @@
// SPDX-FileCopyrightText: 2020-2021 Nheko Authors
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include "neochatroom.h"
#include "neochatuser.h"
#include <QAbstractListModel>
#include <QObject>
#include <QString>
#include <events/roomevent.h>
#include "callsession.h"
#include "models/callparticipantsmodel.h"
#include <events/callevents.h>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QTimer>
#include <qcoro/task.h>
#include <qobjectdefs.h>
class CallSession;
class QQuickItem;
using namespace Quotient;
class CallManager : public QObject
{
Q_OBJECT
public:
enum GlobalState {
IDLE,
INCOMING,
OUTGOING,
ACTIVE,
};
Q_ENUM(GlobalState);
Q_PROPERTY(GlobalState globalState READ globalState NOTIFY globalStateChanged)
Q_PROPERTY(NeoChatUser *remoteUser READ remoteUser NOTIFY remoteUserChanged)
Q_PROPERTY(QString callId READ callId NOTIFY callIdChanged)
Q_PROPERTY(NeoChatRoom *room READ room NOTIFY roomChanged)
Q_PROPERTY(int lifetime READ lifetime NOTIFY lifetimeChanged)
Q_PROPERTY(bool muted READ muted WRITE setMuted NOTIFY mutedChanged)
Q_PROPERTY(QQuickItem *item MEMBER m_item) // TODO allow for different devices for each session
Q_PROPERTY(CallSession::State state READ state NOTIFY stateChanged)
Q_PROPERTY(CallParticipantsModel *callParticipants READ callParticipants CONSTANT)
static CallManager &instance()
{
static CallManager _instance;
return _instance;
}
[[nodiscard]] QString callId() const;
[[nodiscard]] QString partyId() const;
CallSession::State state() const;
NeoChatUser *remoteUser() const;
NeoChatRoom *room() const;
int lifetime() const;
bool muted() const;
void setMuted(bool muted);
CallManager::GlobalState globalState() const;
void handleCallEvent(NeoChatRoom *room, const RoomEvent *event);
Q_INVOKABLE void startCall(NeoChatRoom *room);
Q_INVOKABLE void acceptCall();
Q_INVOKABLE void hangupCall();
Q_INVOKABLE void ignoreCall();
Q_INVOKABLE void toggleCamera();
QCoro::Task<void> updateTurnServers();
[[nodiscard]] CallParticipantsModel *callParticipants() const;
QQuickItem *m_item = nullptr;
Q_SIGNALS:
void currentCallIdChanged();
void incomingCall(NeoChatUser *user, NeoChatRoom *room, int timeout, const QString &callId);
void callEnded();
void remoteUserChanged();
void callIdChanged();
void roomChanged();
void stateChanged();
void lifetimeChanged();
void mutedChanged();
void globalStateChanged();
private:
CallManager();
QString m_callId;
QVector<Candidate> m_incomingCandidates;
QString m_incomingSdp;
[[nodiscard]] bool checkPlugins() const;
QStringList m_cachedTurnUris;
QDateTime m_cachedTurnUrisValidUntil = QDateTime::fromSecsSinceEpoch(0);
NeoChatUser *m_remoteUser = nullptr;
NeoChatRoom *m_room = nullptr;
QString m_remotePartyId;
QString m_partyId;
int m_lifetime = 0;
GlobalState m_globalState = IDLE;
void handleInvite(NeoChatRoom *room, const CallInviteEvent *event);
void handleHangup(NeoChatRoom *room, const CallHangupEvent *event);
void handleCandidates(NeoChatRoom *room, const CallCandidatesEvent *event);
void handleAnswer(NeoChatRoom *room, const CallAnswerEvent *event);
void handleNegotiate(NeoChatRoom *room, const CallNegotiateEvent *event);
void checkStartCall();
void ring(int lifetime);
void stopRinging();
[[nodiscard]] QString generateCallId() const;
[[nodiscard]] QString generatePartyId() const;
bool init();
bool m_initialised = false;
QPointer<CallSession> m_session = nullptr;
void setLifetime(int lifetime);
void setRoom(NeoChatRoom *room);
void setRemoteUser(NeoChatUser *user);
void setCallId(const QString &callId);
void setPartyId(const QString &partyId);
void setGlobalState(GlobalState state);
std::pair<QStringList, QString> mangleSdp(const QString &sdp);
CallParticipantsModel *m_participants = new CallParticipantsModel();
NeoChatUser *otherUser(NeoChatRoom *room);
[[nodiscard]] QJsonObject createCandidates(const QString &callId, const QVector<Candidate> &candidates) const;
[[nodiscard]] QJsonObject createInvite(const QString &callId, const QString &sdp, const QVector<std::pair<QString, QString>> &msidToPurpose) const;
[[nodiscard]] QJsonObject createHangup(const QString &callId) const;
[[nodiscard]] QJsonObject createAnswer(const QString &callId, const QString &sdp, const QVector<std::pair<QString, QString>> &msidToPurpose) const;
QMediaPlayer m_ringPlayer;
QMediaPlaylist m_playlist;
};

View File

@@ -1,51 +0,0 @@
// SPDX-FileCopyrightText: 2022 Tobias Fella <fella@posteo.de>
// SPDX-License-Identifier: LGPL-2.0-or-later
#include "callnegotiateevent.h"
using namespace Quotient;
CallNegotiateEvent::CallNegotiateEvent(const QString &callId,
const QString &partyId,
int lifetime,
const QString &sdp,
bool answer,
QVector<std::pair<QString, QString>> msidToPurpose)
: EventTemplate(callId,
{
{QStringLiteral("lifetime"), lifetime},
{QStringLiteral("version"), 1},
{QStringLiteral("description"),
QJsonObject{{QStringLiteral("type"), answer ? QStringLiteral("answer") : QStringLiteral("offer")}, {QStringLiteral("sdp"), sdp}}},
{QStringLiteral("party_id"), partyId},
})
{
QJsonObject metadata;
for (const auto &[stream, purpose] : msidToPurpose) {
QJsonObject data = {{"purpose", purpose}};
metadata[stream] = purpose;
}
auto content = editJson();
content["org.matrix.msc3077.sdp_stream_metadata"] = metadata;
editJson()["content"] = content;
}
CallNegotiateEvent::CallNegotiateEvent(const QJsonObject &json)
: EventTemplate(json)
{
}
QString CallNegotiateEvent::partyId() const
{
return contentJson()["party_id"].toString();
}
QString CallNegotiateEvent::sdp() const
{
return contentJson()["description"]["sdp"].toString();
}
QJsonObject CallNegotiateEvent::sdpStreamMetadata() const
{
return contentJson()["org.matrix.msc3077.sdp_stream_metadata"].toObject();
}

View File

@@ -1,30 +0,0 @@
// SPDX-FileCopyrightText: 2022 Tobias Fella <fella@posteo.de>
// SPDX-License-Identifier: LGPL-2.0-or-later
#pragma once
#include <events/callevents.h>
namespace Quotient
{
class CallNegotiateEvent : public EventTemplate<CallNegotiateEvent, CallEvent>
{
public:
QUO_EVENT(CallNegotiateEvent, "m.call.negotiate")
explicit CallNegotiateEvent(const QJsonObject &obj);
explicit CallNegotiateEvent(const QString &callId,
const QString &partyId,
int lifetime,
const QString &sdp,
bool answer,
QVector<std::pair<QString, QString>> msidToPurpose);
QString partyId() const;
QString sdp() const;
// TODO make this a struct instead
QJsonObject sdpStreamMetadata() const;
};
}

View File

@@ -1,26 +0,0 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#include "callparticipant.h"
NeoChatUser *CallParticipant::user() const
{
return m_user;
}
bool CallParticipant::hasCamera() const
{
return m_hasCamera;
}
CallParticipant::CallParticipant(QObject *parent)
: QObject(parent)
{
}
void CallParticipant::initCamera(QQuickItem *item)
{
QTimer::singleShot(500, this, [=] {
Q_EMIT initialized(item);
});
}

View File

@@ -1,36 +0,0 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <QObject>
#include <QTimer>
#include "neochatuser.h"
class QQuickItem;
class CallParticipant : public QObject
{
Q_OBJECT
Q_PROPERTY(NeoChatUser *user READ user CONSTANT)
Q_PROPERTY(bool hasCamera READ hasCamera NOTIFY hasCameraChanged)
public:
NeoChatUser *m_user = nullptr;
bool m_hasCamera = false;
Q_INVOKABLE void initCamera(QQuickItem *item);
[[nodiscard]] NeoChatUser *user() const;
[[nodiscard]] bool hasCamera() const;
explicit CallParticipant(QObject *parent = nullptr);
Q_SIGNALS:
void initialized(QQuickItem *item);
void heightChanged();
void widthChanged();
void hasCameraChanged();
};

View File

@@ -1,916 +0,0 @@
// SPDX-FileCopyrightText: 2021 Nheko Contributors
// SPDX-FileCopyrightText: 2021 Carl Schwan <carl@carlschwan.eu>
// SPDX-FileCopyrightText: 2021-2022 Tobias Fella <fella@posteo.de>
//
// SPDX-License-Identifier: GPL-3.0-or-later
#include "calldevices.h"
#include <QDebug>
#include <QThread>
#include <gst/gst.h>
#define GST_USE_UNSTABLE_API
#include <gst/webrtc/webrtc.h>
#undef GST_USE_UNSTABLE_API
#include "voiplogging.h"
#include "audiosources.h"
#include "videosources.h"
#include <qcoro/qcorosignal.h>
#define private public
#include "callsession.h"
#undef private
#include "callmanager.h"
#include <qt_connection_util.h>
#define STUN_SERVER "stun://turn.matrix.org:3478" // TODO make STUN server configurable
#define INSTANCE \
Q_ASSERT(user_data); \
auto instance = static_cast<CallSession *>(user_data);
GstElement *createElement(const char *type, GstElement *pipe, const char *name = nullptr)
{
auto element = gst_element_factory_make(type, name);
Q_ASSERT_X(element, __FUNCTION__, QStringLiteral("Failed to create element %1 %2").arg(type, name).toLatin1());
if (pipe) {
gst_bin_add_many(GST_BIN(pipe), element, nullptr);
}
return element;
}
GstElement *binGetByName(GstElement *bin, const char *name)
{
auto element = gst_bin_get_by_name(GST_BIN(bin), name);
Q_ASSERT_X(element, __FUNCTION__, QStringLiteral("Failed to get element by name: %1").arg(name).toLatin1());
return element;
}
struct KeyFrameRequestData {
GstElement *pipe = nullptr;
GstElement *decodeBin = nullptr;
gint packetsLost = 0;
guint timerId = 0;
QString statsField;
} keyFrameRequestData;
std::pair<int, int> getResolution(GstPad *pad)
{
std::pair<int, int> ret;
auto caps = gst_pad_get_current_caps(pad);
auto structure = gst_caps_get_structure(caps, 0);
gst_structure_get_int(structure, "width", &ret.first);
gst_structure_get_int(structure, "height", &ret.second);
gst_caps_unref(caps);
return ret;
}
std::pair<int, int> getResolution(GstElement *pipe, const gchar *elementName, const gchar *padName)
{
auto element = binGetByName(pipe, elementName);
auto pad = gst_element_get_static_pad(element, padName);
auto ret = getResolution(pad);
gst_object_unref(pad);
gst_object_unref(element);
return ret;
}
void setLocalDescription(GstPromise *promise, gpointer user_data)
{
INSTANCE
qCDebug(voip) << "Setting local description";
const GstStructure *reply = gst_promise_get_reply(promise);
gboolean isAnswer = gst_structure_id_has_field(reply, g_quark_from_string("answer"));
GstWebRTCSessionDescription *gstsdp = nullptr;
gst_structure_get(reply, isAnswer ? "answer" : "offer", GST_TYPE_WEBRTC_SESSION_DESCRIPTION, &gstsdp, nullptr);
gst_promise_unref(promise);
auto webrtcbin = binGetByName(instance->m_pipe, "webrtcbin");
Q_ASSERT(gstsdp);
g_signal_emit_by_name(webrtcbin, "set-local-description", gstsdp, nullptr);
gchar *sdp = gst_sdp_message_as_text(gstsdp->sdp);
if (!instance->m_localSdp.isEmpty()) {
// This is a renegotiation
qWarning() << "emitting renegotiate";
Q_EMIT instance->renegotiate(QString(sdp), isAnswer ? QStringLiteral("answer") : QStringLiteral("offer"));
}
instance->m_localSdp = QString(sdp);
g_free(sdp);
gst_webrtc_session_description_free(gstsdp);
qCDebug(voip) << "Local description set:" << isAnswer;
}
bool contains(std::string_view str1, std::string_view str2)
{
return std::search(str1.cbegin(),
str1.cend(),
str2.cbegin(),
str2.cend(),
[](unsigned char c1, unsigned char c2) {
return std::tolower(c1) == std::tolower(c2);
})
!= str1.cend();
}
void createOffer(GstElement *webrtc, CallSession *session)
{
// TODO ?!?
if (!session->m_localSdp.isEmpty()) {
return;
}
qCWarning(voip) << "Creating Offer";
auto promise = gst_promise_new_with_change_func(setLocalDescription, session, nullptr);
g_signal_emit_by_name(webrtc, "create-offer", nullptr, promise);
}
void createAnswer(GstPromise *promise, gpointer user_data)
{
INSTANCE
qCDebug(voip) << "Creating Answer";
gst_promise_unref(promise);
promise = gst_promise_new_with_change_func(setLocalDescription, instance, nullptr);
auto webrtcbin = binGetByName(instance->m_pipe, "webrtcbin");
g_signal_emit_by_name(webrtcbin, "create-answer", nullptr, promise);
}
bool getMediaAttributes(const GstSDPMessage *sdp, const char *mediaType, const char *encoding, int &payloadType, bool &receiveOnly, bool &sendOnly)
{
payloadType = -1;
receiveOnly = false;
sendOnly = false;
for (guint mlineIndex = 0; mlineIndex < gst_sdp_message_medias_len(sdp); mlineIndex++) {
const GstSDPMedia *media = gst_sdp_message_get_media(sdp, mlineIndex);
if (!strcmp(gst_sdp_media_get_media(media), mediaType)) {
receiveOnly = gst_sdp_media_get_attribute_val(media, "recvonly") != nullptr;
sendOnly = gst_sdp_media_get_attribute_val(media, "sendonly") != nullptr;
const gchar *rtpval = nullptr;
for (guint n = 0; n == 0 || rtpval; n++) {
rtpval = gst_sdp_media_get_attribute_val_n(media, "rtpmap", n);
if (rtpval && contains(rtpval, encoding)) {
payloadType = QString::fromLatin1(rtpval).toInt();
break;
}
}
return true;
}
}
return false;
}
GstWebRTCSessionDescription *parseSDP(const QString &sdp, GstWebRTCSDPType type)
{
GstSDPMessage *message;
gst_sdp_message_new(&message);
if (gst_sdp_message_parse_buffer((guint8 *)sdp.toLatin1().data(), sdp.size(), message) == GST_SDP_OK) {
return gst_webrtc_session_description_new(type, message);
} else {
qCCritical(voip) << "Failed to parse remote SDP";
gst_sdp_message_free(message);
return nullptr;
}
}
void addLocalICECandidate(GstElement *webrtc, guint mlineIndex, const gchar *candidate, gpointer user_data)
{
Q_UNUSED(webrtc);
INSTANCE
// qCWarning(voip) << "Adding local ICE Candidates";
instance->m_localCandidates += Candidate{candidate, static_cast<int>(mlineIndex), QString()};
}
void iceConnectionStateChanged(GstElement *webrtc, GParamSpec *pspec, gpointer user_data)
{
Q_UNUSED(pspec);
INSTANCE
GstWebRTCICEConnectionState newState;
g_object_get(webrtc, "ice-connection-state", &newState, nullptr);
switch (newState) {
case GST_WEBRTC_ICE_CONNECTION_STATE_NEW:
case GST_WEBRTC_ICE_CONNECTION_STATE_CHECKING:
instance->setState(CallSession::CONNECTING);
break;
case GST_WEBRTC_ICE_CONNECTION_STATE_FAILED:
instance->setState(CallSession::ICEFAILED);
break;
case GST_WEBRTC_ICE_CONNECTION_STATE_CONNECTED:
instance->setState(CallSession::CONNECTED);
case GST_WEBRTC_ICE_CONNECTION_STATE_COMPLETED:
case GST_WEBRTC_ICE_CONNECTION_STATE_DISCONNECTED:
case GST_WEBRTC_ICE_CONNECTION_STATE_CLOSED:
default:
break;
}
}
GstElement *newAudioSinkChain(GstElement *pipe)
{
qCWarning(voip) << "New Audio Sink Chain";
GstElement *queue = createElement("queue", pipe);
GstElement *convert = createElement("audioconvert", pipe);
GstElement *resample = createElement("audioresample", pipe);
GstElement *sink = createElement("autoaudiosink", pipe);
gst_element_link_many(queue, convert, resample, sink, nullptr);
gst_element_sync_state_with_parent(queue);
gst_element_sync_state_with_parent(convert);
gst_element_sync_state_with_parent(resample);
gst_element_sync_state_with_parent(sink);
return queue;
}
void sendKeyFrameRequest()
{
auto sinkpad = gst_element_get_static_pad(keyFrameRequestData.decodeBin, "sink");
if (!gst_pad_push_event(sinkpad, gst_event_new_custom(GST_EVENT_CUSTOM_UPSTREAM, gst_structure_new_empty("GstForceKeyUnit")))) {
qCWarning(voip) << "Keyframe request failed";
}
gst_object_unref(sinkpad);
}
void onGetStats(GstPromise *promise, gpointer)
{
auto reply = gst_promise_get_reply(promise);
GstStructure *rtpStats;
if (!gst_structure_get(reply, keyFrameRequestData.statsField.toLatin1().data(), GST_TYPE_STRUCTURE, &rtpStats, nullptr)) {
gst_promise_unref(promise);
return;
}
auto packetsLost = 0;
gst_structure_get_int(rtpStats, "packets-lost", &packetsLost);
gst_structure_free(rtpStats);
gst_promise_unref(promise);
if (packetsLost > keyFrameRequestData.packetsLost) {
qCWarning(voip) << "inbound video lost packet count:" << packetsLost;
keyFrameRequestData.packetsLost = packetsLost;
sendKeyFrameRequest();
}
}
// TODO port to QTimer?
gboolean testPacketLoss(gpointer)
{
if (!keyFrameRequestData.pipe) {
return false;
}
auto webrtc = binGetByName(keyFrameRequestData.pipe, "webrtcbin");
auto promise = gst_promise_new_with_change_func(onGetStats, nullptr, nullptr);
g_signal_emit_by_name(webrtc, "get-stats", nullptr, promise);
gst_object_unref(webrtc);
return true;
}
GstElement *newVideoSinkChain(GstElement *pipe, QQuickItem *quickItem)
{
Q_ASSERT(pipe);
Q_ASSERT(quickItem);
qCWarning(voip) << "Creating Video Sink Chain";
auto queue = createElement("queue", pipe);
auto compositor = createElement("compositor", pipe);
auto glupload = createElement("glupload", pipe);
auto glcolorconvert = createElement("glcolorconvert", pipe);
auto qmlglsink = createElement("qmlglsink", nullptr);
auto glsinkbin = createElement("glsinkbin", pipe);
g_object_set(qmlglsink, "widget", quickItem, nullptr);
g_object_set(glsinkbin, "sink", qmlglsink, nullptr);
gst_element_link_many(queue, compositor, glupload, glcolorconvert, glsinkbin, nullptr);
gst_element_sync_state_with_parent(queue);
gst_element_sync_state_with_parent(compositor);
gst_element_sync_state_with_parent(glupload);
gst_element_sync_state_with_parent(glcolorconvert);
gst_element_sync_state_with_parent(glsinkbin);
return queue;
}
static GstPadProbeReturn pad_cb(GstPad *pad, GstPadProbeInfo *info, gpointer user_data)
{
Q_UNUSED(pad);
// auto stream = static_cast<VideoStream *>(user_data);
auto event = GST_PAD_PROBE_INFO_EVENT(info);
if (GST_EVENT_CAPS == GST_EVENT_TYPE(event)) {
GstCaps *caps = gst_caps_new_any();
int width, height;
gst_event_parse_caps(event, &caps);
auto structure = gst_caps_get_structure(caps, 0);
gst_structure_get_int(structure, "width", &width);
gst_structure_get_int(structure, "height", &height);
// stream->setWidth(width);
// stream->setHeight(height);
// TODO needed?
}
return GST_PAD_PROBE_OK;
}
void linkNewPad(GstElement *decodeBin, GstPad *newpad, gpointer user_data)
{
INSTANCE
qCWarning(voip) << "Linking New Pad";
auto sinkpad = gst_element_get_static_pad(decodeBin, "sink");
auto sinkcaps = gst_pad_get_current_caps(sinkpad);
auto structure = gst_caps_get_structure(sinkcaps, 0);
gchar *mediaType = nullptr;
guint ssrc = 0;
gst_structure_get(structure, "media", G_TYPE_STRING, &mediaType, "ssrc", G_TYPE_UINT, &ssrc, nullptr);
gst_caps_unref(sinkcaps);
gst_object_unref(sinkpad);
GstElement *queue = nullptr;
if (!strcmp(mediaType, "audio")) {
qCWarning(voip) << "Receiving audio stream";
queue = newAudioSinkChain(instance->m_pipe);
} else if (!strcmp(mediaType, "video")) {
qCWarning(voip) << "Receiving video stream";
auto fake = createElement("fakesink", instance->m_pipe);
auto selector = createElement("output-selector", instance->m_pipe);
auto selectorSink = gst_element_get_static_pad(selector, "sink");
auto selectorSrc1 = gst_element_request_pad_simple(selector, "src_%u");
gst_pad_link(newpad, selectorSink);
auto fakepad = gst_element_get_static_pad(fake, "sink");
gst_pad_link(selectorSrc1, fakepad);
g_object_set(selector, "active-pad", selectorSrc1, nullptr);
auto msid = instance->ssrcToMsid[ssrc];
// gst_pad_add_probe(newpad, GST_PAD_PROBE_TYPE_EVENT_BOTH, pad_cb, stream, nullptr);
auto manager = dynamic_cast<CallManager *>(instance->parent());
auto participants = manager->callParticipants();
auto user = dynamic_cast<NeoChatUser *>(manager->room()->user(instance->msidToUserId[msid]));
participants->setHasCamera(user, true);
auto participant = participants->callParticipantForUser(user);
// gst_pad_add_probe(newpad, GST_PAD_PROBE_TYPE_EVENT_BOTH, pad_cb, nullptr, nullptr);
connectSingleShot(participant, &CallParticipant::initialized, instance, [=](QQuickItem *item) {
gst_pad_unlink(newpad, fakepad);
auto queue = newVideoSinkChain(instance->m_pipe, item);
auto queuepad = gst_element_get_static_pad(queue, "sink");
Q_ASSERT(queuepad);
auto selectorSrc = gst_element_request_pad_simple(selector, "src_%u");
auto ok = GST_PAD_LINK_SUCCESSFUL(gst_pad_link(selectorSrc, queuepad));
Q_ASSERT(ok);
g_object_set(selector, "active-pad", selectorSrc, nullptr);
instance->setState(CallSession::CONNECTED);
keyFrameRequestData.pipe = instance->m_pipe;
keyFrameRequestData.decodeBin = decodeBin;
keyFrameRequestData.timerId = g_timeout_add_seconds(3, testPacketLoss, nullptr);
keyFrameRequestData.statsField = QStringLiteral("rtp-inbound-stream-stats_") + QString::number(ssrc);
gst_object_unref(queuepad);
g_free(mediaType);
});
return;
} else {
g_free(mediaType);
qCWarning(voip) << "Unknown pad type:" << GST_PAD_NAME(newpad);
return;
}
auto queuepad = gst_element_get_static_pad(queue, "sink");
Q_ASSERT(queuepad);
auto ok = GST_PAD_LINK_SUCCESSFUL(gst_pad_link(newpad, queuepad));
Q_ASSERT(ok);
gst_object_unref(queuepad);
g_free(mediaType);
}
void setWaitForKeyFrame(GstBin *decodeBin, GstElement *element, gpointer)
{
Q_UNUSED(decodeBin);
if (!strcmp(gst_plugin_feature_get_name(GST_PLUGIN_FEATURE(gst_element_get_factory(element))), "rtpvp8depay")) {
g_object_set(element, "wait-for-keyframe", TRUE, nullptr);
}
}
void addDecodeBin(GstElement *webrtc, GstPad *newpad, gpointer user_data)
{
Q_UNUSED(webrtc);
if (GST_PAD_DIRECTION(newpad) != GST_PAD_SRC) {
return;
}
INSTANCE
auto decodeBin = createElement("decodebin", instance->m_pipe);
// Investigate hardware, see nheko source
g_object_set(decodeBin, "force-sw-decoders", TRUE, nullptr);
g_signal_connect(decodeBin, "pad-added", G_CALLBACK(linkNewPad), instance);
g_signal_connect(decodeBin, "element-added", G_CALLBACK(setWaitForKeyFrame), nullptr);
gst_element_sync_state_with_parent(decodeBin);
auto sinkpad = gst_element_get_static_pad(decodeBin, "sink");
if (GST_PAD_LINK_FAILED(gst_pad_link(newpad, sinkpad))) {
// TODO: Error handling
qCWarning(voip) << "Unable to link decodebin";
}
gst_object_unref(sinkpad);
}
void iceGatheringStateChanged(GstElement *webrtc, GParamSpec *pspec, gpointer user_data)
{
Q_UNUSED(pspec);
INSTANCE
GstWebRTCICEGatheringState newState;
g_object_get(webrtc, "ice-gathering-state", &newState, nullptr);
if (newState == GST_WEBRTC_ICE_GATHERING_STATE_COMPLETE) {
qCWarning(voip) << "GstWebRTCICEGatheringState -> Complete";
if (instance->m_isOffering) {
Q_EMIT instance->offerCreated(instance->m_localSdp, instance->m_localCandidates);
instance->setState(CallSession::OFFERSENT);
} else {
Q_EMIT instance->answerCreated(instance->m_localSdp, instance->m_localCandidates);
instance->setState(CallSession::ANSWERSENT);
}
}
}
gboolean newBusMessage(GstBus *bus, GstMessage *msg, gpointer user_data)
{
Q_UNUSED(bus);
INSTANCE
switch (GST_MESSAGE_TYPE(msg)) {
case GST_MESSAGE_EOS:
qCWarning(voip) << "End of stream";
// TODO: Error handling
instance->end();
break;
case GST_MESSAGE_ERROR:
GError *error;
gchar *debug;
gst_message_parse_error(msg, &error, &debug);
qCWarning(voip) << "Error from element:" << GST_OBJECT_NAME(msg->src) << error->message;
// TODO: Error handling
g_clear_error(&error);
g_free(debug);
instance->end();
break;
default:
break;
}
return TRUE;
}
CallSession::CallSession(QObject *parent)
: QObject(parent)
{
}
void CallSession::acceptAnswer(const QString &sdp, const QVector<Candidate> &candidates, const QString &userId)
{
qCDebug(voip) << "Accepting Answer";
if (m_state != CallSession::OFFERSENT) {
return;
}
GstWebRTCSessionDescription *answer = parseSDP(sdp, GST_WEBRTC_SDP_TYPE_ANSWER);
if (!answer) {
end();
return;
}
acceptCandidates(candidates);
setRemoteDescription(answer, userId);
}
void CallSession::setRemoteDescription(GstWebRTCSessionDescription *remote, const QString &userId, GstPromise *promise)
{
GstElement *webrtcbin = binGetByName(m_pipe, "webrtcbin");
auto sdp = remote->sdp;
for (guint i = 0; i < gst_sdp_message_medias_len(sdp); i++) {
auto media = gst_sdp_message_get_media(sdp, i);
QList<uint32_t> ssrcs;
QString msid;
for (guint j = 0; j < gst_sdp_media_attributes_len(media); j++) {
auto attribute = gst_sdp_media_get_attribute(media, j);
if (!strcmp(attribute->key, "ssrc")) {
ssrcs += QString(attribute->value).split(" ")[0].toUInt();
}
if (!strcmp(attribute->key, "msid")) {
msid = QString(attribute->value).split(" ")[0];
}
}
for (const auto &ssrc : ssrcs) {
ssrcToMsid[ssrc] = msid;
}
msidToUserId[msid] = userId;
}
g_signal_emit_by_name(webrtcbin, "set-remote-description", remote, promise);
}
void CallSession::renegotiateOffer(const QString &_offer, const QString &userId, bool answer)
{
GstWebRTCSessionDescription *sdp = parseSDP(_offer, answer ? GST_WEBRTC_SDP_TYPE_ANSWER : GST_WEBRTC_SDP_TYPE_OFFER);
if (!sdp) {
Q_ASSERT(false);
}
GstElement *webrtcbin = binGetByName(m_pipe, "webrtcbin");
setRemoteDescription(sdp, userId);
qWarning() << "answer:" << answer;
if (!answer) {
GstPromise *promise = gst_promise_new_with_change_func(setLocalDescription, this, nullptr);
g_signal_emit_by_name(webrtcbin, "create-answer", nullptr, promise);
}
}
void CallSession::acceptOffer(const QString &sdp, const QVector<Candidate> remoteCandidates, const QString &userId)
{
Q_ASSERT(!sdp.isEmpty());
Q_ASSERT(!remoteCandidates.isEmpty());
qCDebug(voip) << "Accepting offer";
if (m_state != CallSession::DISCONNECTED) {
return;
}
m_isOffering = false;
GstWebRTCSessionDescription *offer = parseSDP(sdp, GST_WEBRTC_SDP_TYPE_OFFER);
if (!offer) {
qCCritical(voip) << "Not an offer";
return;
}
int opusPayloadType;
bool receiveOnly;
bool sendOnly;
if (getMediaAttributes(offer->sdp, "audio", "opus", opusPayloadType, receiveOnly, sendOnly)) {
if (opusPayloadType == -1) {
qCCritical(voip) << "No OPUS in offer";
gst_webrtc_session_description_free(offer);
return;
}
} else {
qCCritical(voip) << "No audio in offer";
gst_webrtc_session_description_free(offer);
return;
}
startPipeline();
QThread::msleep(1000); // ?
acceptCandidates(remoteCandidates);
auto promise = gst_promise_new_with_change_func(createAnswer, this, nullptr);
setRemoteDescription(offer, userId, promise);
gst_webrtc_session_description_free(offer);
}
void CallSession::createCall()
{
qCDebug(voip) << "Creating call";
m_isOffering = true;
startPipeline();
}
void CallSession::startPipeline()
{
qCDebug(voip) << "Starting Pipeline";
if (m_state != CallSession::DISCONNECTED) {
return;
}
m_state = CallSession::INITIATING;
Q_EMIT stateChanged();
createPipeline();
auto webrtcbin = binGetByName(m_pipe, "webrtcbin");
Q_ASSERT(webrtcbin);
if (false /*TODO: CHECK USE STUN*/) {
qCDebug(voip) << "Setting STUN server:" << STUN_SERVER;
g_object_set(webrtcbin, "stun-server", STUN_SERVER, nullptr);
}
for (const auto &uri : m_turnServers) {
qCDebug(voip) << "Setting turn server:" << uri;
gboolean udata;
g_signal_emit_by_name(webrtcbin, "add-turn-server", uri.toLatin1().data(), (gpointer)(&udata));
}
if (m_turnServers.empty()) {
qCWarning(voip) << "No TURN servers provided";
}
if (m_isOffering) {
g_signal_connect(webrtcbin, "on-negotiation-needed", G_CALLBACK(::createOffer), this);
}
g_signal_connect(webrtcbin, "on-ice-candidate", G_CALLBACK(addLocalICECandidate), this);
g_signal_connect(webrtcbin, "notify::ice-connection-state", G_CALLBACK(iceConnectionStateChanged), this);
gst_element_set_state(m_pipe, GST_STATE_READY);
g_signal_connect(webrtcbin, "pad-added", G_CALLBACK(addDecodeBin), this);
g_signal_connect(webrtcbin, "notify::ice-gathering-state", G_CALLBACK(iceGatheringStateChanged), this);
gst_object_unref(webrtcbin);
GstStateChangeReturn ret = gst_element_set_state(m_pipe, GST_STATE_PLAYING);
if (ret == GST_STATE_CHANGE_FAILURE) {
// TODO: Error handling
qCCritical(voip) << "Unable to start pipeline";
end();
return;
}
GstBus *bus = gst_pipeline_get_bus(GST_PIPELINE(m_pipe));
m_busWatchId = gst_bus_add_watch(bus, newBusMessage, this);
gst_object_unref(bus);
m_state = CallSession::INITIATED;
Q_EMIT stateChanged();
}
void CallSession::end()
{
qCDebug(voip) << "Ending Call";
if (m_pipe) {
gst_element_set_state(m_pipe, GST_STATE_NULL);
gst_object_unref(m_pipe);
m_pipe = nullptr;
keyFrameRequestData.pipe = nullptr;
if (m_busWatchId) {
g_source_remove(m_busWatchId);
m_busWatchId = 0;
}
}
if (m_state != CallSession::DISCONNECTED) {
m_state = CallSession::DISCONNECTED;
Q_EMIT stateChanged();
}
}
void CallSession::createPipeline()
{
qCWarning(voip) << "Creating Pipeline";
auto device = AudioSources::instance().currentDevice();
if (!device) {
return;
}
m_pipe = gst_pipeline_new(nullptr);
auto source = gst_device_create_element(device, nullptr);
auto volume = createElement("volume", m_pipe, "srclevel");
auto convert = createElement("audioconvert", m_pipe);
auto resample = createElement("audioresample", m_pipe);
auto queue1 = createElement("queue", m_pipe);
auto opusenc = createElement("opusenc", m_pipe);
auto rtp = createElement("rtpopuspay", m_pipe);
auto queue2 = createElement("queue", m_pipe);
auto capsfilter = createElement("capsfilter", m_pipe);
auto rtpcaps = gst_caps_new_simple("application/x-rtp",
"media",
G_TYPE_STRING,
"audio",
"encoding-name",
G_TYPE_STRING,
"OPUS",
"payload",
G_TYPE_INT,
OPUS_PAYLOAD_TYPE,
nullptr);
Q_ASSERT(rtpcaps);
g_object_set(capsfilter, "caps", rtpcaps, nullptr);
gst_caps_unref(rtpcaps);
auto webrtcbin = createElement("webrtcbin", m_pipe, "webrtcbin");
g_object_set(webrtcbin, "bundle-policy", GST_WEBRTC_BUNDLE_POLICY_MAX_BUNDLE, nullptr);
gst_bin_add_many(GST_BIN(m_pipe), source, nullptr);
if (!gst_element_link_many(source, volume, convert, resample, queue1, opusenc, rtp, queue2, capsfilter, webrtcbin, nullptr)) {
qCCritical(voip) << "Failed to link pipeline";
// TODO propagate errors up and end call
return;
}
}
void CallSession::toggleCamera()
{
// TODO do this only once
static bool inited = false;
if (!inited) {
addVideoPipeline();
inited = true;
}
}
bool CallSession::addVideoPipeline()
{
qCDebug(voip) << "Adding Video Pipeline";
auto videoconvert = createElement("videoconvertscale", m_pipe);
auto tee = createElement("tee", m_pipe);
auto device = VideoSources::instance().currentDevice();
auto deviceCaps = device->caps[VideoSources::instance().capsIndex()];
int width = deviceCaps.width;
int height = deviceCaps.height;
int framerate = deviceCaps.framerates.back();
if (!device) {
return false;
}
auto camera = gst_device_create_element(device->device, nullptr);
gst_bin_add_many(GST_BIN(m_pipe), camera, nullptr);
auto caps =
gst_caps_new_simple("video/x-raw", "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, "framerate", GST_TYPE_FRACTION, framerate, 1, nullptr);
auto camerafilter = createElement("capsfilter", m_pipe);
g_object_set(camerafilter, "caps", caps, nullptr);
gst_caps_unref(caps);
gst_element_link(camera, videoconvert);
if (!gst_element_link_many(videoconvert, camerafilter, nullptr)) {
qCWarning(voip) << "Failed to link camera elements";
// TODO: Error handling
return false;
}
if (!gst_element_link(camerafilter, tee)) {
qCWarning(voip) << "Failed to link camerafilter -> tee";
// TODO: Error handling
return false;
}
auto queue = createElement("queue", m_pipe);
g_object_set(queue, "leaky", true, nullptr);
auto vp8enc = createElement("vp8enc", m_pipe);
g_object_set(vp8enc, "deadline", 1, nullptr);
g_object_set(vp8enc, "error-resilient", 1, nullptr);
auto rtpvp8pay = createElement("rtpvp8pay", m_pipe);
auto rtpqueue = createElement("queue", m_pipe);
auto rtpcapsfilter = createElement("capsfilter", m_pipe);
auto rtpcaps = gst_caps_new_simple("application/x-rtp",
"media",
G_TYPE_STRING,
"video",
"encoding-name",
G_TYPE_STRING,
"VP8",
"payload",
G_TYPE_INT,
VP8_PAYLOAD_TYPE,
nullptr);
g_object_set(rtpcapsfilter, "caps", rtpcaps, nullptr);
gst_caps_unref(rtpcaps);
auto webrtcbin = binGetByName(m_pipe, "webrtcbin");
if (!gst_element_link_many(tee, queue, vp8enc, rtpvp8pay, rtpqueue, rtpcapsfilter, webrtcbin, nullptr)) {
qCCritical(voip) << "Failed to link rtp video elements";
gst_object_unref(webrtcbin);
return false;
}
auto promise = gst_promise_new_with_change_func(setLocalDescription, this, nullptr);
g_signal_emit_by_name(webrtcbin, "create-offer", nullptr, promise);
gst_object_unref(webrtcbin);
auto newpad = gst_element_request_pad_simple(tee, "src_%u");
Q_ASSERT(newpad);
auto fake = createElement("fakesink", m_pipe);
auto selector = createElement("output-selector", m_pipe);
auto selectorSink = gst_element_get_static_pad(selector, "sink");
auto selectorSrc1 = gst_element_request_pad_simple(selector, "src_%u");
gst_pad_link(newpad, selectorSink);
auto fakepad = gst_element_get_static_pad(fake, "sink");
gst_pad_link(selectorSrc1, fakepad);
g_object_set(selector, "active-pad", selectorSrc1, nullptr);
// gst_pad_add_probe(newpad, GST_PAD_PROBE_TYPE_EVENT_BOTH, pad_cb, stream, nullptr);
auto manager = dynamic_cast<CallManager *>(parent());
auto participants = manager->callParticipants();
auto user = dynamic_cast<NeoChatUser *>(manager->room()->localUser());
participants->setHasCamera(user, true);
connectSingleShot(participants->callParticipantForUser(user), &CallParticipant::initialized, this, [=](QQuickItem *item) {
gst_pad_unlink(newpad, fakepad);
Q_ASSERT(item);
auto queue = newVideoSinkChain(m_pipe, item);
Q_ASSERT(queue);
auto queuepad = gst_element_get_static_pad(queue, "sink");
Q_ASSERT(queuepad);
auto selectorSrc = gst_element_request_pad_simple(selector, "src_%u");
Q_ASSERT(selectorSrc);
auto ok = GST_PAD_LINK_SUCCESSFUL(gst_pad_link(selectorSrc, queuepad));
Q_ASSERT(ok);
g_object_set(selector, "active-pad", selectorSrc, nullptr);
gst_object_unref(queuepad);
gst_element_set_state(m_pipe, GST_STATE_READY); // TODO experimental
gst_element_set_state(m_pipe, GST_STATE_PLAYING); // TODO experimental
GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(m_pipe), GST_DEBUG_GRAPH_SHOW_ALL, "foo");
});
return true;
}
void CallSession::setTurnServers(QStringList servers)
{
qCDebug(voip) << "Setting Turn Servers";
qWarning() << "TURN SERVERS" << servers;
m_turnServers = servers;
}
void CallSession::acceptCandidates(const QVector<Candidate> &candidates)
{
qCDebug(voip) << "Accepting ICE Candidates";
auto webrtcbin = binGetByName(m_pipe, "webrtcbin");
for (const auto &c : candidates) {
qCDebug(voip) << "Remote candidate:" << c.candidate << c.sdpMLineIndex;
g_signal_emit_by_name(webrtcbin, "add-ice-candidate", c.sdpMLineIndex, c.candidate.toLatin1().data());
}
}
QStringList CallSession::missingPlugins()
{
GstRegistry *registry = gst_registry_get();
static const QVector<QString> videoPlugins = {
QLatin1String("compositor"),
QLatin1String("opengl"),
QLatin1String("qmlgl"),
QLatin1String("rtp"),
QLatin1String("videoconvertscale"),
QLatin1String("vpx"),
};
static const QVector<QString> audioPlugins = {
QStringLiteral("audioconvert"),
QStringLiteral("audioresample"),
QStringLiteral("autodetect"),
QStringLiteral("dtls"),
QStringLiteral("nice"),
QStringLiteral("opus"),
QStringLiteral("playback"),
QStringLiteral("rtpmanager"),
QStringLiteral("srtp"),
QStringLiteral("volume"),
QStringLiteral("webrtc"),
};
QStringList missingPlugins;
for (const auto &pluginName : videoPlugins + audioPlugins) {
auto plugin = gst_registry_find_plugin(registry, pluginName.toLatin1().data());
if (!plugin) {
missingPlugins << pluginName;
}
gst_object_unref(plugin);
}
return missingPlugins;
}
void CallSession::setMuted(bool muted)
{
const auto srclevel = binGetByName(m_pipe, "srclevel");
g_object_set(srclevel, "mute", muted, nullptr);
gst_object_unref(srclevel);
Q_EMIT mutedChanged();
}
bool CallSession::muted() const
{
if (m_state < CallSession::CONNECTING) {
return false;
}
if (!m_pipe) {
return false;
}
const auto srclevel = binGetByName(m_pipe, "srclevel");
bool muted;
if (!srclevel) {
return false;
}
g_object_get(srclevel, "mute", &muted, nullptr);
// gst_object_unref(srclevel); //TODO why does this crash?
return muted;
}
CallSession *
CallSession::acceptCall(const QString &sdp, const QVector<Candidate> &candidates, const QStringList &turnUris, const QString &userId, QObject *parent)
{
auto instance = new CallSession(parent);
instance->setTurnServers(turnUris);
instance->acceptOffer(sdp, candidates, userId);
return instance;
}
CallSession *CallSession::startCall(const QStringList &turnUris, QObject *parent)
{
auto instance = new CallSession(parent);
instance->setTurnServers(turnUris);
instance->createCall();
return instance;
}
CallSession::State CallSession::state() const
{
return m_state;
}
void CallSession::setState(CallSession::State state)
{
qCWarning(voip) << "Setting state" << state;
m_state = state;
Q_EMIT stateChanged();
}
void CallSession::setMetadata(QJsonObject metadata)
{
m_metadata = metadata;
}

View File

@@ -1,113 +0,0 @@
// SPDX-FileCopyrightText: 2021 Nheko Contributors
// SPDX-FileCopyrightText: 2021 Carl Schwan <carl@carlschwan.eu>
// SPDX-FileCopyrightText: 2021-2022 Tobias Fella <fella@posteo.de>
//
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <QJsonObject>
#include <QMetaType>
#include <QObject>
#include <QQuickItem>
#include <QString>
#include <variant>
#define GST_USE_UNSTABLE_API
#include <gst/webrtc/webrtc.h>
#include <gst/gst.h>
#define OPUS_PAYLOAD_TYPE 111
#define VP8_PAYLOAD_TYPE 96
class CallDevices;
class VideoStream;
struct Candidate {
QString candidate;
int sdpMLineIndex;
QString sdpMid;
};
Q_DECLARE_METATYPE(Candidate)
Q_DECLARE_METATYPE(QVector<Candidate>)
class CallSession : public QObject
{
Q_OBJECT
public:
enum State {
DISCONNECTED,
ICEFAILED,
INITIATING,
INITIATED,
OFFERSENT,
ANSWERSENT,
CONNECTING,
CONNECTED,
};
Q_ENUM(State);
Q_PROPERTY(CallSession::State state READ state NOTIFY stateChanged)
Q_PROPERTY(bool muted READ muted WRITE setMuted NOTIFY mutedChanged)
// For outgoing calls
static CallSession *startCall(const QStringList &turnUris, QObject *parent = nullptr);
void acceptAnswer(const QString &sdp, const QVector<Candidate> &candidates, const QString &parent);
// For incoming calls
static CallSession *
acceptCall(const QString &sdp, const QVector<Candidate> &candidates, const QStringList &turnUris, const QString &userId, QObject *parent = nullptr);
void end();
void renegotiateOffer(const QString &offer, const QString &userId, bool answer);
void setTurnServers(QStringList servers);
static QStringList missingPlugins();
CallSession::State state() const;
void toggleCamera();
bool muted() const;
void setMuted(bool muted);
void setMetadata(QJsonObject metadata);
void acceptCandidates(const QVector<Candidate> &candidates);
QMap<QString, QString> msidToUserId;
Q_SIGNALS:
void stateChanged();
void offerCreated(const QString &sdp, const QVector<Candidate> &candidates);
void answerCreated(const QString &sdp, const QVector<Candidate> &candidates);
void mutedChanged();
void newVideoStream(VideoStream *stream);
void renegotiate(QString sdp, const QString &type);
private:
CallSession(QObject *parent = nullptr);
void acceptOffer(const QString &sdp, const QVector<Candidate> remoteCandidates, const QString &userId);
void createCall();
void setRemoteDescription(GstWebRTCSessionDescription *remote, const QString &userId, GstPromise *promise = nullptr);
void startPipeline();
void createPipeline();
bool addVideoPipeline();
void setState(CallSession::State state);
GstPad *m_activePad;
GstElement *m_inputSelector;
CallSession::State m_state = CallSession::DISCONNECTED;
unsigned int m_busWatchId = 0;
QStringList m_turnServers;
QVector<Candidate> m_localCandidates;
QString m_localSdp;
GstElement *m_pipe = nullptr;
bool m_isOffering = false;
QMap<int, QString> ssrcToMsid;
QJsonObject m_metadata;
GstPad *m_inactivePad;
};

View File

@@ -1,165 +0,0 @@
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-License-Identifier: LGPL-2.0-or-later
#include "devicemonitor.h"
#include "voiplogging.h"
#include <QTimer>
QDebug operator<<(QDebug dbg, const GstStructure *props)
{
QDebugStateSaver saver(dbg);
auto asStr = gst_structure_to_string(props);
dbg << asStr;
g_free(asStr);
return dbg;
}
static gboolean deviceCallback(GstBus *bus, GstMessage *message, gpointer user_data)
{
Q_UNUSED(bus);
auto monitor = static_cast<DeviceMonitor *>(user_data);
return monitor->callback(message);
}
DeviceMonitor::DeviceMonitor()
: QObject()
{
QTimer::singleShot(0, this, &DeviceMonitor::init);
}
void DeviceMonitor::init()
{
if (m_monitor) {
return;
}
m_monitor = gst_device_monitor_new();
GstCaps *caps = gst_caps_new_empty_simple("audio/x-raw");
gst_device_monitor_add_filter(m_monitor, "Audio/Source", caps);
gst_caps_unref(caps);
caps = gst_caps_new_empty_simple("video/x-raw");
gst_device_monitor_add_filter(m_monitor, "Video/Source", caps);
gst_caps_unref(caps);
GstBus *bus = gst_device_monitor_get_bus(m_monitor);
gst_bus_add_watch(bus, deviceCallback, this);
gst_object_unref(bus);
if (!gst_device_monitor_start(m_monitor)) {
qWarning() << "Failed to start device monitor";
}
}
QVector<AudioSource *> DeviceMonitor::audioSources() const
{
return m_audioSources;
}
QVector<VideoSource *> DeviceMonitor::videoSources() const
{
return m_videoSources;
}
void DeviceMonitor::handleVideoSource(GstDevice *device)
{
auto source = new VideoSource();
auto title = gst_device_get_display_name(device);
source->title = QString(title);
g_free(title);
source->device = device;
auto caps = gst_device_get_caps(device);
auto size = gst_caps_get_size(caps);
for (size_t i = 0; i < size; i++) {
VideoCap videoCap;
GstStructure *cap = gst_caps_get_structure(caps, i);
const gchar *name = gst_structure_get_name(cap);
if (strcmp(name, "video/x-raw")) {
// TODO g_free(name);
continue;
}
// TODO g_free(name);
gst_structure_get(cap, "width", G_TYPE_INT, &videoCap.width, "height", G_TYPE_INT, &videoCap.height, nullptr);
const auto framerate = gst_structure_get_value(cap, "framerate");
if (GST_VALUE_HOLDS_FRACTION(framerate)) {
auto numerator = gst_value_get_fraction_numerator(framerate);
auto denominator = gst_value_get_fraction_denominator(framerate);
videoCap.framerates += (float)numerator / denominator;
}
// unref cap?
source->caps += videoCap;
}
m_videoSources += source;
Q_EMIT videoSourceAdded();
}
void DeviceMonitor::handleAudioSource(GstDevice *device)
{
auto source = new AudioSource();
auto title = gst_device_get_display_name(device);
source->title = QString(title);
g_free(title);
GstStructure *props = gst_device_get_properties(device);
gboolean isDefault = false;
if (gst_structure_has_field(props, "is-default")) {
gst_structure_get_boolean(props, "is-default", &isDefault);
}
gst_structure_free(props);
source->isDefault = isDefault;
source->device = device;
m_audioSources += source;
Q_EMIT audioSourceAdded();
}
bool DeviceMonitor::callback(GstMessage *message)
{
GstDevice *device;
switch (GST_MESSAGE_TYPE(message)) {
case GST_MESSAGE_DEVICE_ADDED: {
gst_message_parse_device_added(message, &device);
auto name = gst_device_get_display_name(device);
auto props = gst_device_get_properties(device);
qCDebug(voip) << name << props;
gst_structure_free(props);
if (gst_device_has_classes(device, "Video/Source")) {
handleVideoSource(device);
} else if (gst_device_has_classes(device, "Audio/Source")) {
handleAudioSource(device);
}
g_free(name);
gst_object_unref(device);
break;
}
case GST_MESSAGE_DEVICE_REMOVED: {
gst_message_parse_device_removed(message, &device);
auto name = gst_device_get_display_name(device);
auto props = gst_device_get_properties(device);
qCDebug(voip) << name << props;
if (gst_device_has_classes(device, "Video/Source")) {
m_videoSources.erase(std::remove_if(m_videoSources.begin(),
m_videoSources.end(),
[name](auto d) {
return d->title == QString(name);
}),
m_videoSources.end());
Q_EMIT videoSourceRemoved();
} else if (gst_device_has_classes(device, "Audio/Source")) {
m_audioSources.erase(std::remove_if(m_audioSources.begin(),
m_audioSources.end(),
[name](auto d) {
return d->title == QString(name);
}),
m_audioSources.end());
Q_EMIT audioSourceRemoved();
}
g_free(name);
gst_object_unref(device);
break;
}
default:
break;
}
return G_SOURCE_CONTINUE;
}

View File

@@ -1,59 +0,0 @@
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-License-Identifier: LGPL-2.0-or-later
#pragma once
#include <QtCore/QDebug>
#include <QtCore/QObject>
#include <QtCore/QVector>
#include <gst/gst.h>
struct AudioSource {
QString title;
GstDevice *device;
bool isDefault;
};
struct VideoCap {
int width;
int height;
QVector<float> framerates;
};
struct VideoSource {
QString title;
GstDevice *device;
QVector<VideoCap> caps;
};
class DeviceMonitor : public QObject
{
Q_OBJECT
public:
static DeviceMonitor &instance()
{
static DeviceMonitor _instance;
return _instance;
}
QVector<AudioSource *> audioSources() const;
QVector<VideoSource *> videoSources() const;
bool callback(GstMessage *message);
void init();
Q_SIGNALS:
void videoSourceAdded();
void audioSourceAdded();
void videoSourceRemoved();
void audioSourceRemoved();
private:
DeviceMonitor();
GstDeviceMonitor *m_monitor = nullptr;
QVector<AudioSource *> m_audioSources;
QVector<VideoSource *> m_videoSources;
void handleVideoSource(GstDevice *device);
void handleAudioSource(GstDevice *device);
};

View File

@@ -1,142 +0,0 @@
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-License-Identifier: LGPL-2.0-or-later
#include "videosources.h"
#include <gst/gst.h>
// #include "pipelinemanager.h"
#include <QDebug>
#include <QString>
#include "devicemonitor.h"
#include "neochatconfig.h"
int VideoSources::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
return DeviceMonitor::instance().videoSources().size();
}
QVariant VideoSources::data(const QModelIndex &index, int role) const
{
if (index.row() >= DeviceMonitor::instance().videoSources().size()) {
return QVariant(QStringLiteral("DEADBEEF"));
}
if (role == TitleRole) {
return DeviceMonitor::instance().videoSources()[index.row()]->title;
}
return QVariant();
}
QHash<int, QByteArray> VideoSources::roleNames() const
{
return {
{TitleRole, "title"},
};
}
VideoSources::VideoSources()
: QAbstractListModel()
{
connect(&DeviceMonitor::instance(), &DeviceMonitor::videoSourceAdded, this, [this]() {
beginResetModel();
endResetModel();
Q_EMIT currentIndexChanged();
});
connect(&DeviceMonitor::instance(), &DeviceMonitor::videoSourceRemoved, this, [this]() {
beginResetModel();
endResetModel();
Q_EMIT currentIndexChanged();
});
}
void VideoSources::foo(int index)
{
auto device = DeviceMonitor::instance().videoSources()[index]->device;
auto bin = gst_bin_new(nullptr);
GstElement *videoconvert = gst_element_factory_make("videoconvert", nullptr);
// GstElement *videorate = gst_element_factory_make("videorate", nullptr);
GstElement *filter = gst_element_factory_make("capsfilter", nullptr);
GstCaps *caps = gst_caps_new_simple("video/x-raw", "width", G_TYPE_INT, 1920, "height", G_TYPE_INT, 1080, "framerate", GST_TYPE_FRACTION, 5, 1, nullptr);
g_object_set(filter, "caps", caps, nullptr);
gst_caps_unref(caps);
GstElement *deviceElement = gst_device_create_element(device, nullptr);
gst_bin_add_many(GST_BIN(bin), deviceElement, videoconvert, filter, nullptr);
gst_element_link_many(deviceElement, videoconvert, filter, nullptr);
// GstPad *pad = gst_element_get_static_pad(filter, "src");
GstPad *pad = gst_element_get_static_pad(filter, "src");
auto ghostpad = gst_ghost_pad_new("src", pad);
gst_element_add_pad(bin, ghostpad);
gst_object_unref(pad);
// PipelineManager::instance().add(bin);
}
const VideoSource *VideoSources::currentDevice() const
{
const auto config = NeoChatConfig::self();
const QString name = config->camera();
for (const auto &videoSource : DeviceMonitor::instance().videoSources()) {
if (videoSource->title == name) {
qDebug() << "WebRTC: camera:" << name;
return videoSource;
}
}
if (DeviceMonitor::instance().videoSources().length() == 0) {
return nullptr;
}
return DeviceMonitor::instance().videoSources()[0];
}
void VideoSources::setCurrentIndex(int index)
{
if (DeviceMonitor::instance().videoSources().size() == 0) {
return;
}
NeoChatConfig::setCamera(DeviceMonitor::instance().videoSources()[index]->title);
NeoChatConfig::self()->save();
setCapsIndex(0);
}
int VideoSources::currentIndex() const
{
const auto config = NeoChatConfig::self();
const QString name = config->camera();
for (auto i = 0; i < DeviceMonitor::instance().videoSources().size(); i++) {
if (DeviceMonitor::instance().videoSources()[i]->title == name) {
return i;
}
}
return 0;
}
QStringList VideoSources::caps(int index) const
{
if (index >= DeviceMonitor::instance().videoSources().size()) {
return QStringList();
}
const auto &caps = DeviceMonitor::instance().videoSources()[index]->caps;
QStringList strings;
for (const auto &cap : caps) {
strings += QStringLiteral("%1x%2, %3 FPS").arg(cap.width).arg(cap.height).arg(cap.framerates.back());
}
return strings;
}
void VideoSources::setCapsIndex(int index)
{
NeoChatConfig::self()->setCameraCaps(index);
NeoChatConfig::self()->save();
Q_EMIT capsIndexChanged();
}
int VideoSources::capsIndex() const
{
return NeoChatConfig::self()->cameraCaps();
}

View File

@@ -1,51 +0,0 @@
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-License-Identifier: LGPL-2.0-or-later
#pragma once
#include <QtCore/QAbstractListModel>
#include <gst/gst.h>
#include "devicemonitor.h"
class VideoSources : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged)
Q_PROPERTY(int capsIndex READ capsIndex WRITE setCapsIndex NOTIFY capsIndexChanged)
public:
enum Roles {
TitleRole = Qt::UserRole + 1,
DeviceRole,
};
static VideoSources &instance()
{
static VideoSources _instance;
return _instance;
}
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
QHash<int, QByteArray> roleNames() const override;
Q_INVOKABLE void foo(int index);
const VideoSource *currentDevice() const;
void setCurrentIndex(int index);
int currentIndex() const;
void setCapsIndex(int index);
int capsIndex() const;
Q_INVOKABLE QStringList caps(int index) const;
Q_SIGNALS:
void currentIndexChanged();
void capsIndexChanged();
private:
VideoSources();
};

View File

@@ -736,12 +736,3 @@ QVariantList Controller::getSupportedRoomVersions(Quotient::Connection *connecti
return supportedRoomVersions;
}
bool Controller::callsSupported() const
{
#ifdef GSTREAMER_AVAILABLE
return true;
#else
return false;
#endif
}

View File

@@ -100,7 +100,6 @@ class Controller : public QObject
* This is the only way to gate NeoChat features in flatpaks in QML.
*/
Q_PROPERTY(bool isFlatpak READ isFlatpak CONSTANT)
Q_PROPERTY(bool callsSupported READ callsSupported CONSTANT)
public:
/**
@@ -198,7 +197,6 @@ public:
int quotientMinorVersion() const;
bool isFlatpak() const;
bool callsSupported() const;
/**
* @brief Return a string for the input timestamp.

44
src/locationhelper.cpp Normal file
View File

@@ -0,0 +1,44 @@
// SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
#include "locationhelper.h"
#include <cmath>
QRectF LocationHelper::unite(const QRectF &r1, const QRectF &r2)
{
// this looks weird but is actually intentional as we need to handle point-like "rects" as well
if ((!r1.isEmpty() || r1.isNull()) && (!r2.isEmpty() || r2.isNull())) {
return r1 | r2;
}
return (!r1.isEmpty() || r1.isNull()) ? r1 : r2;
}
QPointF LocationHelper::center(const QRectF &r)
{
return r.center();
}
constexpr inline double degToRad(double deg)
{
return deg / 180.0 * M_PI;
}
static QPointF mercatorProject(double lat, double lon, double zoom)
{
const auto x = (256.0 / (2.0 * M_PI)) * std::pow(2.0, zoom) * (degToRad(lon) + M_PI);
const auto y = (256.0 / (2.0 * M_PI)) * std::pow(2.0, zoom) * (M_PI - std::log(std::tan(M_PI / 4.0 + degToRad(lat) / 2.0)));
return QPointF(x, y);
}
float LocationHelper::zoomToFit(const QRectF &r, float mapWidth, float mapHeight)
{
const auto p1 = mercatorProject(r.bottomLeft().y(), r.bottomLeft().x(), 1.0);
const auto p2 = mercatorProject(r.topRight().y(), r.topRight().x(), 1.0);
const auto zx = std::log2((mapWidth / (p2.x() - p1.x())));
const auto zy = std::log2((mapHeight / (p2.y() - p1.y())));
const auto z = std::min(zx, zy);
return std::clamp(z, 5.0, 18.0);
}

22
src/locationhelper.h Normal file
View File

@@ -0,0 +1,22 @@
// SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
#include "linkpreviewer.h"
#include <QMetaType>
#include <QRectF>
/** Location related helper functions for QML. */
class LocationHelper
{
Q_GADGET
public:
/** Unite two rectanlges. */
Q_INVOKABLE static QRectF unite(const QRectF &r1, const QRectF &r2);
/** Returns the center of @p r. */
Q_INVOKABLE static QPointF center(const QRectF &r);
/** Returns the highest zoom level to fit @r into a map of size @p mapWidth x @p mapHeight. */
Q_INVOKABLE static float zoomToFit(const QRectF &r, float mapWidth, float mapHeight);
};
Q_DECLARE_METATYPE(LocationHelper)

View File

@@ -46,6 +46,7 @@
#include "delegatesizehelper.h"
#include "filetypesingleton.h"
#include "linkpreviewer.h"
#include "locationhelper.h"
#include "logger.h"
#include "login.h"
#include "matriximageprovider.h"
@@ -57,6 +58,8 @@
#include "models/emoticonfiltermodel.h"
#include "models/imagepacksmodel.h"
#include "models/keywordnotificationrulemodel.h"
#include "models/livelocationsmodel.h"
#include "models/locationsmodel.h"
#include "models/messageeventmodel.h"
#include "models/messagefiltermodel.h"
#include "models/publicroomlistmodel.h"
@@ -86,8 +89,6 @@
#ifdef QUOTIENT_07
#include <keyverificationsession.h>
#endif
#include <room.h>
#ifdef HAVE_COLORSCHEME
#include "colorschemer.h"
#endif
@@ -95,14 +96,6 @@
#include "models/statemodel.h"
#include "neochatuser.h"
#ifdef GSTREAMER_AVAILABLE
#include "call/audiosources.h"
#include "call/callmanager.h"
#include "call/callparticipant.h"
#include "call/videosources.h"
#include "models/callparticipantsmodel.h"
#endif
#ifdef HAVE_RUNNER
#include "runner.h"
#include <QDBusConnection>
@@ -193,22 +186,6 @@ int main(int argc, char *argv[])
#endif
QStringLiteral("https://github.com/quotient-im/libquotient"),
KAboutLicense::LGPL_V2_1);
#ifdef GSTREAMER_AVAILABLE
guint major, minor, micro, nano;
gst_version(&major, &minor, &micro, &nano);
about.addComponent(QStringLiteral("GStreamer"),
i18nc("Description of GStreamer", "Open Source Multimedia Framework"),
i18nc("<version number> (built against <possibly different version number>)",
"%1.%2.%3.%4 (built against %5.%6.%7.%8)",
major,
minor,
micro,
nano,
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
GST_VERSION_MICRO,
GST_VERSION_NANO));
#endif
KAboutData::setApplicationData(about);
QGuiApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("org.kde.neochat")));
@@ -273,6 +250,8 @@ int main(int argc, char *argv[])
qmlRegisterType<StateModel>("org.kde.neochat", 1, 0, "StateModel");
qmlRegisterType<StateFilterModel>("org.kde.neochat", 1, 0, "StateFilterModel");
qmlRegisterType<SearchModel>("org.kde.neochat", 1, 0, "SearchModel");
qmlRegisterType<LiveLocationsModel>("org.kde.neochat", 1, 0, "LiveLocationsModel");
qmlRegisterType<LocationsModel>("org.kde.neochat", 1, 0, "LocationsModel");
#ifdef QUOTIENT_07
qmlRegisterType<PollHandler>("org.kde.neochat", 1, 0, "PollHandler");
#endif
@@ -289,10 +268,6 @@ int main(int argc, char *argv[])
qmlRegisterUncreatableType<NeoChatUser>("org.kde.neochat", 1, 0, "NeoChatUser", {});
qmlRegisterUncreatableType<NeoChatRoom>("org.kde.neochat", 1, 0, "NeoChatRoom", {});
#ifdef GSTREAMER_AVAILABLE
qmlRegisterUncreatableType<CallParticipantsModel>("org.kde.neochat", 1, 0, "CallParticipantsModel", "Get through CallManager");
qmlRegisterUncreatableType<CallParticipant>("org.kde.neochat", 1, 0, "CallParticipant", "Get through model");
#endif
qRegisterMetaType<User *>("User*");
qRegisterMetaType<User *>("const User*");
qRegisterMetaType<User *>("const Quotient::User*");
@@ -309,18 +284,14 @@ int main(int argc, char *argv[])
qmlRegisterUncreatableType<KeyVerificationSession>("org.kde.neochat", 1, 0, "KeyVerificationSession", {});
qRegisterMetaType<QVector<EmojiEntry>>("QVector<EmojiEntry>");
#endif
#endif
#ifdef GSTREAMER_AVAILABLE
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "AudioSources", &AudioSources::instance());
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "VideoSources", &VideoSources::instance());
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "CallManager", &CallManager::instance());
qmlRegisterUncreatableType<CallSession>("org.kde.neochat", 1, 0, "CallSession", "ENUM");
#endif
qmlRegisterSingletonType("org.kde.neochat", 1, 0, "About", [](QQmlEngine *engine, QJSEngine *) -> QJSValue {
return engine->toScriptValue(KAboutData::applicationData());
});
qmlRegisterSingletonType(QUrl("qrc:/OsmLocationPlugin.qml"), "org.kde.neochat", 1, 0, "OsmLocationPlugin");
qmlRegisterSingletonType("org.kde.neochat", 1, 0, "LocationHelper", [](QQmlEngine *engine, QJSEngine *) -> QJSValue {
return engine->toScriptValue(LocationHelper());
});
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
qRegisterMetaTypeStreamOperators<Emoji>();

View File

@@ -1,58 +0,0 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#include "callparticipantsmodel.h"
QVariant CallParticipantsModel::data(const QModelIndex &index, int role) const
{
if (role == ObjectRole) {
return QVariant::fromValue(m_callParticipants[index.row()]);
}
return {};
}
int CallParticipantsModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
return m_callParticipants.size();
}
void CallParticipantsModel::clear()
{
beginRemoveRows(QModelIndex(), 0, m_callParticipants.size() - 1);
m_callParticipants.clear();
endRemoveRows();
}
CallParticipant *CallParticipantsModel::callParticipantForUser(NeoChatUser *user)
{
for (const auto &callParticipant : m_callParticipants) {
if (callParticipant->m_user == user) {
return callParticipant;
}
}
return nullptr;
}
QHash<int, QByteArray> CallParticipantsModel::roleNames() const
{
return {
{WidthRole, "width"},
{HeightRole, "height"},
{PadRole, "pad"},
{ObjectRole, "object"},
};
}
void CallParticipantsModel::addParticipant(CallParticipant *callParticipant)
{
beginInsertRows(QModelIndex(), m_callParticipants.size(), m_callParticipants.size());
m_callParticipants += callParticipant;
endInsertRows();
}
void CallParticipantsModel::setHasCamera(NeoChatUser *user, bool hasCamera)
{
callParticipantForUser(user)->m_hasCamera = hasCamera;
Q_EMIT callParticipantForUser(user)->hasCameraChanged();
}

View File

@@ -1,38 +0,0 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <QAbstractListModel>
#include <QVector>
#include "call/callparticipant.h"
#include "neochatuser.h"
class CallParticipantsModel : public QAbstractListModel
{
Q_OBJECT
public:
enum Roles {
WidthRole,
HeightRole,
PadRole,
ObjectRole,
};
Q_ENUM(Roles);
[[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
[[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
[[nodiscard]] QHash<int, QByteArray> roleNames() const override;
;
void addParticipant(CallParticipant *callParticipant);
CallParticipant *callParticipantForUser(NeoChatUser *user);
void setHasCamera(NeoChatUser *user, bool hasCamera);
void clear();
private:
QVector<CallParticipant *> m_callParticipants;
};

View File

@@ -0,0 +1,171 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#include "livelocationsmodel.h"
#include <Quotient/events/roommessageevent.h>
#include <QDebug>
using namespace Quotient;
bool operator<(const LiveLocationData &lhs, const LiveLocationData &rhs)
{
return lhs.eventId < rhs.eventId;
}
LiveLocationsModel::LiveLocationsModel(QObject *parent)
: QAbstractListModel(parent)
{
connect(
this,
&LiveLocationsModel::roomChanged,
this,
[this]() {
for (const auto &event : m_room->messageEvents()) {
addEvent(event.get());
}
connect(m_room, &NeoChatRoom::aboutToAddHistoricalMessages, this, [this](const auto &events) {
for (const auto &event : events) {
addEvent(event.get());
}
});
connect(m_room, &NeoChatRoom::aboutToAddNewMessages, this, [this](const auto &events) {
for (const auto &event : events) {
addEvent(event.get());
}
});
},
Qt::QueuedConnection); // deferred so we are sure the eventId filter is set
connect(this, &LiveLocationsModel::dataChanged, this, &LiveLocationsModel::boundingBoxChanged);
connect(this, &LiveLocationsModel::rowsInserted, this, &LiveLocationsModel::boundingBoxChanged);
}
int LiveLocationsModel::rowCount(const QModelIndex &parent) const
{
if (parent.isValid()) {
return 0;
}
return m_locations.size();
}
QVariant LiveLocationsModel::data(const QModelIndex &index, int roleName) const
{
if (!checkIndex(index)) {
return {};
}
const auto &data = m_locations.at(index.row());
switch (roleName) {
case LatitudeRole: {
const auto geoUri = data.beacon["org.matrix.msc3488.location"_ls].toObject()["uri"_ls].toString();
if (geoUri.isEmpty()) {
return {};
}
const auto latitude = geoUri.split(u';')[0].split(u':')[1].split(u',')[0];
return latitude.toFloat();
}
case LongitudeRole: {
const auto geoUri = data.beacon["org.matrix.msc3488.location"_ls].toObject()["uri"_ls].toString();
if (geoUri.isEmpty()) {
return {};
}
const auto longitude = geoUri.split(u';')[0].split(u':')[1].split(u',')[1];
return longitude.toFloat();
}
case AssetRole:
return data.beaconInfo["org.matrix.msc3488.asset"_ls].toObject()["type"].toString();
case AuthorRole:
return m_room->getUser(data.senderId);
case IsLiveRole: {
if (!data.beaconInfo["live"_ls].toBool()) {
return false;
}
// TODO Qt6: port to toInteger(), timestamps are in ms since epoch, ie. 64 bit values
const auto lastTs = std::max(data.beaconInfo.value("org.matrix.msc3488.ts"_ls).toDouble(), data.beacon.value("org.matrix.msc3488.ts"_ls).toDouble());
const auto timeout = data.beaconInfo.value("timeout"_ls).toDouble(600000);
return lastTs + timeout >= QDateTime::currentDateTime().toMSecsSinceEpoch();
}
}
return {};
}
QHash<int, QByteArray> LiveLocationsModel::roleNames() const
{
auto r = QAbstractListModel::roleNames();
r.insert(LatitudeRole, "latitude");
r.insert(LongitudeRole, "longitude");
r.insert(AssetRole, "asset");
r.insert(AuthorRole, "author");
r.insert(IsLiveRole, "isLive");
return r;
}
QRectF LiveLocationsModel::boundingBox() const
{
QRectF bbox(QPointF(180.0, 90.0), QPointF(-180.0, -90.0));
for (auto i = 0; i < rowCount(); ++i) {
const auto lat = data(index(i, 0), LatitudeRole).toDouble();
const auto lon = data(index(i, 0), LongitudeRole).toDouble();
bbox.setLeft(std::min(bbox.left(), lon));
bbox.setRight(std::max(bbox.right(), lon));
bbox.setTop(std::min(bbox.top(), lat));
bbox.setBottom(std::max(bbox.bottom(), lat));
}
return bbox;
}
void LiveLocationsModel::addEvent(const Quotient::RoomEvent *event)
{
if (event->isStateEvent() && event->matrixType() == "org.matrix.msc3672.beacon_info") {
LiveLocationData data;
data.senderId = event->senderId();
data.beaconInfo = event->contentJson();
if (event->contentJson()["live"_ls].toBool()) {
data.eventId = event->id();
} else {
data.eventId = event->fullJson()["replaces_state"_ls].toString();
}
updateLocationData(std::move(data));
}
if (event->matrixType() == "org.matrix.msc3672.beacon"_ls) {
LiveLocationData data;
data.eventId = event->contentJson()["m.relates_to"_ls].toObject()["event_id"_ls].toString();
data.senderId = event->senderId();
data.beacon = event->contentJson();
updateLocationData(std::move(data));
}
}
void LiveLocationsModel::updateLocationData(LiveLocationData &&data)
{
if (!m_eventId.isEmpty() && data.eventId != m_eventId) {
return;
}
auto it = std::lower_bound(m_locations.begin(), m_locations.end(), data);
if (it == m_locations.end() || it->eventId != data.eventId) {
const auto row = std::distance(m_locations.begin(), it);
beginInsertRows({}, row, row);
m_locations.insert(it, std::move(data));
endInsertRows();
return;
}
const auto idx = index(std::distance(m_locations.begin(), it), 0);
// TODO Qt6: port to toInteger(), timestamps are in ms since epoch, ie. 64 bit values
if (it->beacon.isEmpty() || it->beacon.value("org.matrix.msc3488.ts"_ls).toDouble() < data.beacon.value("org.matrix.msc3488.ts"_ls).toDouble()) {
it->beacon = std::move(data.beacon);
}
if (it->beaconInfo.isEmpty()
|| it->beaconInfo.value("org.matrix.msc3488.ts"_ls).toDouble() < data.beaconInfo.value("org.matrix.msc3488.ts"_ls).toDouble()) {
it->beaconInfo = std::move(data.beaconInfo);
}
Q_EMIT dataChanged(idx, idx);
}

View File

@@ -0,0 +1,74 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "neochatroom.h"
#include <QAbstractListModel>
#include <QPointer>
#include <QRectF>
namespace Quotient
{
class RoomMessageEvent;
}
struct LiveLocationData {
QString eventId;
QString senderId;
QJsonObject beaconInfo;
QJsonObject beacon;
};
bool operator<(const LiveLocationData &lhs, const LiveLocationData &rhs);
/** Accumulates live location beacon events in a given room
* and provides the last known state for one or more live location beacons.
*/
class LiveLocationsModel : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(NeoChatRoom *room MEMBER m_room NOTIFY roomChanged)
/** The event id of the beacon start event, ie. the one all suspequent
* events use to relate to the same beacon.
* If this is set only this specific beacon will be coverd by this model,
* if it is empty, all beacons in the room will be covered.
*/
Q_PROPERTY(QString eventId MEMBER m_eventId NOTIFY eventIdChanged)
/** Bounding box of all live location beacons covered by this model. */
Q_PROPERTY(QRectF boundingBox READ boundingBox NOTIFY boundingBoxChanged)
public:
explicit LiveLocationsModel(QObject *parent = nullptr);
enum Roles {
LatitudeRole, /**< Latest latitude of a live locaction beacon. */
LongitudeRole, /**< Latest longitude of a live locaction beacon. */
AssetRole, /**< Type of location event, e.g. self pin of the user location. */
AuthorRole, /**< The author of the event. */
IsLiveRole, /**< Boolean that indicates whether a live location beacon is still live. */
};
Q_ENUM(Roles)
int rowCount(const QModelIndex &parent = {}) const override;
QVariant data(const QModelIndex &index, int roleName) const override;
QHash<int, QByteArray> roleNames() const override;
QRectF boundingBox() const;
Q_SIGNALS:
void roomChanged();
void eventIdChanged();
void boundingBoxChanged();
private:
void addEvent(const Quotient::RoomEvent *event);
void updateLocationData(LiveLocationData &&data);
QPointer<NeoChatRoom> m_room;
QString m_eventId;
QList<LiveLocationData> m_locations;
};

View File

@@ -0,0 +1,129 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#include "locationsmodel.h"
using namespace Quotient;
LocationsModel::LocationsModel(QObject *parent)
: QAbstractListModel(parent)
{
connect(this, &LocationsModel::roomChanged, this, [=]() {
for (const auto &event : m_room->messageEvents()) {
if (!is<RoomMessageEvent>(*event)) {
continue;
}
if (event->contentJson()["msgtype"] == "m.location") {
const auto &e = *event;
addLocation(eventCast<const RoomMessageEvent>(&e));
}
}
connect(m_room, &NeoChatRoom::aboutToAddHistoricalMessages, this, [=](const auto &events) {
for (const auto &event : events) {
if (!is<RoomMessageEvent>(*event)) {
continue;
}
if (event->contentJson()["msgtype"] == "m.location") {
const auto &e = *event;
addLocation(eventCast<const RoomMessageEvent>(&e));
}
}
});
connect(m_room, &NeoChatRoom::aboutToAddNewMessages, this, [=](const auto &events) {
for (const auto &event : events) {
if (!is<RoomMessageEvent>(*event)) {
continue;
}
if (event->contentJson()["msgtype"] == "m.location") {
const auto &e = *event;
addLocation(eventCast<const RoomMessageEvent>(&e));
}
}
});
});
connect(this, &LocationsModel::rowsInserted, this, &LocationsModel::boundingBoxChanged);
}
void LocationsModel::addLocation(const RoomMessageEvent *event)
{
const auto uri = event->contentJson()["org.matrix.msc3488.location"]["uri"].toString();
const auto parts = uri.mid(4).split(QLatin1Char(','));
if (parts.size() < 2) {
qWarning() << "invalid geo: URI" << uri;
return;
}
const auto latitude = parts[0].toFloat();
const auto longitude = parts[1].toFloat();
beginInsertRows(QModelIndex(), m_locations.size(), m_locations.size() + 1);
m_locations += LocationData{
.eventId = event->id(),
.latitude = latitude,
.longitude = longitude,
.content = event->contentJson(),
.author = dynamic_cast<NeoChatUser *>(m_room->user(event->senderId())),
};
endInsertRows();
}
NeoChatRoom *LocationsModel::room() const
{
return m_room;
}
void LocationsModel::setRoom(NeoChatRoom *room)
{
if (m_room) {
disconnect(this, nullptr, m_room, nullptr);
}
m_room = room;
Q_EMIT roomChanged();
}
QHash<int, QByteArray> LocationsModel::roleNames() const
{
return {
{LongitudeRole, "longitude"},
{LatitudeRole, "latitude"},
{TextRole, "text"},
{AssetRole, "asset"},
{AuthorRole, "author"},
};
}
QVariant LocationsModel::data(const QModelIndex &index, int roleName) const
{
auto row = index.row();
if (roleName == LongitudeRole) {
return m_locations[row].longitude;
} else if (roleName == LatitudeRole) {
return m_locations[row].latitude;
} else if (roleName == TextRole) {
return m_locations[row].content["body"_ls].toString();
} else if (roleName == AssetRole) {
return m_locations[row].content["org.matrix.msc3488.asset"_ls].toObject()["type"_ls].toString();
} else if (roleName == AuthorRole) {
return m_room->getUser(m_locations[row].author);
}
return {};
}
int LocationsModel::rowCount(const QModelIndex &parent) const
{
return m_locations.size();
}
QRectF LocationsModel::boundingBox() const
{
QRectF bbox(QPointF(180.0, 90.0), QPointF(-180.0, -90.0));
for (auto i = 0; i < rowCount(); ++i) {
const auto lat = data(index(i, 0), LatitudeRole).toDouble();
const auto lon = data(index(i, 0), LongitudeRole).toDouble();
bbox.setLeft(std::min(bbox.left(), lon));
bbox.setRight(std::max(bbox.right(), lon));
bbox.setTop(std::min(bbox.top(), lat));
bbox.setBottom(std::max(bbox.bottom(), lat));
}
return bbox;
}

View File

@@ -0,0 +1,58 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <QAbstractListModel>
#include <QPointer>
#include <QRectF>
#include "neochatroom.h"
#include <events/roommessageevent.h>
class LocationsModel : public QAbstractListModel
{
Q_OBJECT
public:
enum Roles {
TextRole = Qt::DisplayRole,
LongitudeRole,
LatitudeRole,
AssetRole,
AuthorRole,
};
Q_ENUM(Roles)
Q_PROPERTY(NeoChatRoom *room READ room WRITE setRoom NOTIFY roomChanged)
/** Bounding box of all locations covered by this model. */
Q_PROPERTY(QRectF boundingBox READ boundingBox NOTIFY boundingBoxChanged)
explicit LocationsModel(QObject *parent = nullptr);
[[nodiscard]] NeoChatRoom *room() const;
void setRoom(NeoChatRoom *room);
QRectF boundingBox() const;
[[nodiscard]] QHash<int, QByteArray> roleNames() const override;
[[nodiscard]] QVariant data(const QModelIndex &index, int roleName) const override;
[[nodiscard]] int rowCount(const QModelIndex &parent = {}) const override;
Q_SIGNALS:
void roomChanged();
void boundingBoxChanged();
private:
QPointer<NeoChatRoom> m_room;
struct LocationData {
QString eventId;
float latitude;
float longitude;
QJsonObject content;
NeoChatUser *author;
};
QList<LocationData> m_locations;
void addLocation(const Quotient::RoomMessageEvent *event);
};

View File

@@ -521,13 +521,13 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
return DelegateType::Message;
}
if (evt.matrixType() == "m.call.invite") {
return DelegateType::CallInvite;
}
if (is<const StickerEvent>(evt)) {
return DelegateType::Sticker;
}
if (evt.isStateEvent()) {
if (evt.matrixType() == "org.matrix.msc3672.beacon_info"_ls) {
return DelegateType::LiveLocation;
}
return DelegateType::State;
}
if (is<const EncryptedEvent>(evt)) {
@@ -638,6 +638,11 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
return EventStatus::Hidden;
}
// hide ending live location beacons
if (evt.isStateEvent() && evt.matrixType() == "org.matrix.msc3672.beacon_info"_ls && !evt.contentJson()["live"_ls].toBool()) {
return EventStatus::Hidden;
}
return EventStatus::Normal;
}

View File

@@ -53,7 +53,7 @@ public:
ReadMarker, /**< The local user read marker. */
Poll, /**< The initial event for a poll. */
Location, /**< A location event. */
CallInvite, /**< An invitation to a call. */
LiveLocation, /**< The initial event of a shared live location (i.e., the place where this is supposed to be shown in the timeline). */
Other, /**< Anything that cannot be classified as another type. */
};
Q_ENUM(DelegateType);

View File

@@ -234,23 +234,12 @@ void RoomListModel::handleNotifications()
} else {
avatar_image = room->avatar(128);
}
if (notification["event"]["type"].toString() == QStringLiteral("m.call.invite")) {
#ifdef GSTREAMER_AVAILABLE
NotificationsManager::instance().postCallInviteNotification(
dynamic_cast<NeoChatRoom *>(room),
room->displayName(),
sender->displayname(room),
avatar_image,
notification["event"]["content"]["offer"]["sdp"].toString().contains(QStringLiteral("video")));
#endif
} else {
NotificationsManager::instance().postNotification(dynamic_cast<NeoChatRoom *>(room),
sender->displayname(room),
notification["event"].toObject()["content"].toObject()["body"].toString(),
avatar_image,
notification["event"].toObject()["event_id"].toString(),
true);
}
NotificationsManager::instance().postNotification(dynamic_cast<NeoChatRoom *>(room),
sender->displayname(room),
notification["event"].toObject()["content"].toObject()["body"].toString(),
avatar_image,
notification["event"].toObject()["event_id"].toString(),
true);
}
}
});

View File

@@ -45,6 +45,7 @@ public:
PowerLevelRole, /**< The user's power level in the current room. */
PowerLevelStringRole, /**< The name of the user's power level in the current room. */
};
Q_ENUM(EventRoles)
UserListModel(QObject *parent = nullptr);

View File

@@ -54,12 +54,12 @@ QVariant AccountRegistry::data(const QModelIndex &index, int role) const
const auto account = m_accounts[index.row()];
switch (role) {
case ConnectionRole:
return QVariant::fromValue(account);
case UserIdRole:
return QVariant::fromValue(account->userId());
default:
return {};
case ConnectionRole:
return QVariant::fromValue(account);
case UserIdRole:
return QVariant::fromValue(account->userId());
default:
return {};
}
return {};

View File

@@ -147,23 +147,5 @@
<default></default>
</entry>
</group>
<group name="Voip">
<entry name="Microphone" type="string">
<label>Name of the microphone</label>
</entry>
<entry name="Camera" type="string">
<label>Name of the camera</label>
</entry>
<entry name="CameraCaps" type="int">
<label>Index of the camera caps</label>
</entry>
<entry name="ScreenShareFrameRate" type="int">
<label>Frame rate of the screenshare</label>
</entry>
<entry name="Ringtone" type="String">
<label>Ringtone</label>
<default>/usr/share/sounds/plasma-mobile/stereo/ringtones/Spatial.oga</default>
</entry>
</group>
</kcfg>

View File

@@ -42,9 +42,6 @@
#endif
#include <qt_connection_util.h>
#ifdef GSTREAMER_AVAILABLE
#include "call/callmanager.h"
#endif
#include "controller.h"
#include "events/joinrulesevent.h"
#include "neochatconfig.h"
@@ -125,13 +122,6 @@ NeoChatRoom::NeoChatRoom(Connection *connection, QString roomId, JoinState joinS
Q_EMIT canEncryptRoomChanged();
});
connect(connection, &Connection::capabilitiesLoaded, this, &NeoChatRoom::maxRoomVersionChanged);
#ifdef GSTREAMER_AVAILABLE
connect(this, &Room::callEvent, this, [=](Room *room, const RoomEvent *event) {
CallManager::instance().handleCallEvent(static_cast<NeoChatRoom *>(room), event);
});
#endif
connect(this, &Room::changed, this, [this]() {
Q_EMIT defaultUrlPreviewStateChanged();
});
@@ -1687,6 +1677,7 @@ void NeoChatRoom::setPushNotificationState(PushNotificationState::State state)
m_currentPushNotificationState = state;
Q_EMIT pushNotificationStateChanged(m_currentPushNotificationState);
}
void NeoChatRoom::updatePushNotificationState(QString type)

View File

@@ -22,9 +22,6 @@
#include <csapi/pushrules.h>
#include <jobs/basejob.h>
#include <user.h>
#ifdef GSTREAMER_AVAILABLE
#include "call/callmanager.h"
#endif
#include "controller.h"
#include "neochatconfig.h"
@@ -609,35 +606,3 @@ QVector<QVariant> NotificationsManager::toActions(PushNotificationAction::Action
return actions;
}
#ifdef GSTREAMER_AVAILABLE
void NotificationsManager::postCallInviteNotification(NeoChatRoom *room, const QString &roomName, const QString &sender, const QImage &icon, bool video)
{
QPixmap img;
img.convertFromImage(icon);
KNotification *notification = new KNotification("message");
if (sender == roomName) {
notification->setTitle(sender);
} else {
notification->setTitle(i18n("%1 (%2)", sender, roomName));
}
notification->setText(video ? i18n("%1 is inviting you to a video call", sender) : i18n("%1 is inviting you to a voice call", sender));
notification->setPixmap(img);
notification->setDefaultAction(i18n("Open NeoChat in this room"));
connect(notification, &KNotification::defaultActivated, this, [=]() {
RoomManager::instance().enterRoom(room);
WindowController::instance().showAndRaiseWindow(notification->xdgActivationToken());
});
notification->setActions({i18n("Accept"), i18n("Decline")});
connect(notification, &KNotification::action1Activated, this, [=]() {
CallManager::instance().acceptCall();
});
connect(notification, &KNotification::action2Activated, this, [=]() {
CallManager::instance().hangupCall();
});
notification->sendEvent();
m_notifications.insert(room->id(), notification);
}
#endif

View File

@@ -156,7 +156,6 @@ public:
* @brief Display a native notification for an invite.
*/
void postInviteNotification(NeoChatRoom *room, const QString &title, const QString &sender, const QImage &icon);
void postCallInviteNotification(NeoChatRoom *room, const QString &roomName, const QString &sender, const QImage &icon, bool video);
/**
* @brief Clear an existing invite notification for the given room.

View File

@@ -1,86 +0,0 @@
// SPDX-FileCopyrightText: 2022 Carson Black <uhhadd@gmail.com>
// SPDX-License-Identifier: LGPL-2.0-or-later
import QtQuick 2.0
import QtQuick.Controls 2.7 as QQC2
import QtQuick.Layouts 1.1
import org.kde.kirigami 2.13 as Kirigami
QQC2.AbstractButton {
id: control
property int temprament: CallPageButton.Neutral
property bool shimmering: false
enum Temprament {
Neutral,
Constructive,
Destructive
}
padding: Kirigami.Units.largeSpacing
contentItem: ColumnLayout {
QQC2.Control {
padding: Kirigami.Units.gridUnit
Kirigami.Theme.colorSet: Kirigami.Theme.Button
Layout.alignment: Qt.AlignHCenter
contentItem: Kirigami.Icon {
implicitHeight: Kirigami.Units.iconSizes.medium
implicitWidth: Kirigami.Units.iconSizes.medium
source: control.icon.name
}
background: Rectangle {
Kirigami.Theme.colorSet: Kirigami.Theme.Button
ShimmerGradient {
id: shimmerGradient
color: {
switch (control.temprament) {
case CallPageButton.Neutral:
return Kirigami.Theme.textColor
case CallPageButton.Constructive:
return Kirigami.Theme.positiveTextColor
case CallPageButton.Destructive:
return Kirigami.Theme.negativeTextColor
}
}
}
color: {
if (control.checked) {
return Kirigami.Theme.focusColor
}
switch (control.temprament) {
case CallPageButton.Neutral:
return Kirigami.Theme.backgroundColor
case CallPageButton.Constructive:
return Kirigami.Theme.positiveBackgroundColor
case CallPageButton.Destructive:
return Kirigami.Theme.negativeBackgroundColor
}
}
border.color: Kirigami.Theme.focusColor
border.width: control.visualFocus ? 2 : 0
radius: height/2
Rectangle {
visible: control.shimmering
anchors.fill: parent
radius: height/2
gradient: control.shimmering ? shimmerGradient : null
}
}
}
QQC2.Label {
text: control.text
font: Kirigami.Theme.smallFont
horizontalAlignment: Qt.AlignHCenter
Layout.fillWidth: true
}
}
}

View File

@@ -1,67 +0,0 @@
// SPDX-FileCopyrightText: 2022 Tobias Fella <fella@posteo.de>
// SPDX-License-Identifier: GPL-2.0-or-later
import QtQuick 2.15
import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts 1.15
import org.kde.kirigami 2.15 as Kirigami
import org.freedesktop.gstreamer.GLVideoItem 1.0
import org.kde.neochat 1.0
Rectangle {
id: videoStreamDelegate
implicitWidth: height / 9 * 16
implicitHeight: 300
color: "black"
radius: 10
QQC2.Label {
anchors.top: parent.top
anchors.horizontalCenter: parent.horizontalCenter
color: "white"
text: model.object.user.id
}
RowLayout {
anchors.fill: parent
Loader {
active: model.object.hasCamera
Layout.maximumWidth: parent.width
Layout.maximumHeight: parent.height
Layout.preferredHeight: parent.height
Layout.preferredWidth: parent.width
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
onActiveChanged: {
if (active) {
model.object.initCamera(camera)
}
}
Component.onCompleted: if (active) model.object.initCamera(camera)
GstGLVideoItem {
id: camera
width: parent.width
height: parent.height
}
}
Loader {
active: false
Layout.maximumWidth: parent.width
Layout.maximumHeight: parent.height
Layout.preferredHeight: parent.height
Layout.preferredWidth: parent.width
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
GstGLVideoItem {
id: screenCast
width: parent.width
height: parent.height
Component.onCompleted: {
model.object.initCamera(this)
}
}
}
}
}

View File

@@ -0,0 +1,73 @@
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-License-Identifier: GPL-2.0-or-later
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtLocation 5.15
import QtPositioning 5.15
import org.kde.kirigami 2.15 as Kirigami
ApplicationWindow {
id: root
property real latitude: NaN
property real longitude: NaN
property string asset
property var author
property QtObject liveLocationModel: null
flags: Qt.FramelessWindowHint | Qt.WA_TranslucentBackground
visibility: Qt.WindowFullScreen
title: i18n("View Location")
Shortcut {
sequence: "Escape"
onActivated: root.destroy()
}
color: Kirigami.Theme.backgroundColor
background: AbstractButton {
onClicked: root.destroy()
}
Map {
id: map
anchors.fill: parent
center: root.liveLocationModel ? QtPositioning.coordinate(root.liveLocationModel.boundingBox.y, root.liveLocationModel.boundingBox.x)
: QtPositioning.coordinate(root.latitude, root.longitude)
zoomLevel: 15
plugin: OsmLocationPlugin.plugin
LocationMapItem {
latitude: root.latitude
longitude: root.longitude
asset: root.asset
author: root.author
isLive: true
visible: !isNaN(root.latitude) && !isNaN(root.longitude)
}
MapItemView {
model: root.liveLocationModel
delegate: LocationMapItem {}
}
onCopyrightLinkActivated: {
Qt.openUrlExternally(link)
}
}
Button {
anchors.top: parent.top
anchors.right: parent.right
text: i18n("Close")
icon.name: "dialog-close"
display: AbstractButton.IconOnly
width: Kirigami.Units.gridUnit * 2
height: Kirigami.Units.gridUnit * 2
onClicked: root.destroy()
}
}

View File

@@ -0,0 +1,58 @@
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import QtLocation 5.15
import QtPositioning 5.15
import org.kde.kirigami 2.15 as Kirigami
import org.kde.neochat 1.0
/** Location marker for any of the shared location maps. */
MapQuickItem {
id: root
required property real latitude
required property real longitude
required property string asset
required property var author
required property bool isLive
anchorPoint.x: sourceItem.width / 2
anchorPoint.y: sourceItem.height
coordinate: QtPositioning.coordinate(root.latitude, root.longitude)
autoFadeIn: false
sourceItem: Kirigami.Icon {
width: height
height: Kirigami.Units.iconSizes.huge
source: "gps"
isMask: true
color: root.isLive ? Kirigami.Theme.highlightColor : Kirigami.Theme.disabledTextColor
Kirigami.Icon {
anchors.centerIn: parent
anchors.verticalCenterOffset: -parent.height / 8
visible: root.asset === "m.pin"
width: height
height: parent.height / 3 + 1
source: "pin"
isMask: true
color: parent.color
}
Kirigami.Avatar {
anchors.centerIn: parent
anchors.verticalCenterOffset: -parent.height / 8
visible: root.asset === "m.self"
width: height
height: parent.height / 3 + 1
name: root.author.displayName
source: root.author.avatarSource
color: root.author.color
}
}
}

View File

@@ -0,0 +1,56 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
import QtQuick 2.15
import QtQuick.Controls 2.15 as QQC2
import QtLocation 5.15
import QtPositioning 5.15
import org.kde.kirigami 2.20 as Kirigami
import org.kde.neochat 1.0
Kirigami.Page {
id: locationsPage
required property var room
title: i18nc("Locations on a map", "Locations")
padding: 0
Map {
id: map
anchors.fill: parent
plugin: OsmLocationPlugin.plugin
center: {
let c = LocationHelper.center(LocationHelper.unite(locationsModel.boundingBox, liveLocationsModel.boundingBox));
return QtPositioning.coordinate(c.y, c.x);
}
zoomLevel: LocationHelper.zoomToFit(LocationHelper.unite(locationsModel.boundingBox, liveLocationsModel.boundingBox), map.width, map.height)
MapItemView {
model: LocationsModel {
id: locationsModel
room: locationsPage.room
}
delegate: LocationMapItem {
isLive: true
}
}
MapItemView {
model: LiveLocationsModel {
id: liveLocationsModel
room: locationsPage.room
}
delegate: LocationMapItem {}
}
Kirigami.PlaceholderMessage {
text: i18n("There are no locations shared in this room.")
visible: map.mapItems.length === 0
anchors.centerIn: parent
}
}
}

View File

@@ -1,24 +0,0 @@
// SPDX-FileCopyrightText: 2022 Carson Black <uhhadd@gmail.com>
// SPDX-License-Identifier: GPL-2.0-or-later
import QtQuick 2.15
import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts 1.15
import org.kde.kirigami 2.15 as Kirigami
import org.kde.neochat 1.0
TimelineContainer {
id: root
width: ListView.view.width
innerObject: QQC2.Control {
Layout.leftMargin: Config.showAvatarInTimeline ? Kirigami.Units.largeSpacing : 0
padding: Kirigami.Units.gridUnit*2
contentItem: QQC2.Label {
text: root.author.isLocalUser ? i18n("Outgoing Call") : i18n("Incoming Call")
}
}
}

View File

@@ -11,18 +11,15 @@ import org.kde.kirigami 2.15 as Kirigami
import org.kde.neochat 1.0
DelegateChooser {
id: root
role: "delegateType"
property var room
DelegateChoice {
roleValue: MessageEventModel.State
delegate: StateDelegate {}
}
DelegateChoice {
roleValue: MessageEventModel.CallInvite
delegate: CallInviteDelegate {}
}
DelegateChoice {
roleValue: MessageEventModel.Emote
delegate: MessageDelegate {}
@@ -82,6 +79,12 @@ DelegateChooser {
roleValue: MessageEventModel.Location
delegate: LocationDelegate {}
}
DelegateChoice {
roleValue: MessageEventModel.LiveLocation
delegate: LiveLocationDelegate {
room: root.room
}
}
DelegateChoice {
roleValue: MessageEventModel.Other

View File

@@ -0,0 +1,66 @@
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import QtLocation 5.15
import QtPositioning 5.15
import org.kde.kirigami 2.15 as Kirigami
import org.kde.neochat 1.0
/**
* @brief A timeline delegate for a location message.
*
* @inherit TimelineContainer
*/
TimelineContainer {
id: root
property alias room: liveLocationModel.room
ColumnLayout {
Layout.maximumWidth: root.contentMaxWidth
Layout.preferredWidth: root.contentMaxWidth
LiveLocationsModel {
id: liveLocationModel
eventId: root.eventId
}
Map {
id: map
Layout.fillWidth: true
Layout.preferredHeight: root.contentMaxWidth / 16 * 9
center: QtPositioning.coordinate(liveLocationModel.boundingBox.y, liveLocationModel.boundingBox.x)
zoomLevel: 15
plugin: OsmLocationPlugin.plugin
onCopyrightLinkActivated: Qt.openUrlExternally(link)
MapItemView {
model: liveLocationModel
delegate: LocationMapItem {}
}
TapHandler {
acceptedButtons: Qt.LeftButton
onTapped: {
let map = fullScreenMap.createObject(parent, {liveLocationModel: liveLocationModel});
map.open()
}
onLongPressed: openMessageContext("")
}
TapHandler {
acceptedButtons: Qt.RightButton
onTapped: openMessageContext("")
}
}
Component {
id: fullScreenMap
FullScreenMap {}
}
}
}

View File

@@ -51,47 +51,20 @@ TimelineContainer {
plugin: OsmLocationPlugin.plugin
onCopyrightLinkActivated: Qt.openUrlExternally(link)
MapQuickItem {
id: point
anchorPoint.x: sourceItem.width / 2
anchorPoint.y: sourceItem.height
coordinate: QtPositioning.coordinate(root.latitude, root.longitude)
autoFadeIn: false
sourceItem: Kirigami.Icon {
width: height
height: Kirigami.Units.iconSizes.huge
source: "gps"
isMask: true
color: Kirigami.Theme.highlightColor
Kirigami.Icon {
anchors.centerIn: parent
anchors.verticalCenterOffset: -parent.height / 8
visible: root.asset === "m.pin"
width: height
height: parent.height / 3 + 1
source: "pin"
isMask: true
color: Kirigami.Theme.highlightColor
}
Kirigami.Avatar {
anchors.centerIn: parent
anchors.verticalCenterOffset: -parent.height / 8
visible: root.asset === "m.self"
width: height
height: parent.height / 3 + 1
name: root.author.displayName
source: root.author.avatarSource
color: root.author.color
}
}
LocationMapItem {
latitude: root.latitude
longitude: root.longitude
asset: root.asset
author: root.author
isLive: true
}
TapHandler {
acceptedButtons: Qt.LeftButton
onTapped: {
let map = fullScreenMap.createObject(parent, {latitude: root.latitude, longitude: root.longitude, asset: root.asset, author: root.author});
map.open()
}
onLongPressed: openMessageContext("")
}
TapHandler {
@@ -99,5 +72,9 @@ TimelineContainer {
onTapped: openMessageContext("")
}
}
Component {
id: fullScreenMap
FullScreenMap { }
}
}
}

View File

@@ -173,6 +173,7 @@ QQC2.ScrollView {
}
delegate: EventDelegate {
room: root.currentRoom
}
QQC2.RoundButton {

View File

@@ -7,6 +7,8 @@ import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts 1.15
import org.kde.kirigami 2.15 as Kirigami
import org.kde.neochat 1.0
QQC2.Dialog {
id: confirmEncryptionDialog

View File

@@ -7,6 +7,8 @@ import QtQuick.Layouts 1.15
import org.kde.kirigami 2.20 as Kirigami
import org.kde.neochat 1.0
Kirigami.Page {
id: deleteSheet

View File

@@ -1,138 +0,0 @@
/* SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
import QtQuick 2.12
import QtQuick.Controls 2.12 as QQC2
import QtQuick.Layouts 1.12
import org.kde.kirigami 2.14 as Kirigami
import QtGraphicalEffects 1.15
import org.kde.neochat 1.0
Kirigami.Page {
id: page
title: CallManager.hasInvite ? i18n("Incoming Call")
: CallManager.isInviting ? i18n("Calling")
: CallManager.state == CallSession.Initiating ? i18n("Configuring Call")
: i18n("Call")
ColumnLayout {
id: column
anchors.fill: parent
RowLayout {
id: streams
Layout.fillWidth: true
Layout.fillHeight: true
Repeater {
id: videos
model: CallManager.callParticipants
delegate: VideoStreamDelegate {
Layout.fillHeight: true
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
}
}
}
Kirigami.Avatar {
visible: videos.count === 0
Layout.preferredWidth: Kirigami.Units.iconSizes.huge
Layout.preferredHeight: Kirigami.Units.iconSizes.huge
Layout.alignment: Qt.AlignHCenter
name: CallManager.room.displayName
source: "image://mxc/" + CallManager.room.avatarMediaId
}
//QQC2.Label {
//text: CallManager.remoteUser.displayName
//horizontalAlignment: Text.AlignHCenter
//Layout.fillWidth: true
//}
//QQC2.Label {
//text: CallManager.room.displayName
//horizontalAlignment: Text.AlignHCenter
//Layout.fillWidth: true
//}
RowLayout {
Layout.alignment: Qt.AlignHCenter
id: buttonRow
spacing: Kirigami.Units.gridUnit
CallPageButton {
text: i18n("Accept")
icon.name: "call-start"
shimmering: true
temprament: CallPageButton.Constructive
visible: CallManager.globalState === CallManager.INCOMING
onClicked: {
visible = false; //TODO declarify
CallManager.acceptCall()
}
}
CallPageButton {
text: checked ? i18n("Disable Camera") : i18n("Enable Camera")
icon.name: checked ? "camera-on" : "camera-off"
checkable: true
onToggled: CallManager.toggleCamera()
}
CallPageButton {
text: checked ? i18n("Unmute Speaker") : i18n("Mute Speaker")
icon.name: checked ? "audio-volume-muted" : "audio-speakers-symbolic"
checkable: true
}
CallPageButton {
text: checked ? i18n("Unmute Microphone") : i18n("Mute Microphone")
icon.name: checked ? "microphone-sensitivity-muted" : "microphone-sensitivity-high"
checkable: true
checked: CallManager.muted
onToggled: CallManager.muted = !CallManager.muted
}
CallPageButton {
text: i18n("Configure Devices")
icon.name: "settings-configure"
onClicked: callConfigurationSheet.open()
}
CallPageButton {
id: denyButton
visible: CallManager.globalState === CallManager.INCOMING
text: i18n("Deny")
icon.name: "call-stop"
shimmering: true
temprament: CallPageButton.Destructive
onClicked: CallManager.hangupCall()
}
CallPageButton {
visible: !denyButton.visible
text: CallManager.isInviting ? i18n("Cancel") : i18n("Hang Up")
icon.name: "call-stop"
shimmering: CallManager.isInviting
temprament: CallPageButton.Destructive
onClicked: CallManager.hangupCall()
}
}
}
Connections {
target: CallManager
function onCallEnded() {
page.closeDialog()
}
}
}

View File

@@ -9,7 +9,7 @@ import org.kde.kirigami 2.15 as Kirigami
import org.kde.neochat 1.0
QQC2.ToolBar {
RowLayout {
id: root
property var desiredWidth
@@ -45,40 +45,37 @@ QQC2.ToolBar {
}
}
padding: 0
Kirigami.SearchField {
Layout.topMargin: Kirigami.Units.smallSpacing
Layout.bottomMargin: Kirigami.Units.smallSpacing
Layout.fillWidth: true
Layout.preferredWidth: root.desiredWidth ? root.desiredWidth - menuButton.width - root.spacing : -1
visible: !root.collapsed
onTextChanged: sortFilterRoomListModel.filterText = text
KeyNavigation.tab: listView
}
RowLayout {
id: row
Kirigami.SearchField {
Layout.topMargin: Kirigami.Units.smallSpacing
Layout.bottomMargin: Kirigami.Units.smallSpacing
Layout.fillWidth: true
Layout.preferredWidth: root.desiredWidth ? root.desiredWidth - menuButton.width - row.spacing : -1
visible: !root.collapsed
onTextChanged: sortFilterRoomListModel.filterText = text
KeyNavigation.tab: listView
}
QQC2.ToolButton {
id: menuButton
display: QQC2.AbstractButton.IconOnly
checkable: true
action: Kirigami.Action {
text: i18n("Create rooms and chats")
icon.name: "irc-join-channel"
onTriggered: {
if (Kirigami.isMobile) {
let menu = mobileMenu.createObject();
menu.open();
} else {
let menu = desktopMenu.createObject(menuButton, {y: menuButton.height});
menu.closed.connect(menuButton.toggle)
menu.open();
}
QQC2.ToolButton {
id: menuButton
display: QQC2.AbstractButton.IconOnly
checkable: true
action: Kirigami.Action {
text: i18n("Create rooms and chats")
icon.name: "irc-join-channel"
onTriggered: {
if (Kirigami.isMobile) {
let menu = mobileMenu.createObject();
menu.open();
} else {
let menu = desktopMenu.createObject(menuButton, {y: menuButton.height});
menu.closed.connect(menuButton.toggle)
menu.open();
}
}
QQC2.ToolTip {
text: parent.text
}
}
QQC2.ToolTip {
text: parent.text
}
}

View File

@@ -52,16 +52,6 @@ Kirigami.Page {
}
}
actions.main: Kirigami.Action {
text: i18n("Call")
icon.name: "call-start"
visible: Controller.callsSupported && root.currentRoom.joinedCount === 2
onTriggered: {
CallManager.startCall(root.currentRoom, true)
}
}
Loader {
id: timelineViewLoader
anchors.fill: parent

View File

@@ -143,6 +143,18 @@ Kirigami.OverlayDrawer {
})
}
}
Kirigami.BasicListItem {
id: locationsButton
icon: "map-flat"
text: i18n("Show locations for this room")
onClicked: pageStack.pushDialogLayer("qrc:/LocationsPage.qml", {
room: room
}, {
title: i18nc("Locations on a map", "Locations")
})
}
Kirigami.BasicListItem {
id: favouriteButton

View File

@@ -5,6 +5,8 @@ import QtQuick 2.15
import org.kde.kirigami 2.18 as Kirigami
import QtQuick.Layouts 1.15
import org.kde.neochat 1.0
Kirigami.CategorizedSettings {
id: root
property NeoChatRoom room

View File

@@ -44,7 +44,7 @@ Kirigami.ScrollablePage {
sortRole: "powerLevel"
sortOrder: Qt.DescendingOrder
filterRowCallback: function(source_row, source_parent) {
let powerLevelRole = sourceModel.data(sourceModel.index(source_row, 0, source_parent), Qt.UserRole + 5)
let powerLevelRole = sourceModel.data(sourceModel.index(source_row, 0, source_parent), UserListModel.PowerLevelRole)
return powerLevelRole > 0;
}
}

View File

@@ -1,78 +0,0 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
import QtQuick 2.15
import QtQuick.Controls 2.15 as QQC2
import QtQuick.Layouts 1.15
import org.kde.kirigami 2.15 as Kirigami
import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm
import org.kde.neochat 1.0
Kirigami.ScrollablePage {
title: i18nc("@title:window", "Calls")
leftPadding: 0
rightPadding: 0
ColumnLayout {
MobileForm.FormCard {
Layout.topMargin: Kirigami.Units.largeSpacing
Layout.fillWidth: true
contentItem: ColumnLayout {
spacing: 0
MobileForm.FormCardHeader {
title: i18n("Incoming Calls")
}
MobileForm.FormCheckDelegate {
text: i18n("Ring")
checked: Config.ring // TODO
enabled: !Config.isRingImmutable //TODO
onToggled: {
Config.ring = checked
Config.sync()
}
}
MobileForm.FormTextFieldDelegate {
label: i18n("Ringtone")
text: Config.ringtone
enabled: true //TODO
onEditingFinished: {
// TODO
}
}
//TODO file chooser
}
}
MobileForm.FormCard {
Layout.topMargin: Kirigami.Units.largeSpacing
Layout.fillWidth: true
contentItem: ColumnLayout {
spacing: 0
MobileForm.FormCardHeader {
title: i18n("Default Devices")
}
MobileForm.FormComboBoxDelegate {
text: i18n("Microphone")
description: i18n("This microphone will be used by default during calls. You can also switch the microphone during calls.")
model: AudioSources
enabled: true //TODO
onCurrentIndexChanged: {
// TODO
}
}
MobileForm.FormComboBoxDelegate {
text: i18n("Camera")
description: i18n("This camera will be used by default during calls. You can also switch the camera during calls.")
model: VideoSources
enabled: true // TODO
onCurrentIndexChanged: {
// TODO
}
}
}
}
}
}

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