mirror of
https://github.com/KDE/krfb
synced 2026-07-03 16:31:18 -07:00
Compare commits
29 Commits
release/24
...
release/22
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6e9392710 | ||
|
|
566efcf45b | ||
|
|
5a6381537c | ||
|
|
deeaf3c035 | ||
|
|
7c241fb598 | ||
|
|
41817d4fea | ||
|
|
113f8bc7bd | ||
|
|
f21499f023 | ||
|
|
2c5c9d3d28 | ||
|
|
2a9f5b154c | ||
|
|
f06da683e1 | ||
|
|
98d64c052a | ||
|
|
b44b5dec18 | ||
|
|
484408db5c | ||
|
|
4e3259e74b | ||
|
|
4161ad54bf | ||
|
|
fdc39edee2 | ||
|
|
eef8385547 | ||
|
|
ebbd8b982c | ||
|
|
74c94ea009 | ||
|
|
7c273f0dac | ||
|
|
2c6d37daae | ||
|
|
ff7d937805 | ||
|
|
97ba8f617e | ||
|
|
5af6d5ee47 | ||
|
|
75046ea858 | ||
|
|
9a4da4e246 | ||
|
|
bdab6d631c | ||
|
|
e215ef02d4 |
@@ -2,7 +2,5 @@
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
include:
|
||||
- project: sysadmin/ci-utilities
|
||||
file:
|
||||
- /gitlab-templates/linux-qt6.yml
|
||||
- /gitlab-templates/freebsd-qt6.yml
|
||||
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml
|
||||
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml
|
||||
|
||||
31
.kde-ci.yml
31
.kde-ci.yml
@@ -4,19 +4,18 @@
|
||||
Dependencies:
|
||||
- 'on': ['@all']
|
||||
'require':
|
||||
'frameworks/extra-cmake-modules': '@latest-kf6'
|
||||
'frameworks/ki18n': '@latest-kf6'
|
||||
'frameworks/kconfig': '@latest-kf6'
|
||||
'frameworks/kcoreaddons': '@latest-kf6'
|
||||
'frameworks/kdbusaddons': '@latest-kf6'
|
||||
'frameworks/kdnssd': '@latest-kf6'
|
||||
'frameworks/kdoctools': '@latest-kf6'
|
||||
'frameworks/knotifications': '@latest-kf6'
|
||||
'frameworks/kwallet': '@latest-kf6'
|
||||
'frameworks/kwidgetsaddons': '@latest-kf6'
|
||||
'frameworks/kwindowsystem': '@latest-kf6'
|
||||
'frameworks/kxmlgui': '@latest-kf6'
|
||||
'frameworks/kstatusnotifieritem': '@latest-kf6'
|
||||
'libraries/plasma-wayland-protocols': '@latest-kf6'
|
||||
'plasma/kwayland': '@latest-kf6'
|
||||
'plasma/kpipewire': '@latest-kf6'
|
||||
'frameworks/extra-cmake-modules': '@stable'
|
||||
'frameworks/ki18n': '@stable'
|
||||
'frameworks/kconfig': '@stable'
|
||||
'frameworks/kcoreaddons': '@stable'
|
||||
'frameworks/kcrash': '@stable'
|
||||
'frameworks/kdbusaddons': '@stable'
|
||||
'frameworks/kdnssd': '@stable'
|
||||
'frameworks/kdoctools': '@stable'
|
||||
'frameworks/knotifications': '@stable'
|
||||
'frameworks/kwallet': '@stable'
|
||||
'frameworks/kwidgetsaddons': '@stable'
|
||||
'frameworks/kwindowsystem': '@stable'
|
||||
'frameworks/kxmlgui': '@stable'
|
||||
'frameworks/kwayland': '@stable'
|
||||
'libraries/plasma-wayland-protocols': '@latest' # can be switched to @stable when 1.5.0 is released
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
# KDE Application Version, managed by release script
|
||||
set (RELEASE_SERVICE_VERSION_MAJOR "24")
|
||||
set (RELEASE_SERVICE_VERSION_MINOR "02")
|
||||
set (RELEASE_SERVICE_VERSION_MICRO "2")
|
||||
set (RELEASE_SERVICE_VERSION_MAJOR "22")
|
||||
set (RELEASE_SERVICE_VERSION_MINOR "12")
|
||||
set (RELEASE_SERVICE_VERSION_MICRO "3")
|
||||
set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
|
||||
|
||||
project(krfb VERSION ${RELEASE_SERVICE_VERSION})
|
||||
|
||||
set(QT_MIN_VERSION 6.5.0)
|
||||
set(KF6_MIN_VERSION 5.247.0)
|
||||
set(QT_MIN_VERSION 5.15.2)
|
||||
set(KF5_MIN_VERSION 5.91.0)
|
||||
|
||||
find_package(ECM ${KF6_MIN_VERSION} NO_MODULE REQUIRED)
|
||||
find_package(ECM ${KF5_MIN_VERSION} NO_MODULE REQUIRED)
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" ${ECM_MODULE_PATH})
|
||||
|
||||
include(KDEInstallDirs)
|
||||
@@ -27,12 +27,13 @@ include(CheckIncludeFile)
|
||||
|
||||
check_include_file("linux/input.h" HAVE_LINUX_INPUT_H)
|
||||
|
||||
find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS Core DBus Widgets)
|
||||
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS Core DBus Widgets X11Extras)
|
||||
|
||||
find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
|
||||
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
|
||||
I18n
|
||||
Config
|
||||
CoreAddons
|
||||
Crash
|
||||
DBusAddons
|
||||
DNSSD
|
||||
DocTools
|
||||
@@ -41,7 +42,6 @@ find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
|
||||
WidgetsAddons
|
||||
WindowSystem
|
||||
XmlGui
|
||||
StatusNotifierItem
|
||||
)
|
||||
|
||||
find_package(X11 REQUIRED)
|
||||
@@ -73,18 +73,44 @@ find_package(LibVNCServer REQUIRED)
|
||||
|
||||
option(DISABLE_PIPEWIRE "Disable PipeWire support." OFF)
|
||||
if(NOT DISABLE_PIPEWIRE)
|
||||
find_package(KPipeWire REQUIRED)
|
||||
pkg_check_modules(PipeWire IMPORTED_TARGET libpipewire-0.3)
|
||||
endif()
|
||||
add_feature_info(PipeWire KPipeWire_FOUND "Required for pipewire screencast plugin")
|
||||
add_feature_info(PipeWire PipeWire_FOUND "Required for pipewire screencast plugin")
|
||||
find_package(PlasmaWaylandProtocols 1.5.0)
|
||||
|
||||
if(KPipeWire_FOUND AND PlasmaWaylandProtocols_FOUND)
|
||||
find_package(KWayland REQUIRED)
|
||||
if(PipeWire_FOUND AND PlasmaWaylandProtocols_FOUND)
|
||||
find_package(KF5Wayland ${KF5_MIN_VERSION})
|
||||
find_package(QtWaylandScanner REQUIRED)
|
||||
find_package(Qt6WaylandClient)
|
||||
find_package(Qt5WaylandClient)
|
||||
find_package(Qt5XkbCommonSupport)
|
||||
find_package(Wayland REQUIRED COMPONENTS Client)
|
||||
endif()
|
||||
|
||||
find_package(gbm)
|
||||
set_package_properties(gbm PROPERTIES
|
||||
TYPE OPTIONAL
|
||||
PURPOSE "Required for dma-buf support in pipewire screencast plugin."
|
||||
)
|
||||
|
||||
find_package(EGL)
|
||||
set_package_properties(EGL PROPERTIES
|
||||
TYPE OPTIONAL
|
||||
PURPOSE "Required for dma-buf support in pipewire screencast plugin."
|
||||
)
|
||||
|
||||
find_package(epoxy)
|
||||
set_package_properties(epoxy PROPERTIES DESCRIPTION "libepoxy"
|
||||
URL "https://github.com/anholt/libepoxy"
|
||||
TYPE OPTIONAL
|
||||
PURPOSE "Required for dma-buf support in pipewire screencast plugin."
|
||||
)
|
||||
|
||||
if(EGL_FOUND AND gbm_FOUND AND epoxy_FOUND)
|
||||
set (HAVE_DMA_BUF TRUE)
|
||||
else()
|
||||
set (HAVE_DMA_BUF FALSE)
|
||||
endif()
|
||||
|
||||
ecm_setup_version(PROJECT
|
||||
VARIABLE_PREFIX KRFB
|
||||
VERSION_HEADER "krfb_version.h")
|
||||
|
||||
4
README
4
README
@@ -12,4 +12,8 @@ x0rfbserver left. Since version 0.6 it uses libvncserver
|
||||
|
||||
Guide to documentation:
|
||||
TODO - things to be done
|
||||
INSTALL - Very short installation instructions
|
||||
NOTES - reasons for various decisions
|
||||
DCOP-INTERFACE - short documentation of the DCOP interface
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
add_subdirectory(x11)
|
||||
|
||||
# Makes sense to use only when PW framebuffer is used
|
||||
if (TARGET K::KPipeWire)
|
||||
if (${PipeWire_FOUND})
|
||||
add_subdirectory(xdp)
|
||||
endif()
|
||||
|
||||
@@ -11,7 +11,7 @@ add_library (krfb_events_x11 MODULE ${krfb_events_x11_SRCS})
|
||||
|
||||
target_link_libraries (krfb_events_x11
|
||||
${X11_XTest_LIB}
|
||||
KF6::CoreAddons
|
||||
KF5::CoreAddons
|
||||
krfbprivate
|
||||
)
|
||||
set_target_properties(krfb_events_x11 PROPERTIES OUTPUT_NAME x11)
|
||||
|
||||
@@ -22,13 +22,16 @@
|
||||
#include "x11events.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QX11Info>
|
||||
#include <QDesktopWidget>
|
||||
#include <QGlobalStatic>
|
||||
#include <QtGui/private/qtx11extras_p.h>
|
||||
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/keysym.h>
|
||||
#include <X11/extensions/XTest.h>
|
||||
|
||||
#include <QX11Info>
|
||||
|
||||
enum {
|
||||
LEFTSHIFT = 1,
|
||||
RIGHTSHIFT = 2,
|
||||
@@ -183,7 +186,15 @@ void X11EventHandler::handleKeyboard(bool down, rfbKeySym keySym)
|
||||
void X11EventHandler::handlePointer(int buttonMask, int x, int y)
|
||||
{
|
||||
if (QX11Info::isPlatformX11()) {
|
||||
XTestFakeMotionEvent(data->dpy, 0, x, y, CurrentTime);
|
||||
QDesktopWidget *desktopWidget = QApplication::desktop();
|
||||
|
||||
int screen = desktopWidget->screenNumber();
|
||||
|
||||
if (screen < 0) {
|
||||
screen = 0;
|
||||
}
|
||||
|
||||
XTestFakeMotionEvent(data->dpy, screen, x, y, CurrentTime);
|
||||
|
||||
for (int i = 0; i < 5; i++) {
|
||||
if ((data->buttonMask&(1 << i)) != (buttonMask&(1 << i))) {
|
||||
|
||||
@@ -22,8 +22,7 @@
|
||||
#include "x11events.h"
|
||||
|
||||
#include <KPluginFactory>
|
||||
|
||||
#include <QtGui/private/qtx11extras_p.h>
|
||||
#include <QX11Info>
|
||||
|
||||
K_PLUGIN_CLASS(X11EventsPlugin)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ set (krfb_events_xdp_SRCS
|
||||
xdpeventsplugin.cpp
|
||||
)
|
||||
|
||||
qt_add_dbus_interface(
|
||||
qt5_add_dbus_interface(
|
||||
krfb_events_xdp_SRCS
|
||||
${CMAKE_SOURCE_DIR}/dbus/xdp_dbus_remotedesktop_interface.xml
|
||||
xdp_dbus_remotedesktop_interface
|
||||
@@ -16,9 +16,9 @@ qt_add_dbus_interface(
|
||||
add_library (krfb_events_xdp MODULE ${krfb_events_xdp_SRCS})
|
||||
|
||||
target_link_libraries (krfb_events_xdp
|
||||
KF6::CoreAddons
|
||||
KF6::I18n
|
||||
Qt::DBus
|
||||
KF5::CoreAddons
|
||||
KF5::I18n
|
||||
Qt5::DBus
|
||||
krfbprivate
|
||||
)
|
||||
set_target_properties(krfb_events_xdp PROPERTIES OUTPUT_NAME xdp)
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <linux/input.h>
|
||||
|
||||
#include <QApplication>
|
||||
#include <QDesktopWidget>
|
||||
#include <QGlobalStatic>
|
||||
|
||||
class EventData
|
||||
@@ -60,8 +61,10 @@ void EventData::init()
|
||||
|
||||
void XdpEventHandler::handleKeyboard(bool down, rfbKeySym keySym)
|
||||
{
|
||||
const QDBusObjectPath sessionHandle = frameBuffer()->customProperty(QStringLiteral("session_handle")).value<QDBusObjectPath>();
|
||||
data->dbusXdpRemoteDesktopService->NotifyKeyboardKeysym(sessionHandle, {}, keySym, down);
|
||||
// TODO: implement button handling
|
||||
// both in FakeInput interface and here
|
||||
Q_UNUSED(down)
|
||||
Q_UNUSED(keySym)
|
||||
}
|
||||
|
||||
void XdpEventHandler::handlePointer(int buttonMask, int x, int y)
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
add_subdirectory (qt)
|
||||
|
||||
if (${XCB_DAMAGE_FOUND} AND ${XCB_SHM_FOUND} AND ${XCB_IMAGE_FOUND})
|
||||
add_subdirectory (xcb)
|
||||
endif()
|
||||
|
||||
if (TARGET K::KPipeWire)
|
||||
if (${PipeWire_FOUND})
|
||||
add_subdirectory(pipewire)
|
||||
endif()
|
||||
|
||||
@@ -22,13 +22,13 @@ ecm_qt_declare_logging_category(krfb_framebuffer_pw_SRCS
|
||||
EXPORT KRFB
|
||||
)
|
||||
|
||||
qt_add_dbus_interface(
|
||||
qt5_add_dbus_interface(
|
||||
krfb_framebuffer_pw_SRCS
|
||||
${CMAKE_SOURCE_DIR}/dbus/xdp_dbus_screencast_interface.xml
|
||||
xdp_dbus_screencast_interface
|
||||
)
|
||||
|
||||
qt_add_dbus_interface(
|
||||
qt5_add_dbus_interface(
|
||||
krfb_framebuffer_pw_SRCS
|
||||
${CMAKE_SOURCE_DIR}/dbus/xdp_dbus_remotedesktop_interface.xml
|
||||
xdp_dbus_remotedesktop_interface
|
||||
@@ -41,17 +41,23 @@ add_library(krfb_framebuffer_pw
|
||||
set_property(TARGET krfb_framebuffer_pw PROPERTY C_STANDARD 99)
|
||||
|
||||
target_link_libraries(krfb_framebuffer_pw
|
||||
Qt::Core
|
||||
Qt::Gui
|
||||
Qt::DBus
|
||||
KF6::CoreAddons
|
||||
Plasma::KWaylandClient
|
||||
Qt5::Core
|
||||
Qt5::Gui
|
||||
Qt5::DBus
|
||||
KF5::CoreAddons
|
||||
KF5::WaylandClient
|
||||
Wayland::Client
|
||||
krfbprivate
|
||||
K::KPipeWire
|
||||
K::KPipeWireDmaBuf
|
||||
PkgConfig::PipeWire
|
||||
)
|
||||
|
||||
if (HAVE_DMA_BUF)
|
||||
target_link_libraries(krfb_framebuffer_pw
|
||||
${epoxy_LIBRARIES}
|
||||
gbm::gbm
|
||||
)
|
||||
endif()
|
||||
|
||||
set_target_properties(krfb_framebuffer_pw PROPERTIES OUTPUT_NAME pw)
|
||||
install (TARGETS krfb_framebuffer_pw
|
||||
DESTINATION ${KDE_INSTALL_PLUGINDIR}/krfb/framebuffer
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"X-KDE-OnlyShowOnQtPlatforms": [
|
||||
"wayland"
|
||||
]
|
||||
}
|
||||
@@ -26,6 +26,15 @@
|
||||
#include <KWayland/Client/registry.h>
|
||||
|
||||
// pipewire
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#include <spa/param/format-utils.h>
|
||||
#include <spa/param/video/format-utils.h>
|
||||
#include <spa/param/props.h>
|
||||
#include <spa/utils/result.h>
|
||||
|
||||
#include <pipewire/pipewire.h>
|
||||
|
||||
#include <climits>
|
||||
|
||||
#include "pw_framebuffer.h"
|
||||
@@ -33,9 +42,15 @@
|
||||
#include "xdp_dbus_remotedesktop_interface.h"
|
||||
#include "krfb_fb_pipewire_debug.h"
|
||||
#include "screencasting.h"
|
||||
#include <PipeWireSourceStream>
|
||||
#include <kpipewire_version.h>
|
||||
#include <DmaBufHandler>
|
||||
|
||||
#if HAVE_DMA_BUF
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <gbm.h>
|
||||
#include <epoxy/egl.h>
|
||||
#include <epoxy/gl.h>
|
||||
#endif /* HAVE_DMA_BUF */
|
||||
|
||||
static const int BYTES_PER_PIXEL = 4;
|
||||
static const uint MIN_SUPPORTED_XDP_KDE_SC_VERSION = 1;
|
||||
@@ -63,6 +78,30 @@ const QDBusArgument &operator >> (const QDBusArgument &arg, PWFrameBuffer::Strea
|
||||
return arg;
|
||||
}
|
||||
|
||||
#if HAVE_DMA_BUF
|
||||
const char * formatGLError(GLenum err)
|
||||
{
|
||||
switch(err) {
|
||||
case GL_NO_ERROR:
|
||||
return "GL_NO_ERROR";
|
||||
case GL_INVALID_ENUM:
|
||||
return "GL_INVALID_ENUM";
|
||||
case GL_INVALID_VALUE:
|
||||
return "GL_INVALID_VALUE";
|
||||
case GL_INVALID_OPERATION:
|
||||
return "GL_INVALID_OPERATION";
|
||||
case GL_STACK_OVERFLOW:
|
||||
return "GL_STACK_OVERFLOW";
|
||||
case GL_STACK_UNDERFLOW:
|
||||
return "GL_STACK_UNDERFLOW";
|
||||
case GL_OUT_OF_MEMORY:
|
||||
return "GL_OUT_OF_MEMORY";
|
||||
default:
|
||||
return (QLatin1String("0x") + QString::number(err, 16)).toLocal8Bit().constData();
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_DMA_BUF */
|
||||
|
||||
/**
|
||||
* @brief The PWFrameBuffer::Private class - private counterpart of PWFramebuffer class. This is the entity where
|
||||
* whole logic resides, for more info search for "d-pointer pattern" information.
|
||||
@@ -75,21 +114,47 @@ public:
|
||||
private:
|
||||
friend class PWFrameBuffer;
|
||||
|
||||
static void onCoreError(void *data, uint32_t id, int seq, int res, const char *message);
|
||||
static void onStreamParamChanged(void *data, uint32_t id, const struct spa_pod *format);
|
||||
static void onStreamStateChanged(void *data, pw_stream_state old, pw_stream_state state, const char *error_message);
|
||||
static void onStreamProcess(void *data);
|
||||
|
||||
void initDbus();
|
||||
void initPw();
|
||||
|
||||
// dbus handling
|
||||
void handleSessionCreated(quint32 code, const QVariantMap &results);
|
||||
void handleDevicesSelected(quint32 code, const QVariantMap &results);
|
||||
void handleSourcesSelected(quint32 code, const QVariantMap &results);
|
||||
void handleRemoteDesktopStarted(quint32 code, const QVariantMap &results);
|
||||
void setVideoSize(const QSize &size);
|
||||
void handleSessionCreated(quint32 &code, QVariantMap &results);
|
||||
void handleDevicesSelected(quint32 &code, QVariantMap &results);
|
||||
void handleSourcesSelected(quint32 &code, QVariantMap &results);
|
||||
void handleRemoteDesktopStarted(quint32 &code, QVariantMap &results);
|
||||
|
||||
// pw handling
|
||||
void handleFrame(const PipeWireFrame &frame);
|
||||
pw_stream *createReceivingStream();
|
||||
void handleFrame(pw_buffer *pwBuffer);
|
||||
|
||||
// link to public interface
|
||||
PWFrameBuffer *q;
|
||||
|
||||
// pipewire stuff
|
||||
struct pw_context *pwContext = nullptr;
|
||||
struct pw_core *pwCore = nullptr;
|
||||
struct pw_stream *pwStream = nullptr;
|
||||
struct pw_thread_loop *pwMainLoop = nullptr;
|
||||
|
||||
// wayland-like listeners
|
||||
// ...of events that happen in pipewire server
|
||||
spa_hook coreListener = {};
|
||||
spa_hook streamListener = {};
|
||||
|
||||
// event handlers
|
||||
pw_core_events pwCoreEvents = {};
|
||||
pw_stream_events pwStreamEvents = {};
|
||||
|
||||
uint pwStreamNodeId = 0;
|
||||
|
||||
// negotiated video format
|
||||
spa_video_info_raw *videoFormat = nullptr;
|
||||
|
||||
// requests a session from XDG Desktop Portal
|
||||
// auto-generated and compiled from xdp_dbus_interface.xml file
|
||||
QScopedPointer<OrgFreedesktopPortalScreenCastInterface> dbusXdpScreenCastService;
|
||||
@@ -97,24 +162,113 @@ private:
|
||||
|
||||
// XDP screencast session handle
|
||||
QDBusObjectPath sessionPath;
|
||||
// Pipewire file descriptor
|
||||
QDBusUnixFileDescriptor pipewireFd;
|
||||
|
||||
// screen geometry holder
|
||||
QSize streamSize;
|
||||
QSize videoSize;
|
||||
|
||||
// Allowed devices
|
||||
uint devices = 0;
|
||||
|
||||
// sanity indicator
|
||||
bool isValid = true;
|
||||
std::unique_ptr<PipeWireSourceStream> stream;
|
||||
std::optional<PipeWireCursor> cursor;
|
||||
DmaBufHandler m_dmabufHandler;
|
||||
|
||||
QImage cursorTexture;
|
||||
QPoint cursorPosition;
|
||||
QPoint cursorHotspot;
|
||||
|
||||
#if HAVE_DMA_BUF
|
||||
struct EGLStruct {
|
||||
QList<QByteArray> extensions;
|
||||
EGLDisplay display = EGL_NO_DISPLAY;
|
||||
EGLContext context = EGL_NO_CONTEXT;
|
||||
};
|
||||
|
||||
bool m_eglInitialized = false;
|
||||
qint32 m_drmFd = 0; // for GBM buffer mmap
|
||||
gbm_device *m_gbmDevice = nullptr; // for passed GBM buffer retrieval
|
||||
|
||||
EGLStruct m_egl;
|
||||
#endif /* HAVE_DMA_BUF */
|
||||
};
|
||||
|
||||
PWFrameBuffer::Private::Private(PWFrameBuffer *q)
|
||||
: q(q)
|
||||
, stream(new PipeWireSourceStream(q))
|
||||
PWFrameBuffer::Private::Private(PWFrameBuffer *q) : q(q)
|
||||
{
|
||||
QObject::connect(stream.get(), &PipeWireSourceStream::frameReceived, q, [this] (const PipeWireFrame &frame) {
|
||||
handleFrame(frame);
|
||||
});
|
||||
pwCoreEvents.version = PW_VERSION_CORE_EVENTS;
|
||||
pwCoreEvents.error = &onCoreError;
|
||||
|
||||
pwStreamEvents.version = PW_VERSION_STREAM_EVENTS;
|
||||
pwStreamEvents.state_changed = &onStreamStateChanged;
|
||||
pwStreamEvents.param_changed = &onStreamParamChanged;
|
||||
pwStreamEvents.process = &onStreamProcess;
|
||||
|
||||
#if HAVE_DMA_BUF
|
||||
m_drmFd = open("/dev/dri/renderD128", O_RDWR);
|
||||
|
||||
if (m_drmFd < 0) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to open drm render node: " << strerror(errno);
|
||||
return;
|
||||
}
|
||||
|
||||
m_gbmDevice = gbm_create_device(m_drmFd);
|
||||
|
||||
if (!m_gbmDevice) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Cannot create GBM device: " << strerror(errno);
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the list of client extensions
|
||||
const char* clientExtensionsCString = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
|
||||
const QByteArray clientExtensionsString = QByteArray::fromRawData(clientExtensionsCString, qstrlen(clientExtensionsCString));
|
||||
if (clientExtensionsString.isEmpty()) {
|
||||
// If eglQueryString() returned NULL, the implementation doesn't support
|
||||
// EGL_EXT_client_extensions. Expect an EGL_BAD_DISPLAY error.
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "No client extensions defined! " << formatGLError(eglGetError());
|
||||
return;
|
||||
}
|
||||
|
||||
m_egl.extensions = clientExtensionsString.split(' ');
|
||||
|
||||
// Use eglGetPlatformDisplayEXT() to get the display pointer
|
||||
// if the implementation supports it.
|
||||
if (!m_egl.extensions.contains(QByteArrayLiteral("EGL_EXT_platform_base")) ||
|
||||
!m_egl.extensions.contains(QByteArrayLiteral("EGL_MESA_platform_gbm"))) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "One of required EGL extensions is missing";
|
||||
return;
|
||||
}
|
||||
|
||||
m_egl.display = eglGetPlatformDisplayEXT(EGL_PLATFORM_GBM_MESA, m_gbmDevice, nullptr);
|
||||
|
||||
if (m_egl.display == EGL_NO_DISPLAY) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Error during obtaining EGL display: " << formatGLError(eglGetError());
|
||||
return;
|
||||
}
|
||||
|
||||
EGLint major, minor;
|
||||
if (eglInitialize(m_egl.display, &major, &minor) == EGL_FALSE) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Error during eglInitialize: " << formatGLError(eglGetError());
|
||||
return;
|
||||
}
|
||||
|
||||
if (eglBindAPI(EGL_OPENGL_API) == EGL_FALSE) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "bind OpenGL API failed";
|
||||
return;
|
||||
}
|
||||
|
||||
m_egl.context = eglCreateContext(m_egl.display, nullptr, EGL_NO_CONTEXT, nullptr);
|
||||
|
||||
if (m_egl.context == EGL_NO_CONTEXT) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Couldn't create EGL context: " << formatGLError(eglGetError());
|
||||
return;
|
||||
}
|
||||
|
||||
qCDebug(KRFB_FB_PIPEWIRE) << "Egl initialization succeeded";
|
||||
qCDebug(KRFB_FB_PIPEWIRE) << QStringLiteral("EGL version: %1.%2").arg(major).arg(minor);
|
||||
|
||||
m_eglInitialized = true;
|
||||
#endif /* HAVE_DMA_BUF */
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -160,7 +314,7 @@ void PWFrameBuffer::Private::initDbus()
|
||||
SLOT(handleXdpSessionCreated(uint, QVariantMap)));
|
||||
}
|
||||
|
||||
void PWFrameBuffer::handleXdpSessionCreated(quint32 code, const QVariantMap &results)
|
||||
void PWFrameBuffer::handleXdpSessionCreated(quint32 code, QVariantMap results)
|
||||
{
|
||||
d->handleSessionCreated(code, results);
|
||||
}
|
||||
@@ -172,7 +326,7 @@ void PWFrameBuffer::handleXdpSessionCreated(quint32 code, const QVariantMap &res
|
||||
* @param code return code for dbus call. Zero is success, non-zero means error
|
||||
* @param results map with results of call.
|
||||
*/
|
||||
void PWFrameBuffer::Private::handleSessionCreated(quint32 code, const QVariantMap &results)
|
||||
void PWFrameBuffer::Private::handleSessionCreated(quint32 &code, QVariantMap &results)
|
||||
{
|
||||
if (code != 0) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to create session: " << code;
|
||||
@@ -203,7 +357,7 @@ void PWFrameBuffer::Private::handleSessionCreated(quint32 code, const QVariantMa
|
||||
SLOT(handleXdpDevicesSelected(uint, QVariantMap)));
|
||||
}
|
||||
|
||||
void PWFrameBuffer::handleXdpDevicesSelected(quint32 code, const QVariantMap &results)
|
||||
void PWFrameBuffer::handleXdpDevicesSelected(quint32 code, QVariantMap results)
|
||||
{
|
||||
d->handleDevicesSelected(code, results);
|
||||
}
|
||||
@@ -214,7 +368,7 @@ void PWFrameBuffer::handleXdpDevicesSelected(quint32 code, const QVariantMap &re
|
||||
* @param code return code for dbus call. Zero is success, non-zero means error
|
||||
* @param results map with results of call.
|
||||
*/
|
||||
void PWFrameBuffer::Private::handleDevicesSelected(quint32 code, const QVariantMap &results)
|
||||
void PWFrameBuffer::Private::handleDevicesSelected(quint32 &code, QVariantMap &results)
|
||||
{
|
||||
Q_UNUSED(results)
|
||||
if (code != 0) {
|
||||
@@ -244,7 +398,7 @@ void PWFrameBuffer::Private::handleDevicesSelected(quint32 code, const QVariantM
|
||||
SLOT(handleXdpSourcesSelected(uint, QVariantMap)));
|
||||
}
|
||||
|
||||
void PWFrameBuffer::handleXdpSourcesSelected(quint32 code, const QVariantMap &results)
|
||||
void PWFrameBuffer::handleXdpSourcesSelected(quint32 code, QVariantMap results)
|
||||
{
|
||||
d->handleSourcesSelected(code, results);
|
||||
}
|
||||
@@ -257,7 +411,7 @@ void PWFrameBuffer::handleXdpSourcesSelected(quint32 code, const QVariantMap &re
|
||||
* @param code return code for dbus call. Zero is success, non-zero means error
|
||||
* @param results map with results of call.
|
||||
*/
|
||||
void PWFrameBuffer::Private::handleSourcesSelected(quint32 code, const QVariantMap &)
|
||||
void PWFrameBuffer::Private::handleSourcesSelected(quint32 &code, QVariantMap &)
|
||||
{
|
||||
if (code != 0) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to select sources: " << code;
|
||||
@@ -280,7 +434,7 @@ void PWFrameBuffer::Private::handleSourcesSelected(quint32 code, const QVariantM
|
||||
}
|
||||
|
||||
|
||||
void PWFrameBuffer::handleXdpRemoteDesktopStarted(quint32 code, const QVariantMap &results)
|
||||
void PWFrameBuffer::handleXdpRemoteDesktopStarted(quint32 code, QVariantMap results)
|
||||
{
|
||||
d->handleRemoteDesktopStarted(code, results);
|
||||
}
|
||||
@@ -292,7 +446,7 @@ void PWFrameBuffer::handleXdpRemoteDesktopStarted(quint32 code, const QVariantMa
|
||||
* @param code return code for dbus call. Zero is success, non-zero means error
|
||||
* @param results map with results of call.
|
||||
*/
|
||||
void PWFrameBuffer::Private::handleRemoteDesktopStarted(quint32 code, const QVariantMap &results)
|
||||
void PWFrameBuffer::Private::handleRemoteDesktopStarted(quint32 &code, QVariantMap &results)
|
||||
{
|
||||
if (code != 0) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to start screencast: " << code;
|
||||
@@ -300,14 +454,8 @@ void PWFrameBuffer::Private::handleRemoteDesktopStarted(quint32 code, const QVar
|
||||
return;
|
||||
}
|
||||
|
||||
if (results.value(QStringLiteral("devices")).toUInt() == 0) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "No devices were granted" << results;
|
||||
isValid = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// there should be only one stream
|
||||
const Streams streams = qdbus_cast<Streams>(results.value(QStringLiteral("streams")));
|
||||
Streams streams = qdbus_cast<Streams>(results.value(QStringLiteral("streams")));
|
||||
if (streams.isEmpty()) {
|
||||
// maybe we should check deeper with qdbus_cast but this suffices for now
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to get screencast streams";
|
||||
@@ -323,94 +471,501 @@ void PWFrameBuffer::Private::handleRemoteDesktopStarted(quint32 code, const QVar
|
||||
return;
|
||||
}
|
||||
|
||||
QDBusUnixFileDescriptor pipewireFd = streamReply.value();
|
||||
pipewireFd = streamReply.value();
|
||||
if (!pipewireFd.isValid()) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Couldn't get pipewire connection file descriptor";
|
||||
isValid = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!stream->createStream(streams.first().nodeId, pipewireFd.takeFileDescriptor())) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Couldn't create the pipewire stream";
|
||||
isValid = false;
|
||||
return;
|
||||
}
|
||||
setVideoSize(qdbus_cast<QSize>(streams.first().map[QStringLiteral("size")].value<QDBusArgument>()));
|
||||
devices = results.value(QStringLiteral("types")).toUInt();
|
||||
|
||||
pwStreamNodeId = streams.first().nodeId;
|
||||
|
||||
initPw();
|
||||
}
|
||||
|
||||
void PWFrameBuffer::Private::handleFrame(const PipeWireFrame &frame)
|
||||
{
|
||||
cursor = frame.cursor;
|
||||
/**
|
||||
* @brief PWFrameBuffer::Private::initPw - initialize Pipewire socket connectivity.
|
||||
* pipewireFd should be pointing to existing file descriptor that was passed by D-Bus at this point.
|
||||
*/
|
||||
void PWFrameBuffer::Private::initPw() {
|
||||
qInfo() << "Initializing Pipewire connectivity";
|
||||
|
||||
#if KPIPEWIRE_VERSION < QT_VERSION_CHECK(6, 0, 70)
|
||||
if (!frame.dmabuf && !frame.image) {
|
||||
// init pipewire (required)
|
||||
pw_init(nullptr, nullptr); // args are not used anyways
|
||||
|
||||
pwMainLoop = pw_thread_loop_new("pipewire-main-loop", nullptr);
|
||||
pw_thread_loop_lock(pwMainLoop);
|
||||
|
||||
pwContext = pw_context_new(pw_thread_loop_get_loop(pwMainLoop), nullptr, 0);
|
||||
if (!pwContext) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to create PipeWire context";
|
||||
return;
|
||||
}
|
||||
|
||||
pwCore = pw_context_connect(pwContext, nullptr, 0);
|
||||
if (!pwCore) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to connect PipeWire context";
|
||||
return;
|
||||
}
|
||||
|
||||
pw_core_add_listener(pwCore, &coreListener, &pwCoreEvents, this);
|
||||
|
||||
pwStream = createReceivingStream();
|
||||
if (!pwStream) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to create PipeWire stream";
|
||||
return;
|
||||
}
|
||||
|
||||
if (pw_thread_loop_start(pwMainLoop) < 0) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to start main PipeWire loop";
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
pw_thread_loop_unlock(pwMainLoop);
|
||||
}
|
||||
|
||||
void PWFrameBuffer::Private::onCoreError(void *data, uint32_t id, int seq, int res, const char *message)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
Q_UNUSED(id);
|
||||
Q_UNUSED(seq);
|
||||
Q_UNUSED(res);
|
||||
|
||||
qInfo() << "core error: " << message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief PWFrameBuffer::Private::onStreamStateChanged - called whenever stream state changes on pipewire server
|
||||
* @param data pointer that you have set in pw_stream_add_listener call's last argument
|
||||
* @param state new state that stream has changed to
|
||||
* @param error_message optional error message, is set to non-null if state is error
|
||||
*/
|
||||
void PWFrameBuffer::Private::onStreamStateChanged(void *data, pw_stream_state /*old*/, pw_stream_state state, const char *error_message)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
|
||||
qInfo() << "Stream state changed: " << pw_stream_state_as_string(state);
|
||||
|
||||
switch (state) {
|
||||
case PW_STREAM_STATE_ERROR:
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "pipewire stream error: " << error_message;
|
||||
break;
|
||||
case PW_STREAM_STATE_PAUSED:
|
||||
case PW_STREAM_STATE_STREAMING:
|
||||
case PW_STREAM_STATE_UNCONNECTED:
|
||||
case PW_STREAM_STATE_CONNECTING:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#define CURSOR_BPP 4
|
||||
#define CURSOR_META_SIZE(w,h) (sizeof(struct spa_meta_cursor) + \
|
||||
sizeof(struct spa_meta_bitmap) + w * h * CURSOR_BPP)
|
||||
|
||||
/**
|
||||
* @brief PWFrameBuffer::Private::onStreamFormatChanged - being executed after stream is set to active
|
||||
* and after setup has been requested to connect to it. The actual video format is being negotiated here.
|
||||
* @param data pointer that you have set in pw_stream_add_listener call's last argument
|
||||
* @param format format that's being proposed
|
||||
*/
|
||||
void PWFrameBuffer::Private::onStreamParamChanged(void *data, uint32_t id, const struct spa_pod *format)
|
||||
{
|
||||
qInfo() << "Stream format changed";
|
||||
auto d = static_cast<PWFrameBuffer::Private *>(data);
|
||||
|
||||
if (!format || id != SPA_PARAM_Format) {
|
||||
return;
|
||||
}
|
||||
|
||||
d->videoFormat = new spa_video_info_raw();
|
||||
spa_format_video_raw_parse(format, d->videoFormat);
|
||||
auto width = d->videoFormat->size.width;
|
||||
auto height = d->videoFormat->size.height;
|
||||
auto stride = SPA_ROUND_UP_N(width * BYTES_PER_PIXEL, 4);
|
||||
auto size = height * stride;
|
||||
d->streamSize = QSize(width, height);
|
||||
|
||||
uint8_t buffer[1024];
|
||||
auto builder = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer));
|
||||
|
||||
// setup buffers and meta header for new format
|
||||
|
||||
#if HAVE_DMA_BUF
|
||||
const auto bufferTypes = d->m_eglInitialized ? (1 << SPA_DATA_DmaBuf) | (1 << SPA_DATA_MemFd) | (1 << SPA_DATA_MemPtr) :
|
||||
(1 << SPA_DATA_MemFd) | (1 << SPA_DATA_MemPtr);
|
||||
#else
|
||||
if (!frame.dmabuf && !frame.dataFrame) {
|
||||
#endif
|
||||
const auto bufferTypes = (1 << SPA_DATA_MemFd) | (1 << SPA_DATA_MemPtr);
|
||||
#endif /* HAVE_DMA_BUF */
|
||||
|
||||
QVector<const struct spa_pod *> params = {
|
||||
reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
||||
SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
|
||||
SPA_PARAM_BUFFERS_size, SPA_POD_Int(size),
|
||||
SPA_PARAM_BUFFERS_stride, SPA_POD_Int(stride),
|
||||
SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(8, 1, 32),
|
||||
SPA_PARAM_BUFFERS_blocks, SPA_POD_Int(1),
|
||||
SPA_PARAM_BUFFERS_align, SPA_POD_Int(16),
|
||||
SPA_PARAM_BUFFERS_dataType, SPA_POD_CHOICE_FLAGS_Int(bufferTypes))),
|
||||
reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
||||
SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
|
||||
SPA_PARAM_META_type, SPA_POD_Id(SPA_META_Header),
|
||||
SPA_PARAM_META_size, SPA_POD_Int(sizeof(struct spa_meta_header)))),
|
||||
reinterpret_cast<spa_pod*>(spa_pod_builder_add_object(&builder,
|
||||
SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, SPA_PARAM_META_type,
|
||||
SPA_POD_Id(SPA_META_VideoCrop), SPA_PARAM_META_size,
|
||||
SPA_POD_Int(sizeof(struct spa_meta_region)))),
|
||||
reinterpret_cast<spa_pod*>(spa_pod_builder_add_object ( &builder,
|
||||
SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
|
||||
SPA_PARAM_META_type, SPA_POD_Id (SPA_META_Cursor),
|
||||
SPA_PARAM_META_size, SPA_POD_CHOICE_RANGE_Int (CURSOR_META_SIZE (64, 64),
|
||||
CURSOR_META_SIZE (1, 1),
|
||||
CURSOR_META_SIZE (1024, 1024)))),
|
||||
reinterpret_cast<spa_pod*>(spa_pod_builder_add_object ( &builder,
|
||||
SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
|
||||
SPA_PARAM_META_type, SPA_POD_Id(SPA_META_VideoDamage),
|
||||
SPA_PARAM_META_size, SPA_POD_CHOICE_RANGE_Int(
|
||||
sizeof(struct spa_meta_region) * 16,
|
||||
sizeof(struct spa_meta_region) * 1,
|
||||
sizeof(struct spa_meta_region) * 16))),
|
||||
};
|
||||
pw_stream_update_params(d->pwStream, params.data(), params.size());
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief PWFrameBuffer::Private::onNewBuffer - called when new buffer is available in pipewire stream
|
||||
* @param data pointer that you have set in pw_stream_add_listener call's last argument
|
||||
* @param id
|
||||
*/
|
||||
void PWFrameBuffer::Private::onStreamProcess(void *data)
|
||||
{
|
||||
auto d = static_cast<PWFrameBuffer::Private *>(data);
|
||||
|
||||
pw_buffer* next_buffer;
|
||||
pw_buffer* buffer = nullptr;
|
||||
|
||||
next_buffer = pw_stream_dequeue_buffer(d->pwStream);
|
||||
while (next_buffer) {
|
||||
buffer = next_buffer;
|
||||
next_buffer = pw_stream_dequeue_buffer(d->pwStream);
|
||||
|
||||
if (next_buffer) {
|
||||
pw_stream_queue_buffer(d->pwStream, buffer);
|
||||
}
|
||||
}
|
||||
|
||||
if (!buffer) {
|
||||
return;
|
||||
}
|
||||
|
||||
d->handleFrame(buffer);
|
||||
|
||||
pw_stream_queue_buffer(d->pwStream, buffer);
|
||||
}
|
||||
|
||||
static QImage::Format spaToQImageFormat(quint32 format)
|
||||
{
|
||||
return format == SPA_VIDEO_FORMAT_BGR ? QImage::Format_BGR888
|
||||
: format == SPA_VIDEO_FORMAT_RGBx ? QImage::Format_RGBX8888
|
||||
: QImage::Format_RGB32;
|
||||
}
|
||||
|
||||
void PWFrameBuffer::Private::handleFrame(pw_buffer *pwBuffer)
|
||||
{
|
||||
auto spaBuffer = pwBuffer->buffer;
|
||||
uint8_t *src = nullptr;
|
||||
|
||||
// process cursor
|
||||
{
|
||||
struct spa_meta_cursor *cursor = static_cast<struct spa_meta_cursor*>(spa_buffer_find_meta_data (spaBuffer, SPA_META_Cursor, sizeof (*cursor)));
|
||||
if (spa_meta_cursor_is_valid (cursor)) {
|
||||
struct spa_meta_bitmap *bitmap = nullptr;
|
||||
|
||||
if (cursor->bitmap_offset)
|
||||
bitmap = SPA_MEMBER (cursor, cursor->bitmap_offset, struct spa_meta_bitmap);
|
||||
|
||||
if (bitmap && bitmap->size.width > 0 && bitmap->size.height > 0) {
|
||||
const uint8_t *bitmap_data;
|
||||
|
||||
bitmap_data = SPA_MEMBER (bitmap, bitmap->offset, uint8_t);
|
||||
cursorHotspot = { cursor->hotspot.x, cursor->hotspot.y };
|
||||
cursorTexture = QImage(bitmap_data, bitmap->size.width, bitmap->size.height, bitmap->stride, spaToQImageFormat(bitmap->format));
|
||||
}
|
||||
|
||||
cursorPosition = QPoint{ cursor->position.x, cursor->position.y };
|
||||
}
|
||||
}
|
||||
|
||||
if (spaBuffer->datas[0].chunk->size == 0) {
|
||||
qCDebug(KRFB_FB_PIPEWIRE) << "Got empty buffer. The buffer possibly carried only "
|
||||
"information about the mouse cursor.";
|
||||
return;
|
||||
}
|
||||
|
||||
#if KPIPEWIRE_VERSION < QT_VERSION_CHECK(6, 0, 70)
|
||||
if (frame.image) {
|
||||
memcpy(q->fb, frame.image->constBits(), frame.image->sizeInBytes());
|
||||
setVideoSize(frame.image->size());
|
||||
}
|
||||
#else
|
||||
if (frame.dataFrame) {
|
||||
memcpy(q->fb, frame.dataFrame->data, frame.dataFrame->size.width() * frame.dataFrame->stride);
|
||||
setVideoSize(frame.dataFrame->size);
|
||||
}
|
||||
#endif
|
||||
else if (frame.dmabuf) {
|
||||
setVideoSize({frame.dmabuf->width, frame.dmabuf->height});
|
||||
QImage src((uchar*) q->fb, videoSize.width(), videoSize.height(), QImage::Format_RGB32);
|
||||
if (!m_dmabufHandler.downloadFrame(src, frame)) {
|
||||
stream->renegotiateModifierFailed(frame.format, frame.dmabuf->modifier);
|
||||
qCDebug(KRFB_FB_PIPEWIRE) << "Failed to download frame.";
|
||||
std::function<void()> cleanup;
|
||||
const qint64 srcStride = spaBuffer->datas[0].chunk->stride;
|
||||
if (spaBuffer->datas->type == SPA_DATA_MemFd) {
|
||||
uint8_t *map = static_cast<uint8_t*>(mmap(
|
||||
nullptr, spaBuffer->datas->maxsize + spaBuffer->datas->mapoffset,
|
||||
PROT_READ, MAP_PRIVATE, spaBuffer->datas->fd, 0));
|
||||
|
||||
if (map == MAP_FAILED) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to mmap the memory: " << strerror(errno);
|
||||
return;
|
||||
}
|
||||
setVideoSize(src.size());
|
||||
} else {
|
||||
qCDebug(KRFB_FB_PIPEWIRE) << "Unknown kind of frame";
|
||||
src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t);
|
||||
|
||||
cleanup = [map, spaBuffer] {
|
||||
munmap(map, spaBuffer->datas->maxsize + spaBuffer->datas->mapoffset);
|
||||
};
|
||||
} else if (spaBuffer->datas[0].type == SPA_DATA_MemPtr) {
|
||||
src = static_cast<uint8_t*>(spaBuffer->datas[0].data);
|
||||
}
|
||||
#if HAVE_DMA_BUF
|
||||
else if (spaBuffer->datas->type == SPA_DATA_DmaBuf) {
|
||||
if (!m_eglInitialized) {
|
||||
// Shouldn't reach this
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to process DMA buffer.";
|
||||
return;
|
||||
}
|
||||
|
||||
gbm_import_fd_data importInfo = {static_cast<int>(spaBuffer->datas->fd), static_cast<uint32_t>(streamSize.width()),
|
||||
static_cast<uint32_t>(streamSize.height()), static_cast<uint32_t>(spaBuffer->datas[0].chunk->stride), GBM_BO_FORMAT_ARGB8888};
|
||||
gbm_bo *imported = gbm_bo_import(m_gbmDevice, GBM_BO_IMPORT_FD, &importInfo, GBM_BO_USE_SCANOUT);
|
||||
if (!imported) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to process buffer: Cannot import passed GBM fd - " << strerror(errno);
|
||||
return;
|
||||
}
|
||||
|
||||
// bind context to render thread
|
||||
eglMakeCurrent(m_egl.display, EGL_NO_SURFACE, EGL_NO_SURFACE, m_egl.context);
|
||||
|
||||
// create EGL image from imported BO
|
||||
EGLImageKHR image = eglCreateImageKHR(m_egl.display, nullptr, EGL_NATIVE_PIXMAP_KHR, imported, nullptr);
|
||||
|
||||
if (image == EGL_NO_IMAGE_KHR) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to record frame: Error creating EGLImageKHR - " << formatGLError(glGetError());
|
||||
gbm_bo_destroy(imported);
|
||||
return;
|
||||
}
|
||||
|
||||
// create GL 2D texture for framebuffer
|
||||
GLuint texture;
|
||||
glGenTextures(1, &texture);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
glBindTexture(GL_TEXTURE_2D, texture);
|
||||
glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image);
|
||||
|
||||
src = static_cast<uint8_t*>(malloc(srcStride * streamSize.height()));
|
||||
|
||||
GLenum glFormat = GL_BGRA;
|
||||
switch (videoFormat->format) {
|
||||
case SPA_VIDEO_FORMAT_RGBx:
|
||||
glFormat = GL_RGBA;
|
||||
break;
|
||||
case SPA_VIDEO_FORMAT_RGBA:
|
||||
glFormat = GL_RGBA;
|
||||
break;
|
||||
case SPA_VIDEO_FORMAT_BGRx:
|
||||
glFormat = GL_BGRA;
|
||||
break;
|
||||
case SPA_VIDEO_FORMAT_RGB:
|
||||
glFormat = GL_RGB;
|
||||
break;
|
||||
case SPA_VIDEO_FORMAT_BGR:
|
||||
glFormat = GL_BGR;
|
||||
break;
|
||||
default:
|
||||
glFormat = GL_BGRA;
|
||||
break;
|
||||
}
|
||||
glGetTexImage(GL_TEXTURE_2D, 0, glFormat, GL_UNSIGNED_BYTE, src);
|
||||
|
||||
if (!src) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to get image from DMA buffer.";
|
||||
gbm_bo_destroy(imported);
|
||||
return;
|
||||
}
|
||||
|
||||
cleanup = [src] {
|
||||
free(src);
|
||||
};
|
||||
|
||||
glDeleteTextures(1, &texture);
|
||||
eglDestroyImageKHR(m_egl.display, image);
|
||||
|
||||
gbm_bo_destroy(imported);
|
||||
}
|
||||
#endif /* HAVE_DMA_BUF */
|
||||
|
||||
struct spa_meta_region* videoMetadata =
|
||||
static_cast<struct spa_meta_region*>(spa_buffer_find_meta_data(
|
||||
spaBuffer, SPA_META_VideoCrop, sizeof(*videoMetadata)));
|
||||
|
||||
if (videoMetadata && (videoMetadata->region.size.width > static_cast<uint32_t>(streamSize.width()) ||
|
||||
videoMetadata->region.size.height > static_cast<uint32_t>(streamSize.height()))) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Stream metadata sizes are wrong!";
|
||||
return;
|
||||
}
|
||||
|
||||
if (auto damage = frame.damage) {
|
||||
for (const auto &rect : *damage) {
|
||||
q->tiles.append(rect);
|
||||
// Use video metadata when video size from metadata is set and smaller than
|
||||
// video stream size, so we need to adjust it.
|
||||
bool videoFullWidth = true;
|
||||
bool videoFullHeight = true;
|
||||
if (videoMetadata && videoMetadata->region.size.width != 0 &&
|
||||
videoMetadata->region.size.height != 0) {
|
||||
if (videoMetadata->region.size.width < static_cast<uint32_t>(streamSize.width())) {
|
||||
videoFullWidth = false;
|
||||
} else if (videoMetadata->region.size.height < static_cast<uint32_t>(streamSize.height())) {
|
||||
videoFullHeight = false;
|
||||
}
|
||||
}
|
||||
|
||||
QSize prevVideoSize = videoSize;
|
||||
if (!videoFullHeight || !videoFullWidth) {
|
||||
videoSize = QSize(videoMetadata->region.size.width, videoMetadata->region.size.height);
|
||||
} else {
|
||||
videoSize = streamSize;
|
||||
}
|
||||
|
||||
if (!q->fb || videoSize != prevVideoSize) {
|
||||
if (q->fb) {
|
||||
free(q->fb);
|
||||
}
|
||||
q->fb = static_cast<char*>(malloc(videoSize.width() * videoSize.height() * BYTES_PER_PIXEL));
|
||||
|
||||
if (!q->fb) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to allocate buffer";
|
||||
isValid = false;
|
||||
return;
|
||||
}
|
||||
|
||||
Q_EMIT q->frameBufferChanged();
|
||||
}
|
||||
|
||||
const qint32 dstStride = videoSize.width() * BYTES_PER_PIXEL;
|
||||
Q_ASSERT(dstStride <= srcStride);
|
||||
|
||||
if (!videoFullHeight && (videoMetadata->region.position.y + videoSize.height() <= streamSize.height())) {
|
||||
src += srcStride * videoMetadata->region.position.y;
|
||||
}
|
||||
|
||||
const int xOffset = !videoFullWidth && (videoMetadata->region.position.x + videoSize.width() <= streamSize.width())
|
||||
? videoMetadata->region.position.x * BYTES_PER_PIXEL : 0;
|
||||
|
||||
char *dst = q->fb;
|
||||
for (int i = 0; i < videoSize.height(); ++i) {
|
||||
// Adjust source content based on crop video position if needed
|
||||
src += xOffset;
|
||||
std::memcpy(dst, src, dstStride);
|
||||
|
||||
if (videoFormat->format == SPA_VIDEO_FORMAT_BGRA || videoFormat->format == SPA_VIDEO_FORMAT_BGRx) {
|
||||
for (int j = 0; j < dstStride; j += 4) {
|
||||
std::swap(dst[j], dst[j + 2]);
|
||||
}
|
||||
}
|
||||
|
||||
src += srcStride - xOffset;
|
||||
dst += dstStride;
|
||||
}
|
||||
|
||||
if (spaBuffer->datas->type == SPA_DATA_MemFd ||
|
||||
spaBuffer->datas->type == SPA_DATA_DmaBuf) {
|
||||
cleanup();
|
||||
}
|
||||
|
||||
if (videoFormat->format != SPA_VIDEO_FORMAT_RGB) {
|
||||
QImage img((uchar*) q->fb, videoSize.width(), videoSize.height(), dstStride, spaToQImageFormat(videoFormat->format));
|
||||
img.convertTo(QImage::Format_RGB888);
|
||||
}
|
||||
|
||||
if (spa_meta* vdMeta = spa_buffer_find_meta(spaBuffer, SPA_META_VideoDamage)) {
|
||||
struct spa_meta_region *r;
|
||||
spa_meta_for_each(r, vdMeta) {
|
||||
if (!spa_meta_region_is_valid(r))
|
||||
break;
|
||||
|
||||
q->tiles.append(QRect(r->region.position.x, r->region.position.y, r->region.size.width, r->region.size.height));
|
||||
}
|
||||
} else {
|
||||
q->tiles.append(QRect(0, 0, videoSize.width(), videoSize.height()));
|
||||
}
|
||||
}
|
||||
|
||||
void PWFrameBuffer::Private::setVideoSize(const QSize &size)
|
||||
/**
|
||||
* @brief PWFrameBuffer::Private::createReceivingStream - create a stream that will consume Pipewire buffers
|
||||
* and copy the framebuffer to the existing image that we track. The state of the stream and configuration
|
||||
* are later handled by the corresponding listener.
|
||||
*/
|
||||
pw_stream *PWFrameBuffer::Private::createReceivingStream()
|
||||
{
|
||||
if (q->fb && videoSize == size) {
|
||||
return;
|
||||
}
|
||||
spa_rectangle pwMinScreenBounds = SPA_RECTANGLE(1, 1);
|
||||
spa_rectangle pwMaxScreenBounds = SPA_RECTANGLE(UINT32_MAX, UINT32_MAX);
|
||||
|
||||
free(q->fb);
|
||||
q->fb = static_cast<char*>(malloc(size.width() * size.height() * BYTES_PER_PIXEL));
|
||||
if (!q->fb) {
|
||||
qCWarning(KRFB_FB_PIPEWIRE) << "Failed to allocate buffer";
|
||||
spa_fraction pwFramerateMin = SPA_FRACTION(0, 1);
|
||||
spa_fraction pwFramerateMax = SPA_FRACTION(60, 1);
|
||||
|
||||
pw_properties* reuseProps = pw_properties_new_string("pipewire.client.reuse=1");
|
||||
|
||||
auto stream = pw_stream_new(pwCore, "krfb-fb-consume-stream", reuseProps);
|
||||
|
||||
uint8_t buffer[1024] = {};
|
||||
const spa_pod *params[1];
|
||||
auto builder = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer));
|
||||
|
||||
params[0] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
||||
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||
SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video),
|
||||
SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
|
||||
SPA_FORMAT_VIDEO_format, SPA_POD_CHOICE_ENUM_Id(6,
|
||||
SPA_VIDEO_FORMAT_RGBx, SPA_VIDEO_FORMAT_RGBA,
|
||||
SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_BGRA,
|
||||
SPA_VIDEO_FORMAT_RGB, SPA_VIDEO_FORMAT_BGR),
|
||||
SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle(&pwMaxScreenBounds, &pwMinScreenBounds, &pwMaxScreenBounds),
|
||||
SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction(&pwFramerateMin),
|
||||
SPA_FORMAT_VIDEO_maxFramerate, SPA_POD_CHOICE_RANGE_Fraction(&pwFramerateMax, &pwFramerateMin, &pwFramerateMax)));
|
||||
|
||||
pw_stream_add_listener(stream, &streamListener, &pwStreamEvents, this);
|
||||
|
||||
if (pw_stream_connect(stream, PW_DIRECTION_INPUT, pwStreamNodeId, PW_STREAM_FLAG_AUTOCONNECT, params, 1) != 0) {
|
||||
isValid = false;
|
||||
return;
|
||||
}
|
||||
videoSize = size;
|
||||
|
||||
Q_EMIT q->frameBufferChanged();
|
||||
return stream;
|
||||
}
|
||||
|
||||
PWFrameBuffer::Private::~Private()
|
||||
{
|
||||
if (pwMainLoop) {
|
||||
pw_thread_loop_stop(pwMainLoop);
|
||||
}
|
||||
|
||||
if (pwStream) {
|
||||
pw_stream_destroy(pwStream);
|
||||
}
|
||||
|
||||
if (pwCore) {
|
||||
pw_core_disconnect(pwCore);
|
||||
}
|
||||
|
||||
if (pwContext) {
|
||||
pw_context_destroy(pwContext);
|
||||
}
|
||||
|
||||
if (pwMainLoop) {
|
||||
pw_thread_loop_destroy(pwMainLoop);
|
||||
}
|
||||
}
|
||||
|
||||
PWFrameBuffer::PWFrameBuffer(QObject *parent)
|
||||
: FrameBuffer (parent),
|
||||
d(new Private(this))
|
||||
{
|
||||
fb = nullptr;
|
||||
}
|
||||
|
||||
PWFrameBuffer::~PWFrameBuffer()
|
||||
@@ -443,7 +998,8 @@ void PWFrameBuffer::startVirtualMonitor(const QString& name, const QSize& resolu
|
||||
auto screencasting = new Screencasting(registry, wlname, version, this);
|
||||
auto r = screencasting->createVirtualMonitorStream(name, resolution, dpr, Screencasting::Metadata);
|
||||
connect(r, &ScreencastingStream::created, this, [this] (quint32 nodeId) {
|
||||
d->stream->createStream(nodeId, 0);
|
||||
d->pwStreamNodeId = nodeId;
|
||||
d->initPw();
|
||||
});
|
||||
});
|
||||
registry->create(connection);
|
||||
@@ -457,17 +1013,11 @@ int PWFrameBuffer::depth()
|
||||
|
||||
int PWFrameBuffer::height()
|
||||
{
|
||||
if (!d->videoSize.isValid()) {
|
||||
return 0;
|
||||
}
|
||||
return d->videoSize.height();
|
||||
}
|
||||
|
||||
int PWFrameBuffer::width()
|
||||
{
|
||||
if (!d->videoSize.isValid()) {
|
||||
return 0;
|
||||
}
|
||||
return d->videoSize.width();
|
||||
}
|
||||
|
||||
@@ -497,7 +1047,7 @@ void PWFrameBuffer::stopMonitor()
|
||||
QVariant PWFrameBuffer::customProperty(const QString &property) const
|
||||
{
|
||||
if (property == QLatin1String("stream_node_id")) {
|
||||
return QVariant::fromValue<uint>(d->stream->nodeId());
|
||||
return QVariant::fromValue<uint>(d->pwStreamNodeId);
|
||||
} if (property == QLatin1String("session_handle")) {
|
||||
return QVariant::fromValue<QDBusObjectPath>(d->sessionPath);
|
||||
}
|
||||
@@ -512,5 +1062,5 @@ bool PWFrameBuffer::isValid() const
|
||||
|
||||
QPoint PWFrameBuffer::cursorPosition()
|
||||
{
|
||||
return d->cursor->position;
|
||||
return d->cursorPosition;
|
||||
}
|
||||
|
||||
@@ -50,10 +50,10 @@ public:
|
||||
bool isValid() const;
|
||||
|
||||
private Q_SLOTS:
|
||||
void handleXdpSessionCreated(quint32 code, const QVariantMap &results);
|
||||
void handleXdpDevicesSelected(quint32 code, const QVariantMap &results);
|
||||
void handleXdpSourcesSelected(quint32 code, const QVariantMap &results);
|
||||
void handleXdpRemoteDesktopStarted(quint32 code, const QVariantMap &results);
|
||||
void handleXdpSessionCreated(quint32 code, QVariantMap results);
|
||||
void handleXdpDevicesSelected(quint32 code, QVariantMap results);
|
||||
void handleXdpSourcesSelected(quint32 code, QVariantMap results);
|
||||
void handleXdpRemoteDesktopStarted(quint32 code, QVariantMap results);
|
||||
|
||||
private:
|
||||
class Private;
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#include "pw_framebuffer.h"
|
||||
#include <KPluginFactory>
|
||||
|
||||
K_PLUGIN_CLASS_WITH_JSON(PWFrameBufferPlugin, "pipewire.json")
|
||||
K_PLUGIN_CLASS(PWFrameBufferPlugin)
|
||||
|
||||
PWFrameBufferPlugin::PWFrameBufferPlugin(QObject *parent, const QVariantList &args)
|
||||
: FrameBufferPlugin(parent, args)
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
|
||||
|
||||
#include "framebufferplugin.h"
|
||||
#include <QWidget>
|
||||
|
||||
|
||||
class FrameBuffer;
|
||||
|
||||
|
||||
@@ -6,10 +6,11 @@
|
||||
|
||||
#include "screencasting.h"
|
||||
#include "qwayland-zkde-screencast-unstable-v1.h"
|
||||
#include <KWayland/Client/output.h>
|
||||
#include <KWayland/Client/plasmawindowmanagement.h>
|
||||
#include <KWayland/Client/registry.h>
|
||||
#include <QDebug>
|
||||
#include <QRect>
|
||||
#include <QPointer>
|
||||
|
||||
using namespace KWayland::Client;
|
||||
|
||||
@@ -95,6 +96,28 @@ Screencasting::Screencasting(Registry *registry, int id, int version, QObject *p
|
||||
|
||||
Screencasting::~Screencasting() = default;
|
||||
|
||||
ScreencastingStream *Screencasting::createOutputStream(Output *output, CursorMode mode)
|
||||
{
|
||||
auto stream = new ScreencastingStream(this);
|
||||
stream->setObjectName(output->model());
|
||||
stream->d->init(d->stream_output(*output, mode));
|
||||
return stream;
|
||||
}
|
||||
|
||||
ScreencastingStream *Screencasting::createWindowStream(PlasmaWindow *window, CursorMode mode)
|
||||
{
|
||||
auto stream = createWindowStream(QString::fromUtf8(window->uuid()), mode);
|
||||
stream->setObjectName(window->appId());
|
||||
return stream;
|
||||
}
|
||||
|
||||
ScreencastingStream *Screencasting::createWindowStream(const QString &uuid, CursorMode mode)
|
||||
{
|
||||
auto stream = new ScreencastingStream(this);
|
||||
stream->d->init(d->stream_window(uuid, mode));
|
||||
return stream;
|
||||
}
|
||||
|
||||
ScreencastingStream * Screencasting::createVirtualMonitorStream(const QString& name, const QSize& resolution, qreal dpr, Screencasting::CursorMode mode)
|
||||
{
|
||||
auto stream = new ScreencastingStream(this);
|
||||
|
||||
@@ -60,6 +60,9 @@ public:
|
||||
};
|
||||
Q_ENUM(CursorMode)
|
||||
|
||||
ScreencastingStream *createOutputStream(KWayland::Client::Output *output, CursorMode mode);
|
||||
ScreencastingStream *createWindowStream(KWayland::Client::PlasmaWindow *window, CursorMode mode);
|
||||
ScreencastingStream *createWindowStream(const QString &uuid, CursorMode mode);
|
||||
ScreencastingStream *createVirtualMonitorStream(const QString &name, const QSize &resolution, qreal dpr, CursorMode mode);
|
||||
|
||||
void setup(zkde_screencast_unstable_v1 *screencasting);
|
||||
|
||||
33
framebuffers/qt/CMakeLists.txt
Normal file
33
framebuffers/qt/CMakeLists.txt
Normal file
@@ -0,0 +1,33 @@
|
||||
include_directories (${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
|
||||
set (krfb_framebuffer_qt_SRCS
|
||||
qtframebuffer.cpp
|
||||
qtframebufferplugin.cpp
|
||||
)
|
||||
|
||||
ecm_qt_declare_logging_category(krfb_framebuffer_qt_SRCS
|
||||
HEADER krfb_fb_qt_debug.h
|
||||
IDENTIFIER KRFB_FB_QT
|
||||
CATEGORY_NAME krfb.framebuffer.qt
|
||||
DESCRIPTION "KRFB Qt framebuffer plugin"
|
||||
EXPORT KRFB
|
||||
)
|
||||
|
||||
add_library(krfb_framebuffer_qt
|
||||
MODULE
|
||||
${krfb_framebuffer_qt_SRCS}
|
||||
)
|
||||
|
||||
target_link_libraries (krfb_framebuffer_qt
|
||||
Qt5::Core
|
||||
Qt5::Gui
|
||||
KF5::CoreAddons
|
||||
krfbprivate
|
||||
)
|
||||
|
||||
set_target_properties(krfb_framebuffer_qt PROPERTIES OUTPUT_NAME qt)
|
||||
install (TARGETS krfb_framebuffer_qt
|
||||
DESTINATION ${KDE_INSTALL_PLUGINDIR}/krfb/framebuffer
|
||||
)
|
||||
128
framebuffers/qt/qtframebuffer.cpp
Normal file
128
framebuffers/qt/qtframebuffer.cpp
Normal file
@@ -0,0 +1,128 @@
|
||||
/* This file is part of the KDE project
|
||||
Copyright (C) 2007 Alessandro Praduroux <pradu@pradu.it>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#include "qtframebuffer.h"
|
||||
|
||||
#include <QTimer>
|
||||
#include <QRegion>
|
||||
#include <QPixmap>
|
||||
#include <QBitmap>
|
||||
#include <QApplication>
|
||||
#include <QDesktopWidget>
|
||||
#include <QScreen>
|
||||
|
||||
|
||||
const int UPDATE_TIME = 500;
|
||||
|
||||
QtFrameBuffer::QtFrameBuffer(QObject *parent)
|
||||
: FrameBuffer(parent)
|
||||
{
|
||||
win = QApplication::desktop()->winId();
|
||||
QScreen *screen = QGuiApplication::primaryScreen();
|
||||
if (screen) {
|
||||
primaryScreen = screen;
|
||||
fbImage = screen->grabWindow(win).toImage();
|
||||
fb = new char[fbImage.sizeInBytes()];
|
||||
} else {
|
||||
fb = nullptr;
|
||||
primaryScreen = nullptr;
|
||||
}
|
||||
|
||||
t = new QTimer(this);
|
||||
connect(t, &QTimer::timeout, this, &QtFrameBuffer::updateFrameBuffer);
|
||||
}
|
||||
|
||||
|
||||
QtFrameBuffer::~QtFrameBuffer()
|
||||
{
|
||||
if (fb)
|
||||
delete [] fb;
|
||||
fb = nullptr;
|
||||
}
|
||||
|
||||
int QtFrameBuffer::depth()
|
||||
{
|
||||
return fbImage.depth();
|
||||
}
|
||||
|
||||
int QtFrameBuffer::height()
|
||||
{
|
||||
return fbImage.height();
|
||||
}
|
||||
|
||||
int QtFrameBuffer::width()
|
||||
{
|
||||
return fbImage.width();
|
||||
}
|
||||
|
||||
void QtFrameBuffer::getServerFormat(rfbPixelFormat &format)
|
||||
{
|
||||
format.bitsPerPixel = 32;
|
||||
format.depth = 32;
|
||||
format.trueColour = true;
|
||||
|
||||
format.bigEndian = false;
|
||||
format.redShift = 16;
|
||||
format.greenShift = 8;
|
||||
format.blueShift = 0;
|
||||
format.redMax = 0xff;
|
||||
format.greenMax = 0xff;
|
||||
format.blueMax = 0xff;
|
||||
}
|
||||
|
||||
void QtFrameBuffer::updateFrameBuffer()
|
||||
{
|
||||
if (!fb || !primaryScreen) return;
|
||||
QImage img = primaryScreen->grabWindow(win).toImage();
|
||||
#if 0 // This is actually slower than updating the whole desktop...
|
||||
QSize imgSize = img.size();
|
||||
|
||||
|
||||
// verify what part of the image need to be marked as changed
|
||||
// fbImage is the previous version of the image,
|
||||
// img is the current one
|
||||
|
||||
QImage map(imgSize, QImage::Format_Mono);
|
||||
map.fill(0);
|
||||
|
||||
for (int x = 0; x < imgSize.width(); x++) {
|
||||
for (int y = 0; y < imgSize.height(); y++) {
|
||||
if (img.pixel(x, y) != fbImage.pixel(x, y)) {
|
||||
map.setPixel(x, y, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QRegion r(QBitmap::fromImage(map));
|
||||
tiles = tiles + r.rects();
|
||||
|
||||
#else
|
||||
tiles.append(img.rect());
|
||||
#endif
|
||||
|
||||
memcpy(fb, img.bits(), static_cast<size_t>(img.sizeInBytes()));
|
||||
fbImage = img;
|
||||
|
||||
}
|
||||
|
||||
int QtFrameBuffer::paddedWidth()
|
||||
{
|
||||
return fbImage.width() * 4;
|
||||
}
|
||||
|
||||
void QtFrameBuffer::startMonitor()
|
||||
{
|
||||
t->start(UPDATE_TIME);
|
||||
}
|
||||
|
||||
void QtFrameBuffer::stopMonitor()
|
||||
{
|
||||
t->stop();
|
||||
}
|
||||
|
||||
47
framebuffers/qt/qtframebuffer.h
Normal file
47
framebuffers/qt/qtframebuffer.h
Normal file
@@ -0,0 +1,47 @@
|
||||
/* This file is part of the KDE project
|
||||
Copyright (C) 2007 Alessandro Praduroux <pradu@pradu.it>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef KRFB_FRAMEBUFFER_QT_QTFRAMEBUFFER_H
|
||||
#define KRFB_FRAMEBUFFER_QT_QTFRAMEBUFFER_H
|
||||
|
||||
#include <QImage>
|
||||
#include "framebuffer.h"
|
||||
|
||||
class QTimer;
|
||||
class QScreen;
|
||||
/**
|
||||
@author Alessandro Praduroux <pradu@pradu.it>
|
||||
*/
|
||||
class QtFrameBuffer : public FrameBuffer
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit QtFrameBuffer(QObject *parent = nullptr);
|
||||
|
||||
~QtFrameBuffer() override;
|
||||
|
||||
int depth() override;
|
||||
int height() override;
|
||||
int width() override;
|
||||
int paddedWidth() override;
|
||||
void getServerFormat(rfbPixelFormat &format) override;
|
||||
void startMonitor() override;
|
||||
void stopMonitor() override;
|
||||
|
||||
public Q_SLOTS:
|
||||
void updateFrameBuffer();
|
||||
|
||||
private:
|
||||
WId win;
|
||||
QImage fbImage;
|
||||
QTimer *t;
|
||||
QScreen *primaryScreen;
|
||||
};
|
||||
|
||||
#endif
|
||||
41
framebuffers/qt/qtframebufferplugin.cpp
Normal file
41
framebuffers/qt/qtframebufferplugin.cpp
Normal file
@@ -0,0 +1,41 @@
|
||||
/* This file is part of the KDE project
|
||||
Copyright (C) 2009 Collabora Ltd <info@collabora.co.uk>
|
||||
@author George Goldberg <george.goldberg@collabora.co.uk>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "qtframebufferplugin.h"
|
||||
|
||||
#include "qtframebuffer.h"
|
||||
|
||||
#include <KPluginFactory>
|
||||
|
||||
K_PLUGIN_CLASS(QtFrameBufferPlugin)
|
||||
|
||||
QtFrameBufferPlugin::QtFrameBufferPlugin(QObject *parent, const QVariantList &args)
|
||||
: FrameBufferPlugin(parent, args)
|
||||
{
|
||||
}
|
||||
|
||||
FrameBuffer *QtFrameBufferPlugin::frameBuffer(const QVariantMap &args)
|
||||
{
|
||||
Q_UNUSED(args);
|
||||
return new QtFrameBuffer;
|
||||
}
|
||||
|
||||
#include "qtframebufferplugin.moc"
|
||||
|
||||
45
framebuffers/qt/qtframebufferplugin.h
Normal file
45
framebuffers/qt/qtframebufferplugin.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/* This file is part of the KDE project
|
||||
Copyright (C) 2009 Collabora Ltd <info@collabora.co.uk>
|
||||
@author George Goldberg <george.goldberg@collabora.co.uk>
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef KRFB_FRAMEBUFFER_QT_QTFRAMEBUFFERPLUGIN_H
|
||||
#define KRFB_FRAMEBUFFER_QT_QTFRAMEBUFFERPLUGIN_H
|
||||
|
||||
#include "framebufferplugin.h"
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
class FrameBuffer;
|
||||
|
||||
class QtFrameBufferPlugin : public FrameBufferPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QtFrameBufferPlugin(QObject *parent, const QVariantList &args);
|
||||
|
||||
FrameBuffer *frameBuffer(const QVariantMap &args) override;
|
||||
|
||||
private:
|
||||
Q_DISABLE_COPY(QtFrameBufferPlugin)
|
||||
};
|
||||
|
||||
|
||||
#endif // Header guard
|
||||
|
||||
@@ -18,9 +18,8 @@ ecm_qt_declare_logging_category(krfb_framebuffer_xcb_SRCS
|
||||
add_library(krfb_framebuffer_xcb MODULE ${krfb_framebuffer_xcb_SRCS})
|
||||
|
||||
target_link_libraries (krfb_framebuffer_xcb
|
||||
Qt::Core
|
||||
Qt::Gui
|
||||
Qt::GuiPrivate
|
||||
Qt5::Core
|
||||
Qt5::Gui
|
||||
XCB::XCB
|
||||
XCB::RENDER
|
||||
XCB::SHAPE
|
||||
@@ -28,7 +27,7 @@ target_link_libraries (krfb_framebuffer_xcb
|
||||
XCB::DAMAGE
|
||||
XCB::SHM
|
||||
XCB::IMAGE
|
||||
KF6::CoreAddons
|
||||
KF5::CoreAddons
|
||||
krfbprivate
|
||||
)
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"X-KDE-OnlyShowOnQtPlatforms": [
|
||||
"xcb"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -18,12 +18,13 @@
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>
|
||||
|
||||
#include <QX11Info>
|
||||
#include <QApplication>
|
||||
#include <QDesktopWidget>
|
||||
#include <QGuiApplication>
|
||||
#include <QScreen>
|
||||
#include <QAbstractNativeEventFilter>
|
||||
#include <qpa/qplatformnativeinterface.h>
|
||||
#include <QtGui/private/qtx11extras_p.h>
|
||||
|
||||
|
||||
class KrfbXCBEventFilter: public QAbstractNativeEventFilter
|
||||
{
|
||||
@@ -31,7 +32,7 @@ public:
|
||||
KrfbXCBEventFilter(XCBFrameBuffer *owner);
|
||||
|
||||
public:
|
||||
bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override;
|
||||
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) override;
|
||||
|
||||
public:
|
||||
int xdamageBaseEvent;
|
||||
@@ -98,7 +99,7 @@ KrfbXCBEventFilter::KrfbXCBEventFilter(XCBFrameBuffer *owner):
|
||||
|
||||
|
||||
bool KrfbXCBEventFilter::nativeEventFilter(const QByteArray &eventType,
|
||||
void *message, qintptr *result) {
|
||||
void *message, long *result) {
|
||||
Q_UNUSED(result); // "result" is only used on windows
|
||||
|
||||
if (xdamageBaseEvent == 0) return false; // no xdamage extension
|
||||
@@ -158,13 +159,12 @@ XCBFrameBuffer::XCBFrameBuffer(QObject *parent):
|
||||
d->area.setRect(0, 0, 0, 0);
|
||||
d->x11EvtFilter = new KrfbXCBEventFilter(this);
|
||||
d->rootScreen = get_xcb_screen(QX11Info::connection(), QX11Info::appScreen());
|
||||
d->win = QApplication::desktop()->winId();
|
||||
|
||||
this->fb = nullptr;
|
||||
|
||||
QScreen *primaryScreen = QGuiApplication::primaryScreen();
|
||||
if (primaryScreen) {
|
||||
QPlatformNativeInterface* native = qApp->platformNativeInterface();
|
||||
d->win = reinterpret_cast<WId>(native->nativeResourceForScreen(QByteArrayLiteral("rootwindow"), primaryScreen));
|
||||
qreal scaleFactor = primaryScreen->devicePixelRatio();
|
||||
d->area = { primaryScreen->geometry().topLeft() * scaleFactor,
|
||||
primaryScreen->geometry().bottomRight() * scaleFactor };
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#include "xcb_framebuffer.h"
|
||||
#include <KPluginFactory>
|
||||
|
||||
K_PLUGIN_CLASS_WITH_JSON(XCBFrameBufferPlugin, "xcb.json")
|
||||
K_PLUGIN_CLASS(XCBFrameBufferPlugin)
|
||||
|
||||
XCBFrameBufferPlugin::XCBFrameBufferPlugin(QObject *parent, const QVariantList &args)
|
||||
: FrameBufferPlugin(parent, args)
|
||||
|
||||
@@ -23,9 +23,9 @@ generate_export_header(krfbprivate BASE_NAME krfbprivate)
|
||||
|
||||
|
||||
target_link_libraries (krfbprivate
|
||||
Qt::Core
|
||||
Qt::Widgets
|
||||
Qt::GuiPrivate
|
||||
Qt5::Core
|
||||
Qt5::Widgets
|
||||
Qt5::X11Extras
|
||||
${X11_X11_LIB}
|
||||
${LIBVNCSERVER_LIBRARIES}
|
||||
)
|
||||
@@ -80,7 +80,7 @@ ki18n_wrap_ui (krfb_UI_SRCS
|
||||
ui/mainwidget.ui
|
||||
)
|
||||
|
||||
qt_add_resources(krfb_SRCS
|
||||
qt5_add_resources(krfb_SRCS
|
||||
krfb.qrc
|
||||
)
|
||||
|
||||
@@ -95,17 +95,16 @@ target_link_libraries (krfb
|
||||
${X11_Xext_LIB}
|
||||
${X11_X11_LIB}
|
||||
${X11_Xdamage_LIB}
|
||||
Qt::Network
|
||||
KF6::CoreAddons
|
||||
KF6::DBusAddons
|
||||
KF6::DNSSD
|
||||
KF6::I18n
|
||||
KF6::Notifications
|
||||
KF6::Wallet
|
||||
KF6::WidgetsAddons
|
||||
KF6::WindowSystem
|
||||
KF6::XmlGui
|
||||
KF6::StatusNotifierItem
|
||||
Qt5::Network
|
||||
KF5::CoreAddons
|
||||
KF5::DBusAddons
|
||||
KF5::DNSSD
|
||||
KF5::I18n
|
||||
KF5::Notifications
|
||||
KF5::Wallet
|
||||
KF5::WidgetsAddons
|
||||
KF5::WindowSystem
|
||||
KF5::XmlGui
|
||||
${LIBVNCSERVER_LIBRARIES}
|
||||
)
|
||||
|
||||
@@ -136,13 +135,13 @@ add_executable(krfb-virtualmonitor main-virtualmonitor.cpp ${krfbvm_SRCS} ${krfb
|
||||
rfbserver.cpp rfbclient.cpp rfbservermanager.cpp eventsmanager.cpp framebuffermanager.cpp sockethelpers.cpp)
|
||||
target_link_libraries(krfb-virtualmonitor
|
||||
krfbprivate
|
||||
Qt::Gui
|
||||
Qt::Network
|
||||
KF6::ConfigGui
|
||||
KF6::CoreAddons
|
||||
KF6::I18n
|
||||
KF6::Notifications
|
||||
KF6::WindowSystem
|
||||
Qt5::Gui
|
||||
Qt5::Network
|
||||
KF5::ConfigGui
|
||||
KF5::CoreAddons
|
||||
KF5::I18n
|
||||
KF5::Notifications
|
||||
KF5::WindowSystem
|
||||
)
|
||||
|
||||
install (TARGETS krfb-virtualmonitor
|
||||
|
||||
@@ -9,3 +9,6 @@
|
||||
|
||||
/* Define if XShm is available */
|
||||
#cmakedefine HAVE_XSHM 1
|
||||
|
||||
/* Define if DMA-BUF support is available */
|
||||
#cmakedefine01 HAVE_DMA_BUF
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
#include "krfbconfig.h"
|
||||
#include "krfbdebug.h"
|
||||
|
||||
#include <QGuiApplication>
|
||||
#include <QGlobalStatic>
|
||||
|
||||
#include <KPluginFactory>
|
||||
@@ -41,10 +40,7 @@ Q_GLOBAL_STATIC(FrameBufferManagerStatic, frameBufferManagerStatic)
|
||||
|
||||
FrameBufferManager::FrameBufferManager()
|
||||
{
|
||||
const auto platformFilter = [] (const KPluginMetaData &pluginData) {
|
||||
return pluginData.value(QStringLiteral("X-KDE-OnlyShowOnQtPlatforms"), QStringList()).contains(QGuiApplication::platformName());
|
||||
};
|
||||
const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("krfb/framebuffer"), platformFilter, KPluginMetaData::AllowEmptyMetaData);
|
||||
const QVector<KPluginMetaData> plugins = KPluginMetaData::findPlugins(QStringLiteral("krfb/framebuffer"), {}, KPluginMetaData::AllowEmptyMetaData);
|
||||
for (const KPluginMetaData &data : plugins) {
|
||||
const KPluginFactory::Result<FrameBufferPlugin> result = KPluginFactory::instantiatePlugin<FrameBufferPlugin>(data);
|
||||
if (result.plugin) {
|
||||
@@ -80,21 +76,17 @@ QSharedPointer<FrameBuffer> FrameBufferManager::frameBuffer(WId id, const QVaria
|
||||
}
|
||||
}
|
||||
|
||||
if (auto preferredPlugin = m_plugins.value(KrfbConfig::preferredFrameBufferPlugin())) {
|
||||
if (auto frameBuffer = QSharedPointer<FrameBuffer>(preferredPlugin->frameBuffer(args))) {
|
||||
qCDebug(KRFB) << "Using FrameBuffer:" << KrfbConfig::preferredFrameBufferPlugin();
|
||||
m_frameBuffers.insert(id, frameBuffer.toWeakRef());
|
||||
return frameBuffer;
|
||||
}
|
||||
}
|
||||
|
||||
// We don't already have that frame buffer.
|
||||
for (auto it = m_plugins.cbegin(); it != m_plugins.constEnd(); it++) {
|
||||
QSharedPointer<FrameBuffer> frameBuffer(it.value()->frameBuffer(args));
|
||||
if (frameBuffer) {
|
||||
qCDebug(KRFB) << "Using FrameBuffer:" << it.key();
|
||||
m_frameBuffers.insert(id, frameBuffer.toWeakRef());
|
||||
return frameBuffer;
|
||||
if (it.key() == KrfbConfig::preferredFrameBufferPlugin()) {
|
||||
qCDebug(KRFB) << "Using FrameBuffer:" << KrfbConfig::preferredFrameBufferPlugin();
|
||||
|
||||
QSharedPointer<FrameBuffer> frameBuffer(it.value()->frameBuffer(args));
|
||||
if (frameBuffer) {
|
||||
m_frameBuffers.insert(id, frameBuffer.toWeakRef());
|
||||
|
||||
return frameBuffer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -30,9 +30,14 @@
|
||||
#include <KLocalizedString>
|
||||
#include <KUser>
|
||||
#include <KStringHandler>
|
||||
#include <KWallet>
|
||||
#include <KWallet/KWallet>
|
||||
|
||||
#include <kdnssd_version.h>
|
||||
#if KDNSSD_VERSION >= QT_VERSION_CHECK(5, 84, 0)
|
||||
#include <KDNSSD/PublicService>
|
||||
#else
|
||||
#include <DNSSD/PublicService>
|
||||
#endif
|
||||
|
||||
using KWallet::Wallet;
|
||||
|
||||
@@ -124,7 +129,7 @@ InvitationsRfbServer::InvitationsRfbServer()
|
||||
{
|
||||
m_desktopPassword = readableRandomString(4) + QLatin1Char('-') + readableRandomString(3);
|
||||
m_unattendedPassword = readableRandomString(4) + QLatin1Char('-') + readableRandomString(3);
|
||||
KConfigGroup krfbConfig(KSharedConfig::openConfig(),QStringLiteral("Security"));
|
||||
KConfigGroup krfbConfig(KSharedConfig::openConfig(),"Security");
|
||||
m_allowUnattendedAccess = krfbConfig.readEntry(
|
||||
"allowUnattendedAccess", QVariant(false)).toBool();
|
||||
}
|
||||
@@ -183,7 +188,7 @@ void InvitationsRfbServer::walletOpened(bool opened)
|
||||
} else {
|
||||
|
||||
qCDebug(KRFB) << "Could not open KWallet, Falling back to config file";
|
||||
KConfigGroup krfbConfig(KSharedConfig::openConfig(),QStringLiteral("Security"));
|
||||
KConfigGroup krfbConfig(KSharedConfig::openConfig(),"Security");
|
||||
|
||||
desktopPassword = KStringHandler::obscure(krfbConfig.readEntry(
|
||||
"desktopPassword", QString()));
|
||||
@@ -234,7 +239,7 @@ QString InvitationsRfbServer::readableRandomString(int length)
|
||||
// one place to deal with all security configuration
|
||||
void InvitationsRfbServer::saveSecuritySettings()
|
||||
{
|
||||
KConfigGroup secConfigGroup(KSharedConfig::openConfig(), QStringLiteral("Security"));
|
||||
KConfigGroup secConfigGroup(KSharedConfig::openConfig(), "Security");
|
||||
secConfigGroup.writeEntry("allowUnattendedAccess", m_allowUnattendedAccess);
|
||||
if (KrfbConfig::noWallet()) {
|
||||
// save passwords in config file only if not using kwallet integration
|
||||
|
||||
@@ -37,7 +37,7 @@ Comment[ka]=სამუშაო მაგიდის გაზიარებ
|
||||
Comment[kk]=Үстелді ортақтастыру
|
||||
Comment[km]=ការចែករំលែកផ្ទែតុ
|
||||
Comment[ko]=데스크톱 공유
|
||||
Comment[lt]=Darbalaukio bendrinimas
|
||||
Comment[lt]=Dalinimasis darbalaukiu
|
||||
Comment[lv]=Darbvirsmas koplietošana
|
||||
Comment[mk]=Делење на работната површина
|
||||
Comment[ml]=പണിയിടം പങ്കുവെക്കല്
|
||||
@@ -689,7 +689,7 @@ Name[ug]=ئىناۋەتسىز ئىم تەكلىپلىرى
|
||||
Name[uk]=Запрошення з некоректними паролями
|
||||
Name[x-test]=xxInvalid Password Invitationsxx
|
||||
Name[zh_CN]=无效密码邀请
|
||||
Name[zh_TW]=無效的密碼邀請
|
||||
Name[zh_TW]=不合法的密碼邀請
|
||||
Comment=The invited party sent an invalid password. Connection refused.
|
||||
Comment[af]=Die uitgenooi party gestuur 'n ongeldige wagwoord. Verbinding geweier.
|
||||
Comment[ar]=المدعو أرسل كلمة مرور غير صحيحة. رفض الإتصال.
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
#include <QPixmap>
|
||||
#include <qwindowdefs.h>
|
||||
#include <QtGui/private/qtx11extras_p.h>
|
||||
#include <QX11Info>
|
||||
|
||||
#include <csignal>
|
||||
#include <X11/extensions/XTest.h>
|
||||
|
||||
@@ -264,7 +264,7 @@ void MainWindow::showConfiguration()
|
||||
} else {
|
||||
InvitationsRfbServer::instance->openKWallet();
|
||||
// erase stored passwords from krfbconfig file
|
||||
KConfigGroup securityConfigGroup(KSharedConfig::openConfig(), QStringLiteral("Security"));
|
||||
KConfigGroup securityConfigGroup(KSharedConfig::openConfig(), "Security");
|
||||
securityConfigGroup.deleteEntry("desktopPassword");
|
||||
securityConfigGroup.deleteEntry("unattendedPassword");
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
<name xml:lang="de">Krfb</name>
|
||||
<name xml:lang="el">Krfb</name>
|
||||
<name xml:lang="en-GB">Krfb</name>
|
||||
<name xml:lang="eo">Krfb</name>
|
||||
<name xml:lang="es">Krfb</name>
|
||||
<name xml:lang="et">Krfb</name>
|
||||
<name xml:lang="eu">Krfb</name>
|
||||
@@ -50,13 +49,11 @@
|
||||
<summary xml:lang="de">Verbindung Ihrer Arbeitsfläche zu anderen Rechnern über VNC</summary>
|
||||
<summary xml:lang="el">Μοιραστείτε την επιφάνεια εργασίας σας με άλλον υπολογιστή μέσω VNC</summary>
|
||||
<summary xml:lang="en-GB">Share your desktop to another computer via VNC</summary>
|
||||
<summary xml:lang="eo">Kundividu vian labortablon al alia komputilo per VNC</summary>
|
||||
<summary xml:lang="es">Compartir su escritorio con otro equipo usando VNC</summary>
|
||||
<summary xml:lang="et">Oma töölaua jagamine VNC kaudu teise arvutisse</summary>
|
||||
<summary xml:lang="eu">Partekatu zure mahaigaina beste ordenagailu batekin VNC erabiliz</summary>
|
||||
<summary xml:lang="fi">Jaa työpöytä toiselle koneelle VNC:n kautta</summary>
|
||||
<summary xml:lang="fr">Partager votre bureau avec un autre ordinateur grâce à « VNC »</summary>
|
||||
<summary xml:lang="gl">Comparte o teu escritorio con outro computador por VNC</summary>
|
||||
<summary xml:lang="ia">Compartir tu scriptorio a un altere computator via VNC</summary>
|
||||
<summary xml:lang="id">Bagikan desktopmu ke komputer lainnya via VNC</summary>
|
||||
<summary xml:lang="it">Condividi il desktop con un altro computer tramite VNC</summary>
|
||||
@@ -76,7 +73,6 @@
|
||||
<summary xml:lang="uk">Надайте вашу стільницю у спільне користування з іншим комп'ютером за допомогою VNC</summary>
|
||||
<summary xml:lang="x-test">xxShare your desktop to another computer via VNCxx</summary>
|
||||
<summary xml:lang="zh-CN">通过 VNC 分享您的桌面到另一台电脑</summary>
|
||||
<summary xml:lang="zh-TW">透過 VNC 將您的桌面分享給另一台電腦</summary>
|
||||
<description>
|
||||
<p>Krfb Desktop Sharing is a server application that allows you to share your current session with a user on another machine, who can use a VNC client to view or even control the desktop.</p>
|
||||
<p xml:lang="ca">El Krfb és una aplicació de servidor que permet compartir la vostra sessió actual amb un usuari en una altra màquina, la qual pot emprar un client VNC per a veure o controlar l'escriptori.</p>
|
||||
@@ -85,7 +81,6 @@
|
||||
<p xml:lang="de">Krfb ist eine Serveranwendung, welche die gemeinsame Benutzung der aktuellen Sitzung mit einem Benutzer auf einem anderen Rechner ermöglicht, der mit Hilfe eines VNC-Programms den Bildschirminhalt sehen oder sogar die Arbeitsfläche bedienen kann.</p>
|
||||
<p xml:lang="el">Η κοινή χρήση επιφάνειας εργασίας Krfb είναι μια εφαρμογή εξυπηρετητή που σας επιτρέπει να μοιράζεστε την τρέχουσα συνεδρία σας με έναν χρήστη σε άλλο μηχάνημα, ο οποίος μπορεί να χρησιμοποιεί έναν πελάτη VNC για να παρακολουθεί ή και να ελέγχει την επιφάνεια εργασίας σας.</p>
|
||||
<p xml:lang="en-GB">Krfb Desktop Sharing is a server application that allows you to share your current session with a user on another machine, who can use a VNC client to view or even control the desktop.</p>
|
||||
<p xml:lang="eo">Krfb Desktop Sharing estas servila aplikaĵo, kiu ebligas al vi kunhavigi vian aktualan seancon kun uzanto sur alia maŝino, kiu povas uzi VNC-klienton por rigardi aŭ eĉ kontroli la labortablon.</p>
|
||||
<p xml:lang="es">Krfb para compartir el escritorio es una aplicación de servidor que le permite compartir su sesión actual con un usuario de otra máquina, que puede usar un cliente VNC para ver e incluso controlar su escritorio.</p>
|
||||
<p xml:lang="et">Krfb töölaua jagamine on serverirakendus, mis võimaldab jagada aktiivset seanssi mõne teise masina taga istuva kasutajaga, kes saab VNC kliendi kaudu töölauda näha või isegi juhtida.</p>
|
||||
<p xml:lang="eu">Krfb Mahaigaina Partekatzea zerbitzari aplikazio bat da zure uneko saioa beste makina batean dagoen erabiltzaile batekin partekatzen uzten dizuna. Beste makinan VNC bezeroa erabil dezake zure mahaigaina ikusi edo baita kontrolatzeko ere.</p>
|
||||
@@ -96,7 +91,7 @@
|
||||
<p xml:lang="id">Krfb Desktop Sharing adalah aplikasi server yang memungkinkan kamu untuk berbagi sesimu saat ini dengan pengguna di mesin lain, yang bisa menggunakan klien VNC untuk menampilkan atau bahkan mengendalikan desktop.</p>
|
||||
<p xml:lang="it">Condivisione del desktop Krfb è un'applicazione server che permette di condividere la sessione attuale con un utente su un'altra macchina, che potrà usare un client VNC per visualizzare ed anche controllare il desktop.</p>
|
||||
<p xml:lang="ka">Krfb სამუშაო მაგიდის გაზიარება აპლიკაციის სერვერია, რომელიც თქვენი მიმდინარე სესიის სხვა მომხმარებლისთვის, რომელსაც VNC კლიენტი აქვს, გაზიარების და კონტროლის გადაცემის საშუალებას გაძლევთ.</p>
|
||||
<p xml:lang="ko">Krfb 데스크톱 공유는 현재 세션을 다른 머신의 사용자와 VNC를 통해서 공유하거나 원격 제어를 요청할 수 있는 서버 앱입니다.</p>
|
||||
<p xml:lang="ko">Krfb 데스크톱 공유는 현재 세션을 다른 머신의 사용자와 VNC를 통해서 공유하거나 원격 제어를 요청할 수 있는 서버 프로그램입니다.</p>
|
||||
<p xml:lang="nl">Bureaublad delen is een server-applicatie die u in staat stelt uw huidige sessie te delen met een gebruiker op een andere machine, die een VNC-client kan gebruiken om uw bureaublad te bekijken of zelfs te besturen.</p>
|
||||
<p xml:lang="nn">Krfb skrivebordsdeling er eit tenarprogram som lèt deg dela skrivebordsøkta di med ein brukar på ei anna maskin. Vedkommande kan så bruka ein VNC-klient for å sjå og eventuelt òg styra økta.</p>
|
||||
<p xml:lang="pl">Współdzielenie pulpitu Krfb jest aplikacją serwerową, która umożliwia współdzielenie twojej bieżącej sesji z użytkownikiem na innym komputerze, który może użyć klienta VNC do oglądania,a a nawet sterowania twoim pulpitem.</p>
|
||||
@@ -131,7 +126,6 @@
|
||||
<caption xml:lang="de">Freigabe der Arbeitsfläche mit Krfb</caption>
|
||||
<caption xml:lang="el">Κοινή χρήση επιφάνειας εργασίας με το Krfb</caption>
|
||||
<caption xml:lang="en-GB">Sharing desktop with Krfb</caption>
|
||||
<caption xml:lang="eo">Kundividante labortablon per Krfb</caption>
|
||||
<caption xml:lang="es">Compartiendo el escritorio con Krfb</caption>
|
||||
<caption xml:lang="et">Töölaua jagamine Krfb abil</caption>
|
||||
<caption xml:lang="eu">Mahaigaina Krfb-ren bidez partekatzea</caption>
|
||||
@@ -166,9 +160,9 @@
|
||||
</provides>
|
||||
<project_group>KDE</project_group>
|
||||
<releases>
|
||||
<release version="24.02.2" date="2024-04-11"/>
|
||||
<release version="24.02.1" date="2024-03-21"/>
|
||||
<release version="24.02.0" date="2024-02-28"/>
|
||||
<release version="23.08.5" date="2024-02-15"/>
|
||||
<release version="22.12.3" date="2023-03-02"/>
|
||||
<release version="22.12.2" date="2023-02-02"/>
|
||||
<release version="22.12.1" date="2023-01-05"/>
|
||||
<release version="22.12.0" date="2022-12-08"/>
|
||||
</releases>
|
||||
</component>
|
||||
|
||||
@@ -7,7 +7,7 @@ X-DBUS-StartupType=Unique
|
||||
X-DocPath=krfb/index.html
|
||||
Terminal=false
|
||||
Name=Krfb
|
||||
Name[ar]=كرفب
|
||||
Name[ar]=Krfb
|
||||
Name[bg]=Krfb
|
||||
Name[bn]=কে-আর-এফ-বি
|
||||
Name[br]=Krfb
|
||||
@@ -76,7 +76,6 @@ Name[zh_CN]=Krfb
|
||||
Name[zh_HK]=Krfb
|
||||
Name[zh_TW]=桌面分享_Krfb
|
||||
GenericName=Desktop Sharing (VNC)
|
||||
GenericName[ar]=مشاركة سطح المكتب (VNC)
|
||||
GenericName[ca]=Compartició de l'escriptori (VNC)
|
||||
GenericName[ca@valencia]=Compartició de l'escriptori (VNC)
|
||||
GenericName[cs]=Sdílení pracovní plochy (VNC)
|
||||
@@ -84,19 +83,15 @@ GenericName[da]=Skrivebordsdeling (VNC)
|
||||
GenericName[de]=Arbeitsflächen-Freigabe (VNC)
|
||||
GenericName[el]=Κοινή χρήση επιφάνειας εργασίας (VNC)
|
||||
GenericName[en_GB]=Desktop Sharing (VNC)
|
||||
GenericName[eo]=Kunhavigo de Labortablo (VNC)
|
||||
GenericName[es]=Escritorio compartido (VNC)
|
||||
GenericName[et]=Töölaua jagamine (VNC)
|
||||
GenericName[eu]=Mahaigaina partekatzea (VNC)
|
||||
GenericName[fi]=Työpöydän jakaminen (VNC)
|
||||
GenericName[fr]=Partage de bureaux (VNC)
|
||||
GenericName[gl]=Compartir o escritorio (VNC)
|
||||
GenericName[hu]=Munkaasztal-megosztás (VNC)
|
||||
GenericName[ia]=Compartir de scriptorio (VNC)
|
||||
GenericName[it]=Condivisione del desktop (VNC)
|
||||
GenericName[ka]=სამუშაო მაგიდის გაზიარება(VNC).
|
||||
GenericName[ko]=데스크톱 공유(VNC)
|
||||
GenericName[lt]=Darbalaukio bendrinimas (VNC)
|
||||
GenericName[nl]=Bureaublad delen (VNC)
|
||||
GenericName[nn]=Skrivebordsdeling (VNC)
|
||||
GenericName[pl]=Współdzielenie pulpitu (VNC)
|
||||
@@ -111,7 +106,6 @@ GenericName[tr]=Masaüstü Paylaşımı (VNC)
|
||||
GenericName[uk]=Спільні стільниці (VNC)
|
||||
GenericName[x-test]=xxDesktop Sharing (VNC)xx
|
||||
GenericName[zh_CN]=桌面共享 (VNC)
|
||||
GenericName[zh_TW]=桌面分享 (VNC)
|
||||
Comment=Desktop Sharing
|
||||
Comment[af]=Werkskerm Deeling
|
||||
Comment[ar]=مشاركة سطح المكتب
|
||||
@@ -149,7 +143,7 @@ Comment[ka]=სამუშაო მაგიდის გაზიარებ
|
||||
Comment[kk]=Үстелді ортақтастыру
|
||||
Comment[km]=ការចែករំលែកផ្ទែតុ
|
||||
Comment[ko]=데스크톱 공유
|
||||
Comment[lt]=Darbalaukio bendrinimas
|
||||
Comment[lt]=Dalinimasis darbalaukiu
|
||||
Comment[lv]=Darbvirsmas koplietošana
|
||||
Comment[mk]=Делење на работната површина
|
||||
Comment[ml]=പണിയിടം പങ്കുവെക്കല്
|
||||
|
||||
@@ -5,26 +5,20 @@ Exec=@CMAKE_INSTALL_PREFIX@/bin/krfb-virtualmonitor
|
||||
Icon=krfb
|
||||
Terminal=false
|
||||
Name=KRFBs Virtual Monitor
|
||||
Name[ar]=شاشة افتراضية لكرفب
|
||||
Name[ca]=Monitor virtual del Krfb
|
||||
Name[ca@valencia]=Monitor virtual de Krfb
|
||||
Name[cs]=Virtuální monitor KRFB
|
||||
Name[el]=Εικονική οθόνη του KRFB
|
||||
Name[en_GB]=KRFBs Virtual Monitor
|
||||
Name[eo]=Virtuala Monitoro de KRFB
|
||||
Name[es]=Monitor virtual de KRFB
|
||||
Name[eu]=KRFBren alegiazko monitorea
|
||||
Name[fi]=KRFB:n virtuaalinäyttö
|
||||
Name[fr]=Moniteur virtuel « Krfb »
|
||||
Name[gl]=Monitor virtual de KRFB
|
||||
Name[hu]=KRFB virtuális monitor
|
||||
Name[ia]=Virtual Monitor de KRFB
|
||||
Name[it]=Monitor virtuale di KRFB
|
||||
Name[ka]=KRFB-ის ვირტუალური ეკრანი
|
||||
Name[ko]=KRFBs 가상 모니터
|
||||
Name[lt]=KRFBs virtualus monitorius
|
||||
Name[nl]=Virtuele monitor van KRFB
|
||||
Name[nn]=KRFBs virtuell skjerm
|
||||
Name[pl]=Monitor wirtualny KRFB
|
||||
Name[pt]=Monitor Virtual do KRFB
|
||||
Name[pt_BR]=Monitor virtual do KRFB
|
||||
@@ -37,28 +31,21 @@ Name[tr]=KRFB Sanal Monitörü
|
||||
Name[uk]=Віртуальний монітор KRFB
|
||||
Name[x-test]=xxKRFBs Virtual Monitorxx
|
||||
Name[zh_CN]=KRBs 虚拟监视器
|
||||
Name[zh_TW]=KRFBs 虛擬螢幕
|
||||
Comment=Remote Virtual Monitor
|
||||
Comment[ar]=شاشة افتراضية بعيدة
|
||||
Comment[ca]=Monitor virtual remot
|
||||
Comment[ca@valencia]=Monitor virtual remot
|
||||
Comment[cs]=Vzdálený virtuální monitor
|
||||
Comment[el]=Απομακρυσμένη εικονική οθόνη
|
||||
Comment[en_GB]=Remote Virtual Monitor
|
||||
Comment[eo]=Fora Virtuala Monitoro
|
||||
Comment[es]=Monitor virtual remoto
|
||||
Comment[eu]=Urruneko alegiazko monitorea
|
||||
Comment[fi]=Virtuaalinen etänäyttö
|
||||
Comment[fr]=Moniteur virtuel distant
|
||||
Comment[gl]=Monitor virtual remoto
|
||||
Comment[hu]=Távoli virtuális monitor
|
||||
Comment[ia]=Monitor Virtual Remote
|
||||
Comment[it]=Monitor virtuale remoto
|
||||
Comment[ka]=დაშორებული ვირტუალური ეკრანი
|
||||
Comment[ko]=원격 가상 모니터
|
||||
Comment[lt]=Nuotolinis virtualus monitorius
|
||||
Comment[nl]=Virtual Monitor op afstand
|
||||
Comment[nn]=Virtuell skjerm for ekstern ressurs
|
||||
Comment[pl]=Zdalny monitor wirtualny
|
||||
Comment[pt]=Monitor Virtual Remoto
|
||||
Comment[pt_BR]=Monitor virtual remoto
|
||||
@@ -71,6 +58,5 @@ Comment[tr]=Uzak Sanal Monitör
|
||||
Comment[uk]=Віддалений віртуальний монітор
|
||||
Comment[x-test]=xxRemote Virtual Monitorxx
|
||||
Comment[zh_CN]=远程虚拟监视器
|
||||
Comment[zh_TW]=遠端虛擬螢幕
|
||||
NoDisplay=true
|
||||
X-KDE-Wayland-Interfaces=zkde_screencast_unstable_v1
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QPointer>
|
||||
#include <QtGui/private/qtx11extras_p.h>
|
||||
#include <QX11Info>
|
||||
|
||||
struct RfbServer::Private
|
||||
{
|
||||
|
||||
@@ -26,14 +26,13 @@
|
||||
#include "krfbdebug.h"
|
||||
#include <QTimer>
|
||||
#include <QApplication>
|
||||
#include <QDesktopWidget>
|
||||
#include <QGlobalStatic>
|
||||
#include <QHostInfo>
|
||||
#include <qpa/qplatformnativeinterface.h>
|
||||
|
||||
#include <KLocalizedString>
|
||||
#include <KUser>
|
||||
#include <KNotification>
|
||||
#include <KWindowSystem>
|
||||
#include <chrono>
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
@@ -125,14 +124,7 @@ QVariantMap RfbServerManager::s_pluginArgs;
|
||||
void RfbServerManager::init()
|
||||
{
|
||||
//qDebug();
|
||||
WId rootWindow = 0;
|
||||
|
||||
if (KWindowSystem::isPlatformX11()) {
|
||||
QPlatformNativeInterface* native = qApp->platformNativeInterface();
|
||||
rootWindow = reinterpret_cast<WId>(native->nativeResourceForScreen(QByteArrayLiteral("rootwindow"), QGuiApplication::primaryScreen()));
|
||||
}
|
||||
|
||||
d->fb = FrameBufferManager::instance()->frameBuffer(rootWindow, s_pluginArgs);
|
||||
d->fb = FrameBufferManager::instance()->frameBuffer(QApplication::desktop()->winId(), s_pluginArgs);
|
||||
d->myCursor = rfbMakeXCursor(19, 19, (char *) cur, (char *) mask);
|
||||
d->myCursor->cleanup = false;
|
||||
d->desktopName = QStringLiteral("%1@%2 (shared desktop)") //FIXME check if we can use utf8
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb VERSION\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2002-11-07 11:35+0200\n"
|
||||
"Last-Translator: WEB-Translator <http://kde.af.org.za>\n"
|
||||
"Language-Team: AFRIKAANS <AF@lia.org.za>\n"
|
||||
@@ -51,7 +51,7 @@ msgstr "Aanvaar Verbinding"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Ontvang verbinding van %1, op hou (terwyl gewag het vir bevestiging)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr ""
|
||||
@@ -381,13 +381,13 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Die afgeleë gebruiker het gesluit Die verbinding."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
216
po/ar/krfb.po
216
po/ar/krfb.po
@@ -7,22 +7,22 @@
|
||||
# Munzir Taha <munzir@kacst.edu.sa>, 2004.
|
||||
# محمد سعد Mohamed SAAD <metehyi@free.fr>, 2006.
|
||||
# Youssef Chahibi <chahibi@gmail.com>, 2007.
|
||||
# SPDX-FileCopyrightText: 2009, 2024 zayed <zayed.alsaidi@gmail.com>
|
||||
# zayed <zayed.alsaidi@gmail.com>, 2009.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"PO-Revision-Date: 2024-02-24 12:24+0400\n"
|
||||
"Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n"
|
||||
"Language-Team: ar\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2009-01-11 13:06+0400\n"
|
||||
"Last-Translator: zayed <zayed.alsaidi@gmail.com>\n"
|
||||
"Language-Team: Arabic <linuxac-kde-arabic-team@googlegroups.com>\n"
|
||||
"Language: ar\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
||||
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
||||
"X-Generator: Lokalize 23.08.1\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
@@ -52,16 +52,16 @@ msgid "Refuse Connection"
|
||||
msgstr "أ&رفض الاتصال"
|
||||
|
||||
#: invitationsrfbclient.cpp:69
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
msgid "Accepted connection from %1"
|
||||
msgstr "اتصال مقبول من %1"
|
||||
msgstr "اتصال مقبول غير مدعو من %1"
|
||||
|
||||
#: invitationsrfbclient.cpp:75
|
||||
#, kde-format
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "وصول اتصال من %1 ، معلق (في انتظار التأكيد)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (سطح مكتب مشارك)"
|
||||
@@ -70,7 +70,7 @@ msgstr "%1@%2 (سطح مكتب مشارك)"
|
||||
#: krfb.kcfg:9
|
||||
#, kde-format
|
||||
msgid "Start minimized"
|
||||
msgstr "ابدأ مصغّرًا"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: label, entry (useDefaultPort), group (TCP)
|
||||
#: krfb.kcfg:15
|
||||
@@ -95,7 +95,7 @@ msgstr "أعلن الخدمة على الشبكة المحلية"
|
||||
#: krfb.kcfg:29
|
||||
#, kde-format
|
||||
msgid "Do not store passwords in KWallet"
|
||||
msgstr "لا تحفظ كلمات السر في «محفظتك»"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: label, entry (allowDesktopControl), group (Security)
|
||||
#: krfb.kcfg:33
|
||||
@@ -120,25 +120,25 @@ msgstr "كلمة السر للاتصالات غير المدعوة."
|
||||
#: krfb.kcfg:49
|
||||
#, kde-format
|
||||
msgid "Preferred Frame Buffer Plugin"
|
||||
msgstr "ملحق مخزن الأطر المؤقت المفضل"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:49
|
||||
#, kde-format
|
||||
msgid "Creating a Virtual Monitor from %1"
|
||||
msgstr "تنشئ شاشة افتراضية من %1"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:80
|
||||
#, kde-format
|
||||
msgid "Remote Virtual Monitor"
|
||||
msgstr "شاشة افتراضية بعيدة"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:82
|
||||
#, kde-format
|
||||
msgid "Offer a Virtual Monitor that can be accessed remotely"
|
||||
msgstr "تقدم شاشة افتراضية يمكن الوصول إليها عن بعد"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:84 main.cpp:98
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
msgid ""
|
||||
"(c) 2009-2010, Collabora Ltd.\n"
|
||||
"(c) 2007, Alessandro Praduroux\n"
|
||||
@@ -148,28 +148,28 @@ msgid ""
|
||||
"(c) 2000, Tridia Corporation\n"
|
||||
"(c) 1999, AT&T Laboratories Boston\n"
|
||||
msgstr ""
|
||||
"(ج) 2009-2010، شركة Collabora Ltd.\n"
|
||||
"(ج) 2007، أليساندرو برادورو\n"
|
||||
"(ج) 2001-2003، تيم يانسن\n"
|
||||
"(ج) 2001، يوهانس إي. شيندلين\n"
|
||||
"(ج) 2000-2001، كونست كابلينسكي\n"
|
||||
"(ج) 2000، شركة تريديا\n"
|
||||
"(ج) 1999، مختبرات AT&T في بوسطن\n"
|
||||
"(c) 2007, Alessandro Praduroux\n"
|
||||
"(c) 2001-2003, Tim Jansen\n"
|
||||
"(c) 2001, Johannes E. Schindelin\n"
|
||||
"(c) 2000, heXoNet Support GmbH, D-66424 Homburg\n"
|
||||
"(c) 2000-2001, Const Kaplinsky\n"
|
||||
"(c) 2000, Tridia Corporation\n"
|
||||
"(c) 1999, AT&T Laboratories Boston\n"
|
||||
|
||||
#: main-virtualmonitor.cpp:91
|
||||
#, kde-format
|
||||
msgid "Virtual Monitor implementation"
|
||||
msgstr "تنفيذ الشاشة الافتراضية"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:92 main.cpp:108
|
||||
#, kde-format
|
||||
msgid "George Kiagiadakis"
|
||||
msgstr "جورج كياجياداكيس"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:93 main.cpp:111
|
||||
#, kde-format
|
||||
msgid "Alessandro Praduroux"
|
||||
msgstr "أليساندرو برادورو"
|
||||
msgstr "Alessandro Praduroux"
|
||||
|
||||
#: main-virtualmonitor.cpp:93 main.cpp:111
|
||||
#, kde-format
|
||||
@@ -184,12 +184,12 @@ msgstr "Tim Jansen"
|
||||
#: main-virtualmonitor.cpp:94 main.cpp:112
|
||||
#, kde-format
|
||||
msgid "Original author"
|
||||
msgstr "المؤلف الأصلي"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:95 main.cpp:113
|
||||
#, kde-format
|
||||
msgid "Johannes E. Schindelin"
|
||||
msgstr "يوهانس إي شيندلين"
|
||||
msgstr "Johannes E. Schindelin"
|
||||
|
||||
#: main-virtualmonitor.cpp:96 main.cpp:114
|
||||
#, kde-format
|
||||
@@ -199,7 +199,7 @@ msgstr "libvncserver"
|
||||
#: main-virtualmonitor.cpp:97 main.cpp:115
|
||||
#, kde-format
|
||||
msgid "Const Kaplinsky"
|
||||
msgstr "كونست كابلينسكي"
|
||||
msgstr "Const Kaplinsky"
|
||||
|
||||
#: main-virtualmonitor.cpp:98 main.cpp:116
|
||||
#, kde-format
|
||||
@@ -209,7 +209,7 @@ msgstr "مرمز TightVNC"
|
||||
#: main-virtualmonitor.cpp:99 main.cpp:117
|
||||
#, kde-format
|
||||
msgid "Tridia Corporation"
|
||||
msgstr "شركة تريديا"
|
||||
msgstr "Tridia Corporation"
|
||||
|
||||
#: main-virtualmonitor.cpp:100 main.cpp:118
|
||||
#, kde-format
|
||||
@@ -219,7 +219,7 @@ msgstr "مرمز ZLib"
|
||||
#: main-virtualmonitor.cpp:101 main.cpp:119
|
||||
#, kde-format
|
||||
msgid "AT&T Laboratories Boston"
|
||||
msgstr "مختبرات AT&T بوسطن"
|
||||
msgstr "AT&T Laboratories Boston"
|
||||
|
||||
#: main-virtualmonitor.cpp:102 main.cpp:120
|
||||
#, kde-format
|
||||
@@ -229,52 +229,54 @@ msgstr "مرمز VNC الأصلي وتصميم الميفاق"
|
||||
#: main-virtualmonitor.cpp:108
|
||||
#, kde-format
|
||||
msgid "Logical resolution of the new monitor"
|
||||
msgstr "الدقة المنطقي للشاشة الجديدة"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:108
|
||||
#, kde-format
|
||||
msgid "resolution"
|
||||
msgstr "الدقة"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:110
|
||||
#, kde-format
|
||||
msgid "Name of the monitor"
|
||||
msgstr "اسم الشاشة"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:110
|
||||
#, kde-format
|
||||
msgid "name"
|
||||
msgstr "الاسم"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:112
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Password for uninvited connections."
|
||||
msgid "Password for the client to connect to it"
|
||||
msgstr "كلمة السر للعميل للاتصال به"
|
||||
msgstr "كلمة السر للاتصالات غير المدعوة."
|
||||
|
||||
#: main-virtualmonitor.cpp:112
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "<b>Password:</b>"
|
||||
msgid "password"
|
||||
msgstr "كلمة السر"
|
||||
msgstr "<b>كلمة المرور:</b>"
|
||||
|
||||
#: main-virtualmonitor.cpp:114
|
||||
#, kde-format
|
||||
msgid "The device-pixel-ratio of the device, the scaling factor"
|
||||
msgstr "نسبة البكسل للجهاز، عامل القياس"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:114
|
||||
#, kde-format
|
||||
msgid "dpr"
|
||||
msgstr "dpr"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:116
|
||||
#, kde-format
|
||||
msgid "The port we will be listening to"
|
||||
msgstr "المنفذ الذي سنستمع إليه"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:116
|
||||
#, kde-format
|
||||
msgid "number"
|
||||
msgstr "الرقم"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:49
|
||||
#, kde-format
|
||||
@@ -296,24 +298,25 @@ msgid "Desktop Sharing"
|
||||
msgstr "مشاركة سطح المكتب"
|
||||
|
||||
#: main.cpp:96
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "VNC-compatible server to share KDE desktops"
|
||||
msgid "VNC-compatible server to share desktops"
|
||||
msgstr "خادم متوافق مع VNC لمشاركة أجهزة سطح المكتب"
|
||||
msgstr "خادم VNC يطابق مشاركة أسطح المكتب KDE"
|
||||
|
||||
#: main.cpp:105
|
||||
#, kde-format
|
||||
msgid "George Goldberg"
|
||||
msgstr "جورج جولدبيرج"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:106
|
||||
#, kde-format
|
||||
msgid "Telepathy tubes support"
|
||||
msgstr "دعم أنابيب التخاطر"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:126
|
||||
#, kde-format
|
||||
msgid "Do not show the invitations management dialog at startup"
|
||||
msgstr "لا تظهر مربع حوار إدارة الدعوات عند بدء التشغيل"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:148
|
||||
#, kde-format
|
||||
@@ -321,18 +324,16 @@ msgid ""
|
||||
"Desktop Sharing is not running under an X11 Server or Wayland.\n"
|
||||
"Other display servers are currently not supported."
|
||||
msgstr ""
|
||||
"مشاركة سطح المكتب لا تعمل ضمن خادم أكس أو ويلاند.\n"
|
||||
"خوادم العرض الأخرى غير مدعومة حاليًا."
|
||||
|
||||
#: mainwindow.cpp:52
|
||||
#, kde-format
|
||||
msgid "Storing passwords in config file is insecure!"
|
||||
msgstr "تخزين كلمات السر في ملف الضبط غير آمن!"
|
||||
msgstr ""
|
||||
|
||||
#: mainwindow.cpp:189
|
||||
#, kde-format
|
||||
msgid "Enter a new password for Unattended Access"
|
||||
msgstr "أدخل كلمة سر جديدة للوصول غير المراقب"
|
||||
msgstr ""
|
||||
|
||||
#: mainwindow.cpp:200
|
||||
#, kde-format
|
||||
@@ -340,20 +341,19 @@ msgid ""
|
||||
"Failed to start the krfb server. Desktop sharing will not work. Try setting "
|
||||
"another port in the settings and restart krfb."
|
||||
msgstr ""
|
||||
"فشل في بدء تشغيل خادم krfb. لن تعمل مشاركة سطح المكتب. حاول إعداد منفذ آخر "
|
||||
"في الإعدادات وإعادة تشغيل krfb."
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QLabel, titleLabel)
|
||||
#. i18n: ectx: property (text), widget (QLabel, titleLabel)
|
||||
#. i18n: ectx: property (whatsThis), widget (QLabel, aboutLabel)
|
||||
#: mainwindow.cpp:223 mainwindow.cpp:230 ui/mainwidget.ui:83
|
||||
#: ui/mainwidget.ui:86 ui/mainwidget.ui:114
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Desktop Sharing"
|
||||
msgid "KDE Desktop Sharing"
|
||||
msgstr "مشاركة سطح المكتب كيدي"
|
||||
msgstr "مشاركة سطح المكتب"
|
||||
|
||||
#: mainwindow.cpp:224
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
msgid ""
|
||||
"This field contains the address of your computer and the port number, "
|
||||
"separated by a colon.\n"
|
||||
@@ -383,10 +383,6 @@ msgid ""
|
||||
"password, desktop sharing access will be granted without explicit "
|
||||
"confirmation."
|
||||
msgstr ""
|
||||
"يجب مصادقة أي مستخدم بعيد لديه كلمة سر عادية لمشاركة سطح المكتب.\n"
|
||||
"\n"
|
||||
"إذا كان الوصول غير المراقب مشغل، وقام المستخدم البعيد بتوفير كلمة سر للوضع "
|
||||
"غير المراقب، فسيمنح الوصول إلى مشاركة سطح المكتب دون تأكيد صريح."
|
||||
|
||||
#: mainwindow.cpp:249
|
||||
#, kde-format
|
||||
@@ -401,28 +397,27 @@ msgstr "الأمن"
|
||||
#: mainwindow.cpp:251
|
||||
#, kde-format
|
||||
msgid "Screen capture"
|
||||
msgstr "التقاط الشّاشة"
|
||||
msgstr ""
|
||||
|
||||
#: mainwindow.cpp:256
|
||||
#, kde-format
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
"لتطبيق إعداد البرنامج المساعد Framebuffer، تحتاج إلى إعادة تشغيل البرنامج."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#, kde-format
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "المستخدم البعيد %1 متصل."
|
||||
msgstr "المستخدم البعيد أغلق الاتصال."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#, kde-format
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "المستخدم البعيد %1 فقد الاتصال."
|
||||
msgstr "المستخدم البعيد أغلق الاتصال."
|
||||
|
||||
#: trayicon.cpp:56
|
||||
#, kde-format
|
||||
msgid "Disconnect"
|
||||
msgstr "اقطع الاتصال"
|
||||
msgstr ""
|
||||
|
||||
#: trayicon.cpp:62
|
||||
#, kde-format
|
||||
@@ -440,21 +435,21 @@ msgid "Desktop Sharing - connected with %1"
|
||||
msgstr "مشاركة سطح المكتب - متصل مع %1"
|
||||
|
||||
#: trayicon.cpp:120
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
msgid "Desktop Sharing - connected"
|
||||
msgstr "مشاركة سطح المكتب - متصل"
|
||||
msgstr "مشاركة سطح المكتب - غير متصل"
|
||||
|
||||
#. i18n: ectx: property (windowTitle), widget (QWidget, Framebuffer)
|
||||
#: ui/configframebuffer.ui:14
|
||||
#, kde-format
|
||||
msgid "Framebuffer"
|
||||
msgstr "مخزن الأطر المؤقت"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, label)
|
||||
#: ui/configframebuffer.ui:22
|
||||
#, kde-format
|
||||
msgid "Preferred frameb&uffer plugin:"
|
||||
msgstr "ملحق المخزن الإطر المؤقته المفضل:"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, helpText)
|
||||
#: ui/configframebuffer.ui:47
|
||||
@@ -465,10 +460,6 @@ msgid ""
|
||||
"style=\" font-weight:600;\">qt</span> plugin is a safe fallback, if for some "
|
||||
"reason others don't work. But also it is very slow.</p></body></html>"
|
||||
msgstr ""
|
||||
"<html><head/><body><p> عند استخدام أكس ١١ يجب تفضيل المكون الإضافي <span "
|
||||
"style=\"font-weight:600;\">xcb</span> لأنه أكثر أداءً. يعد المكون الإضافي<br/"
|
||||
"><span style = \"font-weight:600;\">qt</span> بديلاً آمنًا، إذا لم يعمل "
|
||||
"الآخرون لسبب ما. ولكنه أيضًا بطيء جدًا.</p></body></html>"
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowDesktopControl)
|
||||
#: ui/configsecurity.ui:17
|
||||
@@ -480,7 +471,7 @@ msgstr "اسمح للاتصالات البعيدة بتحكم بسطح مكتب
|
||||
#: ui/configsecurity.ui:27
|
||||
#, kde-format
|
||||
msgid "Do not store passwords using KDE wallet"
|
||||
msgstr "لا تحفظ كلمات السر في محفظة كيدي"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useDefaultPort)
|
||||
#: ui/configtcp.ui:26
|
||||
@@ -544,50 +535,57 @@ msgstr "اسمح للمستخدم البعيد بالت&حكم بالفأرة و
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, aboutLabel)
|
||||
#: ui/mainwidget.ui:117
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid ""
|
||||
#| "KDE Desktop Sharing allows you to invite somebody at a remote location to "
|
||||
#| "watch and possibly control your desktop. <a href=\"whatsthis\">More about "
|
||||
#| "invitations...</a>"
|
||||
msgid ""
|
||||
"KDE Desktop Sharing allows you to grant permission to someone at a remote "
|
||||
"location for viewing and possibly controlling your desktop."
|
||||
msgstr ""
|
||||
"تسمح لك مشاركة سطح المكتب كيدي بمنح الإذن لشخص ما في مكان بعيد لمشاهدة سطح "
|
||||
"المكتب الخاص بك وربما التحكم فيه."
|
||||
"تشارك سطح المكتب للكِيدِي يسمح لك بدعوة شخص بعيد لمشاهدةأو التحكم بسطح مكتبك . "
|
||||
"<a href=\"whatsthis\">المزيد عند الدعوات...</a>"
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QCheckBox, enableSharingCheckBox)
|
||||
#: ui/mainwidget.ui:145
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Manage Invitations - Desktop Sharing"
|
||||
msgid "Starts/Stops Remote Desktop Sharing"
|
||||
msgstr "يبدأ/يوقف مشاركة سطح المكتب عن بعد"
|
||||
msgstr "إدارة الدعوات - مشاركة سطح المكتب"
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, enableSharingCheckBox)
|
||||
#: ui/mainwidget.ui:148
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Desktop Sharing"
|
||||
msgid "&Enable Desktop Sharing"
|
||||
msgstr "&مكن مشاركة سطح المكتب"
|
||||
msgstr "مشاركة سطح المكتب"
|
||||
|
||||
#. i18n: ectx: property (title), widget (QGroupBox, detailsGroupBox)
|
||||
#: ui/mainwidget.ui:170
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Connection side image"
|
||||
msgid "Connection Details"
|
||||
msgstr "تفاصيل الاتصال"
|
||||
msgstr "الصورة من جانب الاتصال"
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, addressLabel)
|
||||
#: ui/mainwidget.ui:193
|
||||
#, kde-format
|
||||
msgid "&Address"
|
||||
msgstr "ال&عنوان"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QToolButton, addressAboutButton)
|
||||
#: ui/mainwidget.ui:214
|
||||
#, kde-format
|
||||
msgid "More about this address"
|
||||
msgstr "المزيد عن هذا العنوان"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QToolButton, addressAboutButton)
|
||||
#. i18n: ectx: property (text), widget (QToolButton, unattendedAboutButton)
|
||||
#: ui/mainwidget.ui:217 ui/mainwidget.ui:397
|
||||
#, kde-format
|
||||
msgid "About"
|
||||
msgstr "عن"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QLabel, addressDisplayLabel)
|
||||
#: ui/mainwidget.ui:235
|
||||
@@ -596,32 +594,32 @@ msgid ""
|
||||
"Address required by remote users to connect to your desktop. Click about "
|
||||
"button on the right for more info."
|
||||
msgstr ""
|
||||
"العنوان المطلوب من قبل المستخدمين عن بعد للاتصال بسطح المكتب الخاص بك. انقر "
|
||||
"فوق الزر الموجود على اليسار لمزيد من المعلومات."
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, addressDisplayLabel)
|
||||
#: ui/mainwidget.ui:238
|
||||
#, kde-format
|
||||
msgid "127.0.0.1 : 5900"
|
||||
msgstr "127.0.0.1 : 5900"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, passwordLabel)
|
||||
#: ui/mainwidget.ui:269
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "<b>Password:</b>"
|
||||
msgid "&Password"
|
||||
msgstr "كلمة ال&سّر"
|
||||
msgstr "<b>كلمة المرور:</b>"
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QToolButton, passwordEditButton)
|
||||
#: ui/mainwidget.ui:290
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Desktop Sharing Error"
|
||||
msgid "Edit/Save Desktop Sharing Password"
|
||||
msgstr "حرر/احفظ كلمة السر لمشاركة سطح المكتب"
|
||||
msgstr "خطأ مشاركة سطح المكتب"
|
||||
|
||||
#. i18n: ectx: property (text), widget (QToolButton, passwordEditButton)
|
||||
#: ui/mainwidget.ui:293
|
||||
#, kde-format
|
||||
msgid "Edit"
|
||||
msgstr "حرّر"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QLabel, passwordDisplayLabel)
|
||||
#: ui/mainwidget.ui:311
|
||||
@@ -630,14 +628,12 @@ msgid ""
|
||||
"Password required by remote users to connect to your desktop. Click the edit "
|
||||
"button on the right to change password."
|
||||
msgstr ""
|
||||
"كلمة السر المطلوبة من قبل المستخدمين عن بعد للاتصال بسطح المكتب الخاص بك. "
|
||||
"انقر فوق زر التحرير الموجود على اليسار لتغير كلمة السر."
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, passwordDisplayLabel)
|
||||
#: ui/mainwidget.ui:314
|
||||
#, kde-format
|
||||
msgid "TemporaryPassword"
|
||||
msgstr "كلمة_سر_مؤقتة"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QGroupBox, unattendedGroupBox)
|
||||
#. i18n: ectx: property (text), widget (QLabel, unattendedAboutLabel)
|
||||
@@ -647,14 +643,12 @@ msgid ""
|
||||
"Unattended Access allows a remote user with the password to gain control to "
|
||||
"your desktop without your explicit confirmation."
|
||||
msgstr ""
|
||||
"يسمح الوصول غير المراقب لمستخدم بعيد لديه كلمة السر بالتحكم في سطح المكتب "
|
||||
"الخاص بك دون تأكيد صريح منك."
|
||||
|
||||
#. i18n: ectx: property (title), widget (QGroupBox, unattendedGroupBox)
|
||||
#: ui/mainwidget.ui:343
|
||||
#, kde-format
|
||||
msgid "Unattended Access"
|
||||
msgstr "كلمة سر للوصول غير المراقب"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QLabel, unattendedAboutLabel)
|
||||
#: ui/mainwidget.ui:375
|
||||
@@ -664,14 +658,12 @@ msgid ""
|
||||
"your desktop without your explicit confirmation. Click \"About\" button on "
|
||||
"right to know more."
|
||||
msgstr ""
|
||||
"يسمح الوصول غير المراقب لمستخدم بعيد لديه كلمة السر بالتحكم في سطح المكتب "
|
||||
"الخاص بك دون تأكيد صريح منك. انقر زر \"عن\" في اليسار لتعرف المزيد."
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QToolButton, unattendedAboutButton)
|
||||
#: ui/mainwidget.ui:394
|
||||
#, kde-format
|
||||
msgid "Know more about Unattended Access"
|
||||
msgstr "اعرف المزيد عن كلمة سر للوصول غير المراقب"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QCheckBox, enableUnattendedCheckBox)
|
||||
#: ui/mainwidget.ui:437
|
||||
@@ -680,26 +672,24 @@ msgid ""
|
||||
"Starts/Stops unattended access to your desktop. Click on button on right to "
|
||||
"change password, and \"About\" button to know more."
|
||||
msgstr ""
|
||||
"يبدأ/يوقف الوصول غير المراقب إلى سطح المكتب الخاص بك. انقر على الزر الموجود "
|
||||
"على اليسار لتغيير كلمة السر، وزر \"حول\" لمعرفة المزيد."
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, enableUnattendedCheckBox)
|
||||
#: ui/mainwidget.ui:440
|
||||
#, kde-format
|
||||
msgid "Enable &Unattended Access"
|
||||
msgstr "مكن الوصول &غير المراقب"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QPushButton, unattendedPasswordButton)
|
||||
#: ui/mainwidget.ui:465
|
||||
#, kde-format
|
||||
msgid "Change password for Unattended Access"
|
||||
msgstr "غيّر كلمة سر للوصول غير المراقب"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QPushButton, unattendedPasswordButton)
|
||||
#: ui/mainwidget.ui:468
|
||||
#, kde-format
|
||||
msgid "&Change Unattended Password"
|
||||
msgstr "&غيّر كلمة سر للوصول غير المراقب"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Welcome to KDE Desktop Sharing"
|
||||
#~ msgstr "مرحباً بك في مشاركة سطح المكتب KDE ."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2007-08-26 22:37+0300\n"
|
||||
"Last-Translator: Darafei Praliaskouski <komzpa@licei2.com>\n"
|
||||
"Language-Team: Belarusian <i18n@mova.org>\n"
|
||||
@@ -55,7 +55,7 @@ msgstr ""
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr ""
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr ""
|
||||
@@ -380,12 +380,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr ""
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2013-07-25 15:34+0300\n"
|
||||
"Last-Translator: Yasen Pramatarov <yasen@lindeas.com>\n"
|
||||
"Language-Team: Bulgarian <dict@ludost.net>\n"
|
||||
@@ -53,7 +53,7 @@ msgstr "Приета е връзка от %1."
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Връзката от %1 чака за потвърждение."
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (споделяне на работното място)"
|
||||
@@ -392,12 +392,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Отдалеченият потребител %1 е свързан."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Отдалеченият потребител %1 е изключен."
|
||||
|
||||
@@ -4,7 +4,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kdenetwork/krfb.pot\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2004-09-20 15:44+0200\n"
|
||||
"Last-Translator: Thierry Vignaud <tvignaud@mandriva.com>\n"
|
||||
"Language-Team: br <LL@li.org>\n"
|
||||
@@ -50,7 +50,7 @@ msgstr "Aotren ar gevreadenn"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr ""
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (burev rannet)"
|
||||
@@ -379,12 +379,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr ""
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2014-12-28 11:25+0000\n"
|
||||
"Last-Translator: Fadil Ademovic <fademovic2@etf.unsa.ba>\n"
|
||||
"Language-Team: Bosnian <lokal@lugbih.org>\n"
|
||||
@@ -56,7 +56,7 @@ msgstr "Prihvaćena veza sa %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Prihvaćena konekcija od %1, na čekanju (čekam potvrdu)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (podijeljena radna površina)"
|
||||
@@ -411,12 +411,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Udaljeni korisnik %1 je sada povezan."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Udaljeni korisnik %1 prekinuo je vezu."
|
||||
|
||||
@@ -73,12 +73,12 @@
|
||||
> per a veure o controlar l'escriptori. </para>
|
||||
|
||||
<para
|
||||
>Típicament, emprareu el &krfb; junt amb el client <acronym
|
||||
>Típicament emprareu el &krfb; junt amb el client <acronym
|
||||
>VNC</acronym
|
||||
> del &kde;, el qual és la &krdc;, atès que comparteix moltes de les característiques especials del &krfb;. </para>
|
||||
|
||||
<para
|
||||
>El &krfb; no requereix que inicieu una nova sessió de X -podrà compartir la sessió actual-. Això fa que sigui realment útil quan algú vol ajudar-vos a dur a terme alguna tasca. </para>
|
||||
>El &krfb; no requereix que inicieu una nova sessió de X -podrà compartir la sessió actual-. Això fa que sigui realment útil quan algú vol ajudar-vos a realitzar alguna tasca. </para>
|
||||
|
||||
<para
|
||||
>Si us plau, informeu de qualsevol problema o petició d'una nova característica a la llista de correu del &kde; o d'un error a <ulink url="https://bugs.kde.org"
|
||||
@@ -107,7 +107,7 @@
|
||||
>En el protocol de Frame Buffer remot, l'aplicació que s'executa a la màquina a on l'usuari es troba assegut (que conté la pantalla, el teclat i el punter), s'anomena el client. L'aplicació que s'executa a la màquina a on està localitzat el frame-buffer (en la qual s'executa el sistema de finestres i les aplicacions que l'usuari està controlant en mode remot) s'anomena el servidor. El &krfb; és el servidor del &kde; per al protocol de Frame Buffer remot. La &krdc; és el client del &kde; per al protocol de Frame Buffer remot. </para>
|
||||
|
||||
<para
|
||||
>Aquest ús comporta una raonable quantitat de trànsit en xarxa atès que s'envia una imatge del framebuffer, de manera que el Frame Buffer remot funciona millor sobre enllaços de banda ampla, així com una xarxa d'àrea local. Tot i això, és possible utilitzar el &krfb; sobre d'altres enllaços, però el rendiment no serà tan bo. </para>
|
||||
>Aquest ús comporta una raonable quantitat de trànsit en xarxa atès que s'envia una imatge del framebuffer, de manera que el Frame Buffer remot funciona millor sobre enllaços de banda ampla, així com una xarxa d'àrea local. Tot i això és possible utilitzar el &krfb; sobre d'altres enllaços, però el rendiment no serà tan bo. </para>
|
||||
|
||||
</chapter>
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
>&Alt;<keycap
|
||||
>F4</keycap
|
||||
></keycombo
|
||||
> el servidor continuarà funcionant, el qual és indicat per una icona a la safata del sistema. Per a aturar-lo, utilitzeu <menuchoice
|
||||
> el servidor continuarà funcionant, el qual és indicat per una icona a la safata del sistema. Per aturar-lo, utilitzeu <menuchoice
|
||||
><guimenu
|
||||
>Fitxer</guimenu
|
||||
><guimenuitem
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
# Translation of krfb.po to Catalan
|
||||
# Copyright (C) 2003-2024 This_file_is_part_of_KDE
|
||||
# Copyright (C) 2003-2021 This_file_is_part_of_KDE
|
||||
# This file is distributed under the license LGPL version 2.1 or
|
||||
# version 3 or later versions approved by the membership of KDE e.V.
|
||||
#
|
||||
# Antoni Bella Pérez <antonibella5@yahoo.com>, 2003, 2012, 2015, 2017, 2020, 2021.
|
||||
# Albert Astals Cid <aacid@kde.org>, 2004, 2005.
|
||||
# Josep M. Ferrer <txemaq@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2019, 2020, 2021, 2024.
|
||||
# Josep M. Ferrer <txemaq@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2019, 2020, 2021.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"PO-Revision-Date: 2024-01-10 11:33+0100\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2021-10-31 14:10+0100\n"
|
||||
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
|
||||
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
|
||||
"Language: ca\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Lokalize 22.12.3\n"
|
||||
"X-Generator: Lokalize 20.12.0\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Accelerator-Marker: &\n"
|
||||
|
||||
@@ -57,7 +57,7 @@ msgstr "Connexió acceptada des de %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Rebuda connexió des de %1, en espera (de confirmació)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (escriptori compartit)"
|
||||
@@ -416,12 +416,12 @@ msgstr ""
|
||||
"Per a aplicar l'opció del connector de «framebuffer», cal reiniciar el "
|
||||
"programa."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "L'usuari remot %1 ara està connectat."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "L'usuari remot %1 ha desconnectat."
|
||||
@@ -539,10 +539,10 @@ msgid ""
|
||||
"careful. When the option is disabled the remote user can only watch your "
|
||||
"screen."
|
||||
msgstr ""
|
||||
"Si activeu aquesta opció, l'usuari remot podrà usar el teclat i el punter "
|
||||
"del ratolí. Això li donarà el control absolut sobre el vostre ordinador, "
|
||||
"useu-ho amb cura. Quan aquesta opció està desactivada, l'usuari remot només "
|
||||
"podrà veure la vostra pantalla."
|
||||
"Si activeu aquesta opció, l'usuari remot podrà usar el teclat i el ratolí. "
|
||||
"Això li donarà el control absolut sobre el vostre ordinador, useu-ho amb "
|
||||
"cura. Quan aquesta opció està desactivada, l'usuari remot només podrà veure "
|
||||
"la vostra pantalla."
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, cbAllowRemoteControl)
|
||||
#: ui/connectionwidget.ui:139
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
# Translation of krfb.po to Catalan (Valencian)
|
||||
# Copyright (C) 2003-2024 This_file_is_part_of_KDE
|
||||
# Copyright (C) 2003-2021 This_file_is_part_of_KDE
|
||||
# This file is distributed under the license LGPL version 2.1 or
|
||||
# version 3 or later versions approved by the membership of KDE e.V.
|
||||
#
|
||||
# Antoni Bella Pérez <antonibella5@yahoo.com>, 2003, 2012, 2015, 2017, 2020, 2021.
|
||||
# Albert Astals Cid <aacid@kde.org>, 2004, 2005.
|
||||
# Josep M. Ferrer <txemaq@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2019, 2020, 2021, 2024.
|
||||
# Josep M. Ferrer <txemaq@gmail.com>, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2019, 2020, 2021.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"PO-Revision-Date: 2024-01-10 11:33+0100\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2021-10-31 14:10+0100\n"
|
||||
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
|
||||
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
|
||||
"Language: ca@valencia\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Lokalize 22.12.3\n"
|
||||
"X-Generator: Lokalize 20.12.0\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Accelerator-Marker: &\n"
|
||||
|
||||
@@ -57,7 +57,7 @@ msgstr "Connexió acceptada des de %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Rebuda connexió des de %1, en espera (de confirmació)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (escriptori compartit)"
|
||||
@@ -417,12 +417,12 @@ msgstr ""
|
||||
"Per a aplicar l'opció del connector de «framebuffer», cal reiniciar el "
|
||||
"programa."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "L'usuari remot %1 ara està connectat."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "L'usuari remot %1 ha desconnectat."
|
||||
@@ -540,10 +540,10 @@ msgid ""
|
||||
"careful. When the option is disabled the remote user can only watch your "
|
||||
"screen."
|
||||
msgstr ""
|
||||
"Si seleccioneu esta opció, l'usuari remot podrà utilitzar el teclat i el "
|
||||
"punter del ratolí. Açò li donarà el control absolut sobre el vostre "
|
||||
"ordinador, utilitzeu-ho amb cura. Quan esta opció està desseleccionada, "
|
||||
"l'usuari remot només podrà veure la vostra pantalla."
|
||||
"Si activeu esta opció, l'usuari remot podrà utilitzar el teclat i el ratolí. "
|
||||
"Açò li donarà el control absolut sobre el vostre ordinador, utilitzeu-ho amb "
|
||||
"cura. Quan esta opció està desactivada, l'usuari remot només podrà veure la "
|
||||
"vostra pantalla."
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, cbAllowRemoteControl)
|
||||
#: ui/connectionwidget.ui:139
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2022-02-08 14:54+0100\n"
|
||||
"Last-Translator: Vit Pelcak <vpelcak@suse.cz>\n"
|
||||
"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
|
||||
@@ -54,7 +54,7 @@ msgstr "Přijato spojení od %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Přijato spojení od %1, pozdrženo (čekám na potvrzení)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (sdílená plocha)"
|
||||
@@ -402,12 +402,12 @@ msgstr "Nahrávat obrazovku"
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Vzdálený uživatel %1 je nyní připojen."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Vzdálený uživatel %1 se odpojil."
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2004-01-06 16:42+0000\n"
|
||||
"Last-Translator: KD at KGyfieithu <kyfieithu@dotmon.com>\n"
|
||||
"Language-Team: Cymraeg <cy@li.org>\n"
|
||||
@@ -57,7 +57,7 @@ msgstr "Derbynwyd cysylltiad anwahoddedig o %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Derbynwyd cysylltiad o %1, wedi' ddal (yn aros am wiriad)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (Penbwrdd wedi'i Rannu)"
|
||||
@@ -397,13 +397,13 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Ceuodd y defnyddiwr pell y cysylltiad."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2020-04-08 19:22+0200\n"
|
||||
"Last-Translator: Martin Schlander <mschlander@opensuse.org>\n"
|
||||
"Language-Team: Danish <kde-i18n-doc@kde.org>\n"
|
||||
@@ -55,7 +55,7 @@ msgstr "Accepterede forbindelse fra %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Modtog forbindelse fra %1, on hold (venter på bekræftelse)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (delt skrivebord)"
|
||||
@@ -415,12 +415,12 @@ msgstr ""
|
||||
"Du skal genstarte programmet for at anvende indstillinger for framebuffer-"
|
||||
"plugin."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Den eksterne bruger %1 er nu forbundet."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Den eksterne bruger %1 er frakoblet."
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2022-03-13 10:25+0100\n"
|
||||
"Last-Translator: Frederik Schwarzer <schwarzer@kde.org>\n"
|
||||
"Language-Team: German <kde-i18n-doc@kde.org>\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Lokalize 21.12.3\n"
|
||||
|
||||
#, kde-format
|
||||
@@ -55,7 +55,7 @@ msgstr "Verbindungsanfrage von %1 wurde akzeptiert"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Uneingeladene Verbindungsanfrage von %1 wartet auf Bestätigung"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (freigegebene Arbeitsfläche)"
|
||||
@@ -417,12 +417,12 @@ msgstr ""
|
||||
"Um die Einstellung für das Framebuffer-Modul anzuwenden, müssen Sie das "
|
||||
"Programm neu starten."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Der entfernte Benutzer „%1“ ist nun verbunden."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Der entfernte Benutzer „%1“ hat die Verbindung getrennt."
|
||||
|
||||
@@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2021-11-06 11:12+0200\n"
|
||||
"Last-Translator: Stelios <sstavra@gmail.com>\n"
|
||||
"Language-Team: Greek <kde-i18n-el@kde.org>\n"
|
||||
@@ -57,7 +57,7 @@ msgstr "Αποδοχή σύνδεσης από %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Η αίτηση σύνδεσης από %1, είναι σε αναμονή (περιμένει επιβεβαίωση)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (επιφάνεια εργασίας σε κοινή χρήση)"
|
||||
@@ -419,12 +419,12 @@ msgstr ""
|
||||
"Για την εφαρμογή προσθέτου ενδιάμεσης μνήμης, πρέπει να επανεκκινήσετε το "
|
||||
"πρόγραμμα."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Ο απομακρυσμένος χρήστης %1 έχει τώρα συνδεθεί."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Ο απομακρυσμένος χρήστης %1 έχει αποσυνδεθεί."
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2022-01-01 15:48+0000\n"
|
||||
"Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n"
|
||||
"Language-Team: British English <kde-l10n-en_gb@kde.org>\n"
|
||||
@@ -54,7 +54,7 @@ msgstr "Accepted connection from %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Received connection from %1, on hold (waiting for confirmation)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (shared desktop)"
|
||||
@@ -409,12 +409,12 @@ msgstr "Screen capture"
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr "To apply framebuffer plugin setting, you need to restart the program."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "The remote user %1 is now connected."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "The remote user %1 disconnected."
|
||||
|
||||
238
po/eo/krfb.po
238
po/eo/krfb.po
@@ -1,16 +1,13 @@
|
||||
# Translation of krfb into esperanto.
|
||||
# Copyright (C) 2009 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the krfb package.
|
||||
# Axel Rousseau <axel@esperanto-jeunes.org>, 2009.
|
||||
# Oliver Kellogg <okellogg@users.sourceforge.net>, 2023.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"PO-Revision-Date: 2023-11-12 22:59+0100\n"
|
||||
"Last-Translator: Oliver Kellogg <okellogg@users.sourceforge.net>\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2009-11-15 12:06+0100\n"
|
||||
"Last-Translator: Axel Rousseau <axel@esperanto-jeunes.org>\n"
|
||||
"Language-Team: esperanto <kde-i18n-eo@kde.org>\n"
|
||||
"Language: eo\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -22,113 +19,113 @@ msgstr ""
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
msgid "Your names"
|
||||
msgstr "Axel Rousseau,Oliver Kellogg"
|
||||
msgstr "Axel Rousseau"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "EMAIL OF TRANSLATORS"
|
||||
msgid "Your emails"
|
||||
msgstr "axel@esperanto-jeunes.org,okellogg@users.sourceforge.net"
|
||||
msgstr "axel@esperanto-jeunes.org"
|
||||
|
||||
#: connectiondialog.cpp:39
|
||||
#, kde-format
|
||||
msgid "New Connection"
|
||||
msgstr "Nova Konekto"
|
||||
msgstr ""
|
||||
|
||||
#: connectiondialog.cpp:61
|
||||
#, kde-format
|
||||
msgid "Accept Connection"
|
||||
msgstr "Akcepti Konekton"
|
||||
msgstr ""
|
||||
|
||||
#: connectiondialog.cpp:65
|
||||
#, kde-format
|
||||
msgid "Refuse Connection"
|
||||
msgstr "Rifuzi Konekton"
|
||||
msgstr ""
|
||||
|
||||
#: invitationsrfbclient.cpp:69
|
||||
#, kde-format
|
||||
msgid "Accepted connection from %1"
|
||||
msgstr "Akceptita konekto de %1"
|
||||
msgstr ""
|
||||
|
||||
#: invitationsrfbclient.cpp:75
|
||||
#, kde-format
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Ricevita konekto de %1, en atendo (atendante konfirmon)"
|
||||
msgstr ""
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (komunata labortablo)"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: label, entry (startMinimized), group (MainWindow)
|
||||
#: krfb.kcfg:9
|
||||
#, kde-format
|
||||
msgid "Start minimized"
|
||||
msgstr "Komenci minimumigite"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: label, entry (useDefaultPort), group (TCP)
|
||||
#: krfb.kcfg:15
|
||||
#, kde-format
|
||||
msgid "Use the default port for VNC (5900)"
|
||||
msgstr "Uzi la defaŭltan pordon por VNC (5900)"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: label, entry (port), group (TCP)
|
||||
#: krfb.kcfg:19
|
||||
#, kde-format
|
||||
msgid "This is the port on which krfb will listen."
|
||||
msgstr "Ĉi tiu estas la pordo sur kiu krfb aŭskultos."
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_publishService)
|
||||
#. i18n: ectx: label, entry (publishService), group (TCP)
|
||||
#: krfb.kcfg:23 ui/configtcp.ui:16
|
||||
#, kde-format
|
||||
msgid "Announce the service on the local network"
|
||||
msgstr "Anonci la servon en la loka reto"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: label, entry (noWallet), group (Security)
|
||||
#: krfb.kcfg:29
|
||||
#, kde-format
|
||||
msgid "Do not store passwords in KWallet"
|
||||
msgstr "Ne konservi pasvortojn en KWallet"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: label, entry (allowDesktopControl), group (Security)
|
||||
#: krfb.kcfg:33
|
||||
#, kde-format
|
||||
msgid "Allow remote connections to manage the desktop."
|
||||
msgstr "Permesi forajn konektojn administri la labortablon."
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: label, entry (allowUnattendedAccess), group (Security)
|
||||
#: krfb.kcfg:37
|
||||
#, kde-format
|
||||
msgid "Allow connections without an invitation."
|
||||
msgstr "Permesi konektojn sen invito."
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: label, entry (unattendedAccessPassword), group (Security)
|
||||
#. i18n: ectx: label, entry (desktopSharingPassword), group (Security)
|
||||
#: krfb.kcfg:41 krfb.kcfg:44
|
||||
#, kde-format
|
||||
msgid "Password for uninvited connections."
|
||||
msgstr "Pasvorto por neinvititaj konektoj."
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: label, entry (preferredFrameBufferPlugin), group (FrameBuffer)
|
||||
#: krfb.kcfg:49
|
||||
#, kde-format
|
||||
msgid "Preferred Frame Buffer Plugin"
|
||||
msgstr "Preferata Frame Buffer Kromaĵo"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:49
|
||||
#, kde-format
|
||||
msgid "Creating a Virtual Monitor from %1"
|
||||
msgstr "Kreante Virtualan Monitoron de %1"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:80
|
||||
#, kde-format
|
||||
msgid "Remote Virtual Monitor"
|
||||
msgstr "Fora Virtuala Monitoro"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:82
|
||||
#, kde-format
|
||||
msgid "Offer a Virtual Monitor that can be accessed remotely"
|
||||
msgstr "Proponi Virtualan Monitoron alireblan malproksime"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:84 main.cpp:98
|
||||
#, kde-format
|
||||
@@ -141,18 +138,11 @@ msgid ""
|
||||
"(c) 2000, Tridia Corporation\n"
|
||||
"(c) 1999, AT&T Laboratories Boston\n"
|
||||
msgstr ""
|
||||
"(c) 2009-2010, Collabora Ltd.\n"
|
||||
"(c) 2007, Alessandro Praduroux\n"
|
||||
"(c) 2001-2003, Tim Jansen\n"
|
||||
"(c) 2001, Johannes E. Schindelin\n"
|
||||
"(c) 2000-2001, Const Kaplinsky\n"
|
||||
"(c) 2000, Tridia Corporation\n"
|
||||
"(c) 1999, AT&T Laboratories Boston\n"
|
||||
|
||||
#: main-virtualmonitor.cpp:91
|
||||
#, kde-format
|
||||
msgid "Virtual Monitor implementation"
|
||||
msgstr "Realigo de Virtuala Monitoro"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:92 main.cpp:108
|
||||
#, kde-format
|
||||
@@ -167,7 +157,7 @@ msgstr "Alessandro Praduroux"
|
||||
#: main-virtualmonitor.cpp:93 main.cpp:111
|
||||
#, kde-format
|
||||
msgid "KDE4 porting"
|
||||
msgstr "KDE4-portado"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:94 main.cpp:112
|
||||
#, kde-format
|
||||
@@ -197,77 +187,77 @@ msgstr "Const Kaplinsky"
|
||||
#: main-virtualmonitor.cpp:98 main.cpp:116
|
||||
#, kde-format
|
||||
msgid "TightVNC encoder"
|
||||
msgstr "TightVNC-kodilo"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:99 main.cpp:117
|
||||
#, kde-format
|
||||
msgid "Tridia Corporation"
|
||||
msgstr "Tridia Corporation"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:100 main.cpp:118
|
||||
#, kde-format
|
||||
msgid "ZLib encoder"
|
||||
msgstr "ZLib-kodilo"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:101 main.cpp:119
|
||||
#, kde-format
|
||||
msgid "AT&T Laboratories Boston"
|
||||
msgstr "AT&T Laboratorioj Boston"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:102 main.cpp:120
|
||||
#, kde-format
|
||||
msgid "original VNC encoders and protocol design"
|
||||
msgstr "originalaj VNC-kodigiloj kaj protokolo-dezajno"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:108
|
||||
#, kde-format
|
||||
msgid "Logical resolution of the new monitor"
|
||||
msgstr "Logika rezolucio de la nova monitoro"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:108
|
||||
#, kde-format
|
||||
msgid "resolution"
|
||||
msgstr "rezolucio"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:110
|
||||
#, kde-format
|
||||
msgid "Name of the monitor"
|
||||
msgstr "Nomo de la monitoro"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:110
|
||||
#, kde-format
|
||||
msgid "name"
|
||||
msgstr "nomo"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:112
|
||||
#, kde-format
|
||||
msgid "Password for the client to connect to it"
|
||||
msgstr "Pasvorto por la kliento por konekti al ĝi"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:112
|
||||
#, kde-format
|
||||
msgid "password"
|
||||
msgstr "Pasvorto"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:114
|
||||
#, kde-format
|
||||
msgid "The device-pixel-ratio of the device, the scaling factor"
|
||||
msgstr "La aparato-piksela-proporcio de la aparato, la skala faktoro"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:114
|
||||
#, kde-format
|
||||
msgid "dpr"
|
||||
msgstr "dpr"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:116
|
||||
#, kde-format
|
||||
msgid "The port we will be listening to"
|
||||
msgstr "La pordo, kiun ni aŭskultos"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:116
|
||||
#, kde-format
|
||||
msgid "number"
|
||||
msgstr "nombro"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:49
|
||||
#, kde-format
|
||||
@@ -275,13 +265,11 @@ msgid ""
|
||||
"Your X11 Server does not support the required XTest extension version 2.2. "
|
||||
"Sharing your desktop is not possible."
|
||||
msgstr ""
|
||||
"Via X11 Servilo ne subtenas la bezonatan XTest-etendan version 2.2. "
|
||||
"Kunhavigi vian labortablon ne eblas."
|
||||
|
||||
#: main.cpp:51 main.cpp:150
|
||||
#, kde-format
|
||||
msgid "Desktop Sharing Error"
|
||||
msgstr "Eraro pri Labortabla Kundivido"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:94
|
||||
#, kde-format
|
||||
@@ -291,22 +279,22 @@ msgstr "Tabula komunigado"
|
||||
#: main.cpp:96
|
||||
#, kde-format
|
||||
msgid "VNC-compatible server to share desktops"
|
||||
msgstr "VNC-kongrua servilo por kunhavi labortablojn"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:105
|
||||
#, kde-format
|
||||
msgid "George Goldberg"
|
||||
msgstr "Georgo Goldberg"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:106
|
||||
#, kde-format
|
||||
msgid "Telepathy tubes support"
|
||||
msgstr "Telepatiaj tuboj subtenas"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:126
|
||||
#, kde-format
|
||||
msgid "Do not show the invitations management dialog at startup"
|
||||
msgstr "Ne montri la invit-administran dialogon ĉe ekfunkciigo"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:148
|
||||
#, kde-format
|
||||
@@ -314,18 +302,16 @@ msgid ""
|
||||
"Desktop Sharing is not running under an X11 Server or Wayland.\n"
|
||||
"Other display servers are currently not supported."
|
||||
msgstr ""
|
||||
"Labortabla Kundivido ne funkcias sub X11-Servilo aŭ Wayland.\n"
|
||||
"Aliaj ekranserviloj nuntempe ne estas subtenataj."
|
||||
|
||||
#: mainwindow.cpp:52
|
||||
#, kde-format
|
||||
msgid "Storing passwords in config file is insecure!"
|
||||
msgstr "Konservi pasvortojn en agorda dosiero estas nesekura!"
|
||||
msgstr ""
|
||||
|
||||
#: mainwindow.cpp:189
|
||||
#, kde-format
|
||||
msgid "Enter a new password for Unattended Access"
|
||||
msgstr "Enigi novan pasvorton por Senasista Aliro"
|
||||
msgstr ""
|
||||
|
||||
#: mainwindow.cpp:200
|
||||
#, kde-format
|
||||
@@ -333,8 +319,6 @@ msgid ""
|
||||
"Failed to start the krfb server. Desktop sharing will not work. Try setting "
|
||||
"another port in the settings and restart krfb."
|
||||
msgstr ""
|
||||
"Malsukcesis lanĉi la krfb-servilon. Labortabla kunhavigo ne funkcios. Provu "
|
||||
"agordi alian pordon en la agordoj kaj rekomencu krfb."
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QLabel, titleLabel)
|
||||
#. i18n: ectx: property (text), widget (QLabel, titleLabel)
|
||||
@@ -343,7 +327,7 @@ msgstr ""
|
||||
#: ui/mainwidget.ui:86 ui/mainwidget.ui:114
|
||||
#, kde-format
|
||||
msgid "KDE Desktop Sharing"
|
||||
msgstr "KDE Labortabla Kunhavigo"
|
||||
msgstr ""
|
||||
|
||||
#: mainwindow.cpp:224
|
||||
#, kde-format
|
||||
@@ -360,17 +344,6 @@ msgid ""
|
||||
"If your computer is behind a firewall it may have a different address or be "
|
||||
"unreachable for other computers."
|
||||
msgstr ""
|
||||
"Ĉi tiu kampo enhavas la adreson de via komputilo kaj la pordnumeron, "
|
||||
"apartigitajn per dupunkto.\n"
|
||||
"\n"
|
||||
"La adreso estas nur sugesto - vi povas uzi ajnan adreson kiu povas atingi "
|
||||
"vian komputilon.\n"
|
||||
"\n"
|
||||
"La labortabla kundivido provas diveni vian adreson de via reto-agordo, sed "
|
||||
"ne ĉiam sukcesas fari tion.\n"
|
||||
"\n"
|
||||
"Se via komputilo estas malantaŭ fajroŝirmilo ĝi povas havi malsaman adreson "
|
||||
"aŭ esti neatingebla por aliaj komputiloj."
|
||||
|
||||
#: mainwindow.cpp:231
|
||||
#, kde-format
|
||||
@@ -382,12 +355,6 @@ msgid ""
|
||||
"password, desktop sharing access will be granted without explicit "
|
||||
"confirmation."
|
||||
msgstr ""
|
||||
"Ĉiu fora uzanto kun normala labortabla kundivida pasvorto devos esti "
|
||||
"aŭtentikigita.\n"
|
||||
"\n"
|
||||
"Se neakompanata aliro estas ŝaltita, kaj la fora uzanto provizas neatentan "
|
||||
"reĝiman pasvorton, labortabla kunhava aliro estos donita sen eksplicita "
|
||||
"konfirmo."
|
||||
|
||||
#: mainwindow.cpp:249
|
||||
#, kde-format
|
||||
@@ -402,22 +369,22 @@ msgstr "Sekureco"
|
||||
#: mainwindow.cpp:251
|
||||
#, kde-format
|
||||
msgid "Screen capture"
|
||||
msgstr "Ekrankapto"
|
||||
msgstr ""
|
||||
|
||||
#: mainwindow.cpp:256
|
||||
#, kde-format
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr "Por apliki framebuffer kromprogramon, vi devas rekomenci la programon."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "La fora uzanto %1 nun estas konektita."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "La fora uzanto %1 malkonektis."
|
||||
msgstr ""
|
||||
|
||||
#: trayicon.cpp:56
|
||||
#, kde-format
|
||||
@@ -427,34 +394,34 @@ msgstr "Malkonekti"
|
||||
#: trayicon.cpp:62
|
||||
#, kde-format
|
||||
msgid "Enable Remote Control"
|
||||
msgstr "Ebligi Teleregilon"
|
||||
msgstr ""
|
||||
|
||||
#: trayicon.cpp:101 trayicon.cpp:133
|
||||
#, kde-format
|
||||
msgid "Desktop Sharing - disconnected"
|
||||
msgstr "Labortabla Kunhavigo - malkonektita"
|
||||
msgstr ""
|
||||
|
||||
#: trayicon.cpp:117 trayicon.cpp:137
|
||||
#, kde-format
|
||||
msgid "Desktop Sharing - connected with %1"
|
||||
msgstr "Kunhavigo de labortablo - konektita kun %1"
|
||||
msgstr ""
|
||||
|
||||
#: trayicon.cpp:120
|
||||
#, kde-format
|
||||
msgid "Desktop Sharing - connected"
|
||||
msgstr "Labortabla Kundivido - konektita"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (windowTitle), widget (QWidget, Framebuffer)
|
||||
#: ui/configframebuffer.ui:14
|
||||
#, kde-format
|
||||
msgid "Framebuffer"
|
||||
msgstr "Framebuffer"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, label)
|
||||
#: ui/configframebuffer.ui:22
|
||||
#, kde-format
|
||||
msgid "Preferred frameb&uffer plugin:"
|
||||
msgstr "Preferata aldonaĵo Frameb&ofer:"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, helpText)
|
||||
#: ui/configframebuffer.ui:47
|
||||
@@ -465,34 +432,30 @@ msgid ""
|
||||
"style=\" font-weight:600;\">qt</span> plugin is a safe fallback, if for some "
|
||||
"reason others don't work. But also it is very slow.</p></body></html>"
|
||||
msgstr ""
|
||||
"<html><head/><body><p>Kiam oni uzas x11, la kromprogramo <span style=\" font-"
|
||||
"weight:600;\">xcb</span> estu preferinda, ĉar ĝi estas pli efika.<br /><span "
|
||||
"style=\" font-weight:600;\">qt</span> kromaĵo estas sekura rezervilo, se ial "
|
||||
"aliaj ne funkcias. Sed ankaŭ ĝi estas tre malrapida.</p></body></html>"
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowDesktopControl)
|
||||
#: ui/configsecurity.ui:17
|
||||
#, kde-format
|
||||
msgid "Allow remote connections to control your desktop"
|
||||
msgstr "Permesi forajn konektojn regi vian labortablon"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_noWallet)
|
||||
#: ui/configsecurity.ui:27
|
||||
#, kde-format
|
||||
msgid "Do not store passwords using KDE wallet"
|
||||
msgstr "Ne konservi pasvortojn per KDE-monujo"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_useDefaultPort)
|
||||
#: ui/configtcp.ui:26
|
||||
#, kde-format
|
||||
msgid "Use default port"
|
||||
msgstr "Uzi defaŭltan pordon"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, label)
|
||||
#: ui/configtcp.ui:50
|
||||
#, kde-format
|
||||
msgid "Listening port:"
|
||||
msgstr "Aŭskultanta pordo:"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, TextLabel5)
|
||||
#: ui/connectionwidget.ui:47
|
||||
@@ -507,14 +470,12 @@ msgid ""
|
||||
"Somebody is requesting a connection to your computer. Granting this will "
|
||||
"allow the remote user to watch your desktop. "
|
||||
msgstr ""
|
||||
"Iu petas konekton al via komputilo. Doni ĉi tion permesos al la fora uzanto "
|
||||
"rigardi vian labortablon."
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, TextLabel1)
|
||||
#: ui/connectionwidget.ui:102
|
||||
#, kde-format
|
||||
msgid "Remote system:"
|
||||
msgstr "Fora sistemo:"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, remoteHost)
|
||||
#: ui/connectionwidget.ui:118
|
||||
@@ -531,16 +492,12 @@ msgid ""
|
||||
"careful. When the option is disabled the remote user can only watch your "
|
||||
"screen."
|
||||
msgstr ""
|
||||
"Se vi ŝaltas ĉi tiun opcion, la fora uzanto povas enigi klavopremojn kaj uzi "
|
||||
"vian musmontrilon. Ĉi tio donas al ili plenan kontrolon super via komputilo, "
|
||||
"do atentu. Kiam la opcio estas malŝaltita, la fora uzanto povas nur rigardi "
|
||||
"vian ekranon."
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, cbAllowRemoteControl)
|
||||
#: ui/connectionwidget.ui:139
|
||||
#, kde-format
|
||||
msgid "Allow remote user to &control keyboard and mouse"
|
||||
msgstr "Permesi al fora uzanto ®i klavaron kaj muson"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, aboutLabel)
|
||||
#: ui/mainwidget.ui:117
|
||||
@@ -549,38 +506,36 @@ msgid ""
|
||||
"KDE Desktop Sharing allows you to grant permission to someone at a remote "
|
||||
"location for viewing and possibly controlling your desktop."
|
||||
msgstr ""
|
||||
"KDE Labortabla Kundivido permesas al vi doni permeson al iu en fora loko por "
|
||||
"vidi kaj eble kontroli vian labortablon."
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QCheckBox, enableSharingCheckBox)
|
||||
#: ui/mainwidget.ui:145
|
||||
#, kde-format
|
||||
msgid "Starts/Stops Remote Desktop Sharing"
|
||||
msgstr "Lanĉas/Ĉesigas Malproksiman Labortablan Kunhavigon"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, enableSharingCheckBox)
|
||||
#: ui/mainwidget.ui:148
|
||||
#, kde-format
|
||||
msgid "&Enable Desktop Sharing"
|
||||
msgstr "&Ebligi Labortablan Kundividon"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (title), widget (QGroupBox, detailsGroupBox)
|
||||
#: ui/mainwidget.ui:170
|
||||
#, kde-format
|
||||
msgid "Connection Details"
|
||||
msgstr "Detaloj pri Konekto"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, addressLabel)
|
||||
#: ui/mainwidget.ui:193
|
||||
#, kde-format
|
||||
msgid "&Address"
|
||||
msgstr "&Adreso"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QToolButton, addressAboutButton)
|
||||
#: ui/mainwidget.ui:214
|
||||
#, kde-format
|
||||
msgid "More about this address"
|
||||
msgstr "Pli pri ĉi tiu adreso"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QToolButton, addressAboutButton)
|
||||
#. i18n: ectx: property (text), widget (QToolButton, unattendedAboutButton)
|
||||
@@ -596,8 +551,6 @@ msgid ""
|
||||
"Address required by remote users to connect to your desktop. Click about "
|
||||
"button on the right for more info."
|
||||
msgstr ""
|
||||
"Adreso postulata de foraj uzantoj por konekti al via labortablo. Alklaku pri "
|
||||
"la butono dekstre por pliaj informoj."
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, addressDisplayLabel)
|
||||
#: ui/mainwidget.ui:238
|
||||
@@ -609,13 +562,13 @@ msgstr "127.0.0.1 : 5900"
|
||||
#: ui/mainwidget.ui:269
|
||||
#, kde-format
|
||||
msgid "&Password"
|
||||
msgstr "&Pasvorto"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QToolButton, passwordEditButton)
|
||||
#: ui/mainwidget.ui:290
|
||||
#, kde-format
|
||||
msgid "Edit/Save Desktop Sharing Password"
|
||||
msgstr "Redakti/Konservi labortablan kundividan pasvorton"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QToolButton, passwordEditButton)
|
||||
#: ui/mainwidget.ui:293
|
||||
@@ -630,14 +583,12 @@ msgid ""
|
||||
"Password required by remote users to connect to your desktop. Click the edit "
|
||||
"button on the right to change password."
|
||||
msgstr ""
|
||||
"Pasvorto postulata de foraj uzantoj por konekti al via labortablo. Alklaku "
|
||||
"la redaktan butonon dekstre por ŝanĝi pasvorton."
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, passwordDisplayLabel)
|
||||
#: ui/mainwidget.ui:314
|
||||
#, kde-format
|
||||
msgid "TemporaryPassword"
|
||||
msgstr "Provizora Pasvorto"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QGroupBox, unattendedGroupBox)
|
||||
#. i18n: ectx: property (text), widget (QLabel, unattendedAboutLabel)
|
||||
@@ -647,14 +598,12 @@ msgid ""
|
||||
"Unattended Access allows a remote user with the password to gain control to "
|
||||
"your desktop without your explicit confirmation."
|
||||
msgstr ""
|
||||
"Senatenata Aliro permesas al fora uzanto kun la pasvorto akiri kontrolon al "
|
||||
"via labortablo sen via eksplicita konfirmo."
|
||||
|
||||
#. i18n: ectx: property (title), widget (QGroupBox, unattendedGroupBox)
|
||||
#: ui/mainwidget.ui:343
|
||||
#, kde-format
|
||||
msgid "Unattended Access"
|
||||
msgstr "Senatenata Aliro"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QLabel, unattendedAboutLabel)
|
||||
#: ui/mainwidget.ui:375
|
||||
@@ -664,15 +613,12 @@ msgid ""
|
||||
"your desktop without your explicit confirmation. Click \"About\" button on "
|
||||
"right to know more."
|
||||
msgstr ""
|
||||
"Senatenata Aliro permesas al fora uzanto kun la pasvorto akiri kontrolon al "
|
||||
"via labortablo sen via eksplicita konfirmo. Alklaku la butonon \"Pri\" "
|
||||
"dekstre por scii pli."
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QToolButton, unattendedAboutButton)
|
||||
#: ui/mainwidget.ui:394
|
||||
#, kde-format
|
||||
msgid "Know more about Unattended Access"
|
||||
msgstr "Ekscii pli pri Senasista Aliro"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QCheckBox, enableUnattendedCheckBox)
|
||||
#: ui/mainwidget.ui:437
|
||||
@@ -681,23 +627,43 @@ msgid ""
|
||||
"Starts/Stops unattended access to your desktop. Click on button on right to "
|
||||
"change password, and \"About\" button to know more."
|
||||
msgstr ""
|
||||
"Lanĉas/Ĉesigas neatenditan aliron al via labortablo. Alklaku la butonon "
|
||||
"dekstre por ŝanĝi pasvorton, kaj la butonon \"Pri\" por scii pli."
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, enableUnattendedCheckBox)
|
||||
#: ui/mainwidget.ui:440
|
||||
#, kde-format
|
||||
msgid "Enable &Unattended Access"
|
||||
msgstr "Ebligi Senasistan Alir&on"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QPushButton, unattendedPasswordButton)
|
||||
#: ui/mainwidget.ui:465
|
||||
#, kde-format
|
||||
msgid "Change password for Unattended Access"
|
||||
msgstr "Ŝanĝi pasvorton por Senasista Aliro"
|
||||
msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QPushButton, unattendedPasswordButton)
|
||||
#: ui/mainwidget.ui:468
|
||||
#, kde-format
|
||||
msgid "&Change Unattended Password"
|
||||
msgstr "&Ŝanĝi Senasistan Pasvorton"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Confirmation"
|
||||
#~ msgstr "Konfirmo"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Delete All"
|
||||
#~ msgstr "Forigu arĥivon"
|
||||
|
||||
#~ msgid "&Delete"
|
||||
#~ msgstr "&Forigi"
|
||||
|
||||
#~ msgid "Ian Reinhart Geiser"
|
||||
#~ msgstr "Ian Reinhart Geiser"
|
||||
|
||||
#~ msgid "DCOP interface"
|
||||
#~ msgstr "DCOP-interfaco"
|
||||
|
||||
#~ msgid "Jason Spisak"
|
||||
#~ msgstr "Jason Spisak"
|
||||
|
||||
#~ msgid "Karl Vogel"
|
||||
#~ msgstr "Karl Vogel"
|
||||
|
||||
@@ -227,7 +227,7 @@
|
||||
>Salir de &krfb;</title>
|
||||
|
||||
<para
|
||||
>Si cierra la ventana principal de &krfb; pulsando el icono de cierre de la ventana o usando el atajo de teclado <keycombo action="simul"
|
||||
>Si cierra la ventana principal de &krfb; pulsando el icono de cierre de la ventana o usando el acceso rápido de teclado <keycombo action="simul"
|
||||
>&Alt;<keycap
|
||||
>F4</keycap
|
||||
></keycombo
|
||||
|
||||
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2021-10-31 21:56+0100\n"
|
||||
"Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n"
|
||||
"Language-Team: Spanish <kde-l10n-es@kde.org>\n"
|
||||
@@ -59,7 +59,7 @@ msgstr "Se ha aceptado la conexión de %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Recibida conexión desde %1, a la espera (de una confirmación)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (escritorio compartido)"
|
||||
@@ -415,12 +415,12 @@ msgstr ""
|
||||
"Necesita reiniciar el programa para aplicar las preferencias del complemento "
|
||||
"de «framebuffer»."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "El usuario remoto %1 ha cerrado la conexión."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "El usuario remoto %1 se ha desconectado."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2019-11-09 14:59+0200\n"
|
||||
"Last-Translator: Marek Laane <qiilaq69@gmail.com>\n"
|
||||
"Language-Team: Estonian <kde-et@lists.linux.ee>\n"
|
||||
@@ -53,7 +53,7 @@ msgstr "Nõus %1 ühendusega"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Saadud %1 ühendus, ootel (ootab kinnitust)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (jagatud töölaud)"
|
||||
@@ -410,12 +410,12 @@ msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
"Kaadripuhvri seadistuste rakendamiseks tuleb programm uuesti käivitada."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Kaugkasutaja %1 on nüüd ühendatud."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Kaugkasutaja %1 ei ole enam ühendatud."
|
||||
|
||||
@@ -14,7 +14,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2022-08-04 07:36+0200\n"
|
||||
"Last-Translator: Iñigo Salvador Azurmendi <xalba@ni.eus>\n"
|
||||
"Language-Team: Basque <kde-i18n-eu@kde.org>\n"
|
||||
@@ -62,7 +62,7 @@ msgstr "%1(e)tik datorren onartu da"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Konexioa jaso da %1(e)tik, itxaroten (berrespenaren zain)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (mahaigain partekatua)"
|
||||
@@ -419,12 +419,12 @@ msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
"«framebuffer» plugin ezarpena ezartzeko, prgrama berrabiarazi behar duzu."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Urruneko %1 erabiltzailea orain konektatuta dago."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Urruneko %1 erabiltzailea deskonektatu da."
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2007-08-19 12:41+0330\n"
|
||||
"Last-Translator: Nazanin Kazemi <kazemi@itland.ir>\n"
|
||||
"Language-Team: Persian <kde-i18n-fa@kde.org>\n"
|
||||
@@ -15,7 +15,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
@@ -53,7 +53,7 @@ msgstr "اتصال ناخوانده از %1 پذیرفته شد."
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "اتصال از %1 دریافت شد، منتظر بمانید )در حال انتظار برای تأیید("
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 ) رومیزی مشترک("
|
||||
@@ -401,13 +401,13 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "کاربر دور، اتصال را بسته است."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
@@ -14,7 +14,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2021-11-23 16:45+0200\n"
|
||||
"Last-Translator: Tommi Nieminen <translator@legisign.org>\n"
|
||||
"Language-Team: Finnish <kde-i18n-doc@kde.org>\n"
|
||||
@@ -63,7 +63,7 @@ msgstr "Hyväksyttiin yhteys osoitteesta %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Saatiin yhteys osoitteesta %1, pidossa (odottaa varmistusta)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (jaettu työpöytä)"
|
||||
@@ -419,12 +419,12 @@ msgstr ""
|
||||
"Kehyspuskuriliitännäisen asetukset tulevat voimaan uudelleenkäynnistyksen "
|
||||
"jälkeen."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Etäkäyttäjä %1 on nyt luonut yhteyden."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Etäkäyttäjä %1 katkaisi yhteyden."
|
||||
|
||||
@@ -12,21 +12,21 @@
|
||||
# Amine Say <aminesay@yahoo.fr>, 2008, 2009.
|
||||
# Guillaume Pujol <guill.p@gmail.com>, 2010.
|
||||
# Sebastien Renard <renard@kde.org>, 2013, 2014, 2015.
|
||||
# Xavier Besnard <xavier.besnard@kde.org>, 2013, 2021.
|
||||
# xavier <xavier.besnard@neuf.fr>, 2013, 2021.
|
||||
# Vincent Pinon <vpinon@kde.org>, 2017.
|
||||
# Simon Depiets <sdepiets@gmail.com>, 2019.
|
||||
# Xavier Besnard <xavier.besnard@kde.org>, 2023.
|
||||
#
|
||||
# invite, 2008.
|
||||
# amine say, 2011.
|
||||
# Xavier BESNARD <xavier.besnard]neuf.fr>, 2023.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2023-01-09 16:44+0100\n"
|
||||
"Last-Translator: Xavier BESNARD <xavier.besnard]neuf.fr>\n"
|
||||
"Language-Team: French <kde-francophone@kde.org>\n"
|
||||
"Language-Team: fr\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -74,7 +74,7 @@ msgstr "Connexion acceptée depuis %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Connexion reçue depuis %1, suspendue (en attente de confirmation)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (bureau partagé)"
|
||||
@@ -436,12 +436,12 @@ msgstr ""
|
||||
"Vous devez redémarrer le programme pour appliquer la configuration du module "
|
||||
"« framebuffer »"
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "L'utilisateur distant %1 est maintenant connecté."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "L'utilisateur distant %1 s'est déconnecté."
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kdenetwork/krfb.po\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2004-12-03 14:52-0500\n"
|
||||
"Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
|
||||
"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
|
||||
@@ -52,7 +52,7 @@ msgstr "Glacadh le ceangal ó %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Fuarthas ceangal ó %1, ar fanacht (ag feitheamh le cinntiú)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (deasc chomhroinnte)"
|
||||
@@ -416,12 +416,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Tá úsáideoir cianda %1 ceangailte anois."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Tá úsáideoir cianda %1 dícheangailte anois."
|
||||
|
||||
@@ -8,21 +8,20 @@
|
||||
# Xosé <xosecalvo@gmail.com>, 2009.
|
||||
# Marce Villarino <mvillarino@kde-espana.es>, 2012, 2013, 2014.
|
||||
# Adrian Chaves Fernandez <adriyetichaves@gmail.com>, 2012, 2015, 2017.
|
||||
# Adrián Chaves (Gallaecio) <adrian@chaves.io>, 2017, 2018, 2019, 2023.
|
||||
# Adrián Chaves (Gallaecio) <adrian@chaves.io>, 2017, 2018, 2019.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"PO-Revision-Date: 2023-04-30 15:46+0200\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2019-07-13 12:48+0200\n"
|
||||
"Last-Translator: Adrián Chaves (Gallaecio) <adrian@chaves.io>\n"
|
||||
"Language-Team: Galician <proxecto@trasno.gal>\n"
|
||||
"Language-Team: Galician <kde-i18n-doc@kde.org>\n"
|
||||
"Language: gl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"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.0\n"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
@@ -59,7 +58,7 @@ msgstr "Aceptouse unha conexión de %1."
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Recibiuse unha conexión desde %1, retida (á espera de confirmación)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (escritorio compartido)"
|
||||
@@ -74,7 +73,7 @@ msgstr "Iniciar minimizado."
|
||||
#: krfb.kcfg:15
|
||||
#, kde-format
|
||||
msgid "Use the default port for VNC (5900)"
|
||||
msgstr "Usar o porto predeterminado para VNC (5900)"
|
||||
msgstr "Empregar o porto predeterminado para VNC (5900)"
|
||||
|
||||
#. i18n: ectx: label, entry (port), group (TCP)
|
||||
#: krfb.kcfg:19
|
||||
@@ -123,17 +122,17 @@ msgstr "Complemento de búfer de fotograma preferido"
|
||||
#: main-virtualmonitor.cpp:49
|
||||
#, kde-format
|
||||
msgid "Creating a Virtual Monitor from %1"
|
||||
msgstr "Creando un monitor virtual desde %1"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:80
|
||||
#, kde-format
|
||||
msgid "Remote Virtual Monitor"
|
||||
msgstr "Monitor virtual remoto"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:82
|
||||
#, kde-format
|
||||
msgid "Offer a Virtual Monitor that can be accessed remotely"
|
||||
msgstr "Ofrecer un monitor virtual ao que se pode acceder en remoto"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:84 main.cpp:98
|
||||
#, kde-format
|
||||
@@ -157,7 +156,7 @@ msgstr ""
|
||||
#: main-virtualmonitor.cpp:91
|
||||
#, kde-format
|
||||
msgid "Virtual Monitor implementation"
|
||||
msgstr "Implementación do monitor virtual"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:92 main.cpp:108
|
||||
#, kde-format
|
||||
@@ -227,52 +226,54 @@ msgstr "codificadores orixinais de VNC e deseño do protocolo"
|
||||
#: main-virtualmonitor.cpp:108
|
||||
#, kde-format
|
||||
msgid "Logical resolution of the new monitor"
|
||||
msgstr "Resolución lóxica do novo monitor"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:108
|
||||
#, kde-format
|
||||
msgid "resolution"
|
||||
msgstr "resolución"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:110
|
||||
#, kde-format
|
||||
msgid "Name of the monitor"
|
||||
msgstr "Nome do monitor"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:110
|
||||
#, kde-format
|
||||
msgid "name"
|
||||
msgstr "nome"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:112
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Password for uninvited connections."
|
||||
msgid "Password for the client to connect to it"
|
||||
msgstr "Contrasinal para que o cliente se conecte a el"
|
||||
msgstr "Contrasinal das conexións sen convite."
|
||||
|
||||
#: main-virtualmonitor.cpp:112
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "&Password"
|
||||
msgid "password"
|
||||
msgstr "contrasinal"
|
||||
msgstr "&Contrasinal:"
|
||||
|
||||
#: main-virtualmonitor.cpp:114
|
||||
#, kde-format
|
||||
msgid "The device-pixel-ratio of the device, the scaling factor"
|
||||
msgstr "A taxa de píxel de dispositivo do dispositivo, o factor de escala"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:114
|
||||
#, kde-format
|
||||
msgid "dpr"
|
||||
msgstr "dpr"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:116
|
||||
#, kde-format
|
||||
msgid "The port we will be listening to"
|
||||
msgstr "O porto de entrada"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:116
|
||||
#, kde-format
|
||||
msgid "number"
|
||||
msgstr "número"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:49
|
||||
#, kde-format
|
||||
@@ -311,7 +312,7 @@ msgstr "Compatibilidade cos tubos de Telepathy."
|
||||
#: main.cpp:126
|
||||
#, kde-format
|
||||
msgid "Do not show the invitations management dialog at startup"
|
||||
msgstr "Non amosar o diálogo de xestión dos convites ao comezo"
|
||||
msgstr "Non mostrar o diálogo de xestión dos convites ao comezo"
|
||||
|
||||
#: main.cpp:148
|
||||
#, kde-format
|
||||
@@ -339,9 +340,8 @@ msgid ""
|
||||
"Failed to start the krfb server. Desktop sharing will not work. Try setting "
|
||||
"another port in the settings and restart krfb."
|
||||
msgstr ""
|
||||
"Non foi posíbel iniciar o servidor krfb. Non se poderá compartir o "
|
||||
"escritorio. Probe a escoller un porto distinto na configuración e reinicie "
|
||||
"krfb."
|
||||
"Non se puido iniciar o servidor krfb. Non se poderá compartir o escritorio. "
|
||||
"Probe a escoller un porto distinto na configuración e reinicie krfb."
|
||||
|
||||
#. i18n: ectx: property (whatsThis), widget (QLabel, titleLabel)
|
||||
#. i18n: ectx: property (text), widget (QLabel, titleLabel)
|
||||
@@ -404,7 +404,7 @@ msgstr "Rede"
|
||||
#: mainwindow.cpp:250
|
||||
#, kde-format
|
||||
msgid "Security"
|
||||
msgstr "Seguridade"
|
||||
msgstr "Seguranza"
|
||||
|
||||
#: mainwindow.cpp:251
|
||||
#, kde-format
|
||||
@@ -418,12 +418,12 @@ msgstr ""
|
||||
"Para aplicar a configuración do complemento de búfer de fotogramas ten que "
|
||||
"reiniciar o programa."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "O usuario remoto %1 conectouse."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "O usuario remoto %1 desconectouse."
|
||||
@@ -477,7 +477,7 @@ msgstr ""
|
||||
"<html><head/><body> <p>Ao usar x11 debería preferirse o complemento <span "
|
||||
"style=\" font-weight:600;\">xcb</span>, porque ten un mellor rendemento.<br/"
|
||||
"> O complemento <span style=\" font-weight:600;\">qt</span> é unha "
|
||||
"alternativa de seguridade, se por algún motivo non funcionan outros "
|
||||
"alternativa de seguranza, se por algún motivo non funcionan outros "
|
||||
"complementos. Pero é moi lento.</p> </body></html>"
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, kcfg_allowDesktopControl)
|
||||
@@ -496,7 +496,7 @@ msgstr "Non almacenar os contrasinais usando a carteira de KDE"
|
||||
#: ui/configtcp.ui:26
|
||||
#, kde-format
|
||||
msgid "Use default port"
|
||||
msgstr "Usar o porto predeterminado"
|
||||
msgstr "Empregar o porto predeterminado"
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, label)
|
||||
#: ui/configtcp.ui:50
|
||||
@@ -542,7 +542,7 @@ msgid ""
|
||||
"screen."
|
||||
msgstr ""
|
||||
"Se sinala esta opción, o usuario remoto pode inserir polo teclado e usar o "
|
||||
"rato. Isto dálle control completo sobre o computador, así que teña coidado. "
|
||||
"rato. Isto dalle control completo sobre o computador, así que teña coidado. "
|
||||
"Cando a opción está desactivada, o usuario remoto só poderá ver a pantalla."
|
||||
|
||||
#. i18n: ectx: property (text), widget (QCheckBox, cbAllowRemoteControl)
|
||||
@@ -643,7 +643,6 @@ msgstr ""
|
||||
"Contrasinal que os usuario remotos necesitan para conectar ao seu "
|
||||
"escritorio. Prema o botón «Editar» da dereita para cambiar o contrasinal."
|
||||
|
||||
# well-spelled: ContrasinalTemporal
|
||||
#. i18n: ectx: property (text), widget (QLabel, passwordDisplayLabel)
|
||||
#: ui/mainwidget.ui:314
|
||||
#, kde-format
|
||||
|
||||
@@ -15,7 +15,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2017-05-16 07:03-0400\n"
|
||||
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
|
||||
"Language-Team: hebrew <kde-l10n-he@kde.org>\n"
|
||||
@@ -24,8 +24,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Zanata 3.9.6\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
|
||||
"n % 10 == 0) ? 2 : 3));\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
@@ -62,7 +61,7 @@ msgstr "ההתחברות ללא הזמנה מ-%1 אושרה"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "נתקבלה התחברות מ-%1, בהמתנה (ממתין לאישור)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (שולחנות עבודה משותפים)"
|
||||
@@ -389,12 +388,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "המשתמש המרוחק סגר את החיבור."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "המשתמש המרוחק סגר את החיבור."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2008-01-09 17:12+0530\n"
|
||||
"Last-Translator: Ravishankar Shrivastava <raviratlami@yahoo.com>\n"
|
||||
"Language-Team: Hindi <indlinux-hindi@lists.sourceforge.net>\n"
|
||||
@@ -54,7 +54,7 @@ msgstr "%1 से बिन बुलाए कनेक्शन स्वी
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr " %1 से कनेक्शन मिला, होल्ड पर रखा (पुष्टि के लिए इंतजार किया जा रहा है)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (साझेदारी डेस्कटॉप)"
|
||||
@@ -400,13 +400,13 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "रिमोट उपयोक्ता ने कनेक्शन बन्द कर दिया."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2009-02-26 22:21+0530\n"
|
||||
"Last-Translator: Ravishankar Shrivastava <raviratlami@aol.in>\n"
|
||||
"Language-Team: Hindi <kde-i18n-doc@lists.kde.org>\n"
|
||||
@@ -55,7 +55,7 @@ msgstr "%1 से बिन बुलाए कनेक्सन स्वी
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr " %1 से कनेक्सन मिलिस, होल्ड मं रखे (पुस्टि बर इंतजार करत हे)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (साझेदारी डेस्कटाप)"
|
||||
@@ -399,13 +399,13 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "रिमोट कमइया हर कनेक्सन बन्द कर दिस."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb 0\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2010-02-10 22:40+0100\n"
|
||||
"Last-Translator: Marko Dimjasevic <marko@dimjasevic.net>\n"
|
||||
"Language-Team: Croatian <kde-croatia-list@lists.sourceforge.net>\n"
|
||||
@@ -61,7 +61,7 @@ msgstr "Prihvaćena je nepozvana veza od %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Primljena veza od %1, na čekanju (čekanje potvrde)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (dijeljena radna površina)"
|
||||
@@ -425,12 +425,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Udaljeni korisnik %1 je spojen."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user %1 is now connected."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: desktop_kdebase\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2008-11-06 22:08+0100\n"
|
||||
"Last-Translator: Eduard Werner <edi.werner@gmx.de>\n"
|
||||
"Language-Team: en_US <kde-i18n-doc@lists.kde.org>\n"
|
||||
@@ -53,7 +53,7 @@ msgstr "Zwjazam so ze serverom %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr ""
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr ""
|
||||
@@ -378,12 +378,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr ""
|
||||
|
||||
@@ -2,31 +2,30 @@
|
||||
# Tamas Szanto <taszanto@gmail.com>, 2002.
|
||||
# Kristóf Kiszel <ulysses@kubuntu.org>, 2012.
|
||||
# Balázs Úr <urbalazs@gmail.com>, 2013, 2014.
|
||||
# SPDX-FileCopyrightText: 2024 Kristof Kiszel <ulysses@fsf.hu>
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: KDE 4.3\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"PO-Revision-Date: 2024-02-13 11:40+0100\n"
|
||||
"Last-Translator: Kristof Kiszel <ulysses@fsf.hu>\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2014-06-15 15:24+0200\n"
|
||||
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
|
||||
"Language-Team: Hungarian <kde-l10n-hu@kde.org>\n"
|
||||
"Language: hu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Lokalize 24.01.95\n"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
msgid "Your names"
|
||||
msgstr "Kiszel Kristóf"
|
||||
msgstr "Kiszel Kristóf,Szántó Tamás"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "EMAIL OF TRANSLATORS"
|
||||
msgid "Your emails"
|
||||
msgstr "ulysses@fsf.hu"
|
||||
msgstr "ulysses@kubuntu.org,taszanto@gmail.com"
|
||||
|
||||
#: connectiondialog.cpp:39
|
||||
#, kde-format
|
||||
@@ -55,7 +54,7 @@ msgstr ""
|
||||
"Csatlakozási kísérlet történt innen: %1, a kapcsolat felfüggesztve "
|
||||
"(várakozás megerősítésre)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (megosztott asztal)"
|
||||
@@ -241,14 +240,16 @@ msgid "name"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:112
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Password for uninvited connections."
|
||||
msgid "Password for the client to connect to it"
|
||||
msgstr "Jelszó a klienshez, amelyhez csatlakozni kíván"
|
||||
msgstr "Meghívó nélküli kapcsolat jelszava."
|
||||
|
||||
#: main-virtualmonitor.cpp:112
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "&Password"
|
||||
msgid "password"
|
||||
msgstr "jelszó"
|
||||
msgstr "&Jelszó"
|
||||
|
||||
#: main-virtualmonitor.cpp:114
|
||||
#, kde-format
|
||||
@@ -290,9 +291,10 @@ msgid "Desktop Sharing"
|
||||
msgstr "Asztalmegosztó"
|
||||
|
||||
#: main.cpp:96
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "VNC-compatible server to share KDE desktops"
|
||||
msgid "VNC-compatible server to share desktops"
|
||||
msgstr "VNC-kompatibilis kiszolgáló asztalmegosztáshoz"
|
||||
msgstr "VNC-kompatibilis szolgáltatás a KDE asztal megosztásához"
|
||||
|
||||
#: main.cpp:105
|
||||
#, kde-format
|
||||
@@ -403,12 +405,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "A távoli felhasználó (%1) sikeresen csatlakozott."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "A(z) %1 távoli felhasználó megszakította a kapcsolatot."
|
||||
@@ -446,9 +448,10 @@ msgstr ""
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, label)
|
||||
#: ui/configframebuffer.ui:22
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Preferred Frame Buffer Plugin"
|
||||
msgid "Preferred frameb&uffer plugin:"
|
||||
msgstr "Elsődleges frameb&uffer bővítmény:"
|
||||
msgstr "Elsődleges keretpuffer-modul"
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, helpText)
|
||||
#: ui/configframebuffer.ui:47
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2021-11-03 14:22+0100\n"
|
||||
"Last-Translator: giovanni <g.sora@tiscali.it>\n"
|
||||
"Language-Team: Interlingua <kde-i18n-doc@kde.org>\n"
|
||||
@@ -52,7 +52,7 @@ msgstr "Connexion acceptate ex %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Connexion recipite ex %1, occupate (pausante per confirmation)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (scriptorio compartite)"
|
||||
@@ -409,12 +409,12 @@ msgstr ""
|
||||
"Per applicar preferentia de plugin de framebuffer, tu necessita restartar le "
|
||||
"programma."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Le usator remote %1 es hora connectite."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Le usator remote %1 es disconnectite."
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2019-07-19 03:20+0700\n"
|
||||
"Last-Translator: Wantoyo <wantoyek@gmail.com>\n"
|
||||
"Language-Team: Indonesian <kde-i18n-doc@kde.org>\n"
|
||||
@@ -51,7 +51,7 @@ msgstr "Koneksi disetujui dari %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Diperoleh koneksi dari %1, masih tertahan (menunggu konfirmasi)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (membagikan desktop)"
|
||||
@@ -407,12 +407,12 @@ msgstr ""
|
||||
"Untuk menerapkan pengaturan plugin framebuffer, Anda perlu memulai ulang "
|
||||
"program."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Pengguna %1 jarak jauh sekarang terkoneksi."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Pengguna %1 jarak jauh terdiskoneksi."
|
||||
|
||||
@@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2010-05-31 12:11+0000\n"
|
||||
"Last-Translator: Sveinn í Felli <sveinki@nett.is>\n"
|
||||
"Language-Team: Icelandic <kde-isl@molar.is>\n"
|
||||
@@ -61,7 +61,7 @@ msgstr "Samþykkti óboðna tengingu frá %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Fékk uppkall frá %1, á bið (bíður eftir staðfestingu)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (miðlað skjáborð)"
|
||||
@@ -414,13 +414,13 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Fjarnotandi hefur lokað tengingunni."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
@@ -10,7 +10,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2021-11-24 23:35+0100\n"
|
||||
"Last-Translator: Luigi Toscano <luigi.toscano@tiscali.it>\n"
|
||||
"Language-Team: Italian <kde-i18n-it@kde.org>\n"
|
||||
@@ -56,7 +56,7 @@ msgstr "Connessione accettata da %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Ricevuta connessione da %1, fermo (attesa conferma)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (desktop condiviso)"
|
||||
@@ -416,12 +416,12 @@ msgstr ""
|
||||
"Per applicare le impostazioni dell'estensione framebuffer devi riavviare "
|
||||
"l'applicazione."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "L'utente remoto %1 è ora connesso."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "L'utente remoto %1 si è disconnesso."
|
||||
|
||||
@@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2019-09-23 14:21+0900\n"
|
||||
"Last-Translator: Tomohiro Hyakutake <tomhioo@outlook.jp>\n"
|
||||
"Language-Team: Japanese <kde-i18n-doc@kde.org>\n"
|
||||
@@ -20,7 +20,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Lokalize 19.08.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Accelerator-Marker: &\n"
|
||||
"X-Text-Markup: kde4\n"
|
||||
|
||||
@@ -60,7 +60,7 @@ msgstr "招待していない %1 からの接続を許可しました"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "%1 から接続要求を受け取りました。保留中です (確認待ち)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (共有されたデスクトップ)"
|
||||
@@ -427,12 +427,12 @@ msgstr ""
|
||||
"フレームバッファ プラグインの変更を適用するには、プログラムの再起動が必要で"
|
||||
"す。"
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "リモートユーザ %1 が接続しました。"
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user %1 is now connected."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"PO-Revision-Date: 2023-02-12 06:06+0100\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2023-02-13 09:12+0100\n"
|
||||
"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
|
||||
"Language-Team: Georgian <kde-i18n-doc@kde.org>\n"
|
||||
"Language: ka\n"
|
||||
@@ -53,7 +53,7 @@ msgstr "%1-დან კავშირი მიღებულია"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "%1-დან მიერთება დაყოვნების რეჟიმშია (ველოდები დასტურს)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (გაზიარებული სამუშაო მაგიდა)"
|
||||
@@ -409,12 +409,12 @@ msgstr ""
|
||||
"კადრების ბაფერის დამატების პარამეტრის გადასატარებლად საჭიროა გადატვირთოთ "
|
||||
"პროგრამა."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "დაშორებული მომხმარებელი %1 ახლა მოერთებულია."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "დაშორებული მომხმარებელი %1 გაითიშა."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2013-06-27 03:20+0600\n"
|
||||
"Last-Translator: Sairan Kikkarin <sairan@computer.org>\n"
|
||||
"Language-Team: Kazakh <kde-i18n-doc@kde.org>\n"
|
||||
@@ -54,7 +54,7 @@ msgstr "%1 дегеннен қосылым қабылданды"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "%1 дегеннен қосылу сұралып құптауды күтіп тұр"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (ортақ етілген үстел)"
|
||||
@@ -418,12 +418,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Қашықтағы %1 деген пайдаланушы қосылды."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Қашықтағы %1 деген пайдаланушы ағытылды."
|
||||
|
||||
@@ -4,7 +4,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2010-11-30 10:42+0700\n"
|
||||
"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
|
||||
"Language-Team: Khmer <support@khmeros.info>\n"
|
||||
@@ -51,7 +51,7 @@ msgstr "ព្រមទទួលការតភ្ជាប់ពី %1
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "បានទទួលយកការតភ្ជាប់ពី %1 រង់ចាំ (រង់ចាំការអះអាង)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (ផ្ទៃតុដែលបានចែករំលែក)"
|
||||
@@ -410,12 +410,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "អ្នកប្រើពីចម្ងាយ %1 ឥឡូវត្រូវបានតភ្ជាប់ ។"
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "អ្នកប្រើពីចម្ងាយ %1 បានផ្ដាច់ ។"
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2021-11-12 00:42+0100\n"
|
||||
"Last-Translator: Shinjo Park <kde@peremen.name>\n"
|
||||
"Language-Team: Korean <kde-kr@kde.org>\n"
|
||||
@@ -53,7 +53,7 @@ msgstr "%1의 연결을 수락함"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "%1에서 연결 들어옴, 대기 중 (확인 기다리는 중)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (공유된 데스크톱)"
|
||||
@@ -404,14 +404,14 @@ msgstr "화면 캡처"
|
||||
#: mainwindow.cpp:256
|
||||
#, kde-format
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr "프레임버퍼 플러그인 설정을 적용하려면 앱을 다시 시작해야 합니다."
|
||||
msgstr "프레임버퍼 플러그인 설정을 적용하려면 프로그램을 다시 시작해야 합니다."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "원격 사용자 %1이(가) 접속했습니다."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "원격 사용자 %1이(가) 연결을 끊었습니다."
|
||||
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"PO-Revision-Date: 2024-02-02 23:17+0200\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2015-12-29 21:20+0200\n"
|
||||
"Last-Translator: Mindaugas Baranauskas <opensuse.lietuviu.kalba@gmail.com>\n"
|
||||
"Language-Team: lt <kde-i18n-lt@kde.org>\n"
|
||||
"Language: lt\n"
|
||||
@@ -18,7 +18,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n"
|
||||
"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n"
|
||||
"X-Generator: Poedit 3.0.1\n"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
@@ -55,7 +55,7 @@ msgstr "Priimtas ryšys iš %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Gautas prašymas ryšiui iš %1, sulaikyta (laukiama patvirtinimo)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (dalinamas darbalaukis)"
|
||||
@@ -114,7 +114,7 @@ msgstr "Nekviestų ryšių slaptažodis."
|
||||
#: krfb.kcfg:49
|
||||
#, kde-format
|
||||
msgid "Preferred Frame Buffer Plugin"
|
||||
msgstr "Pageidaujamas \"Frame Buffer\" įskiepis"
|
||||
msgstr "Pageidaujamas \"Frame Buffer\" papildinys"
|
||||
|
||||
#: main-virtualmonitor.cpp:49
|
||||
#, kde-format
|
||||
@@ -411,12 +411,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Nutolęs naudotojas %1 dabar prisijungęs."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Nutolęs naudotojas %1 atsijungė."
|
||||
@@ -455,8 +455,9 @@ msgstr ""
|
||||
#. i18n: ectx: property (text), widget (QLabel, label)
|
||||
#: ui/configframebuffer.ui:22
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Preferred Frame Buffer Plugin"
|
||||
msgid "Preferred frameb&uffer plugin:"
|
||||
msgstr "Pageidaujamas \"Frame Buffer\" įskiepis"
|
||||
msgstr "Pageidaujamas \"Frame Buffer\" papildinys"
|
||||
|
||||
#. i18n: ectx: property (text), widget (QLabel, helpText)
|
||||
#: ui/configframebuffer.ui:47
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2010-01-02 21:18+0200\n"
|
||||
"Last-Translator: Viesturs Zarins <viesturs.zarins@mii.lu.lv>\n"
|
||||
"Language-Team: Latvian <locale@laka.lv>\n"
|
||||
@@ -56,7 +56,7 @@ msgstr "Pieņemts neielūgts savienojums no %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Saņemts savienojms no %1, apturēts (gaida lietotāja apstiprinājumu)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (koplietota darbvirsma)"
|
||||
@@ -420,12 +420,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Attālinātais lietotājs %1 tagad ir pieslēdzies."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user %1 is now connected."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2009-04-22 00:08+0530\n"
|
||||
"Last-Translator: Sangeeta Kumari <sangeeta09@gmail.com>\n"
|
||||
"Language-Team: Maithili <maithili.sf.net>\n"
|
||||
@@ -55,7 +55,7 @@ msgstr ""
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr ""
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr ""
|
||||
@@ -381,13 +381,13 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "दूरस्थ प्रयोक्ता संबंधन बन्न कए देलकाह."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2009-06-21 09:24+0200\n"
|
||||
"Last-Translator: Bozidar Proevski <bobibobi@freemail.com.mk>\n"
|
||||
"Language-Team: Macedonian <mkde-l10n@lists.sourceforge.net>\n"
|
||||
@@ -56,7 +56,7 @@ msgstr "Прифатено непокането поврзување од %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Примено поврзување од %1, на почек (чека на потврда)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (делена работна површина)"
|
||||
@@ -420,13 +420,13 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Оддалечениот корисник го затвори поврзувањето."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2009-01-26 03:03-0800\n"
|
||||
"Last-Translator: Praveen Arimbrathodiyil <pravi.a@gmail.com>\n"
|
||||
"Language-Team: SMC <smc.org.in>\n"
|
||||
@@ -53,7 +53,7 @@ msgstr "%1ല് നിന്നുള്ള ക്ഷണിക്കപ്
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "%1ല് നിന്നുള്ള ബന്ധം ലഭിച്ചു, പിടിച്ചു നില്പ്പാണു് (ഉറപ്പിനായി കാത്തുനില്ക്കുന്നു) "
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (പങ്കിടുന്ന പണിയിടം)"
|
||||
@@ -402,13 +402,13 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "വിദൂര ഉപയോക്താവ് ബന്ധം അവസാനിപ്പിച്ചു."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2013-03-28 15:17+0530\n"
|
||||
"Last-Translator: Chetan Khona <chetan@kompkin.com>\n"
|
||||
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
|
||||
@@ -52,7 +52,7 @@ msgstr "%1 ची जुळवणी स्वीकारली"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "%1 येेथे मिळालेली जुळवणी परवानगीची वाट बघत आहे"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (शेअर केलेला डेस्कटॉप)"
|
||||
@@ -388,12 +388,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "%1 हा दूरस्थ वापरकर्ता आता जुळलेला आहे."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "%1 हा दूरस्थ वापरकर्ता आता जुळलेला नाही."
|
||||
|
||||
@@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2008-07-22 22:01+0800\n"
|
||||
"Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>\n"
|
||||
"Language-Team: Malay <kedidiemas@yahoogroups.com>\n"
|
||||
@@ -51,7 +51,7 @@ msgstr "Pembalut TCP: sambungann dari %s:%u ditolak."
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr ""
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, fuzzy, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "Desktop Default:"
|
||||
@@ -376,12 +376,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Hos remote putuskan hubungan utk %s@%s."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Hos remote putuskan hubungan utk %s@%s."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2014-04-28 18:28+0200\n"
|
||||
"Last-Translator: Bjørn Steensrud <bjornst@skogkatt.homelinux.org>\n"
|
||||
"Language-Team: Norwegian Bokmål <l10n-no@lister.huftis.org>\n"
|
||||
@@ -56,7 +56,7 @@ msgstr "Godtatt tilkobling fra %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Mottatt tilkobling fra %1, venter (på bekreftelse)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (delt skrivebord)"
|
||||
@@ -410,12 +410,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Fjernbrukeren %1 er nå tilkoblet."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Fjernbrukeren %1 koblet fra."
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2014-04-07 23:20+0200\n"
|
||||
"Last-Translator: Sönke Dibbern <s_dibbern@web.de>\n"
|
||||
"Language-Team: Low Saxon <kde-i18n-nds@kde.org>\n"
|
||||
@@ -52,7 +52,7 @@ msgstr "Verbinnen vun %1 annahmen"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Verbinnen-Anfraag vun %1 kregen, töövt op Beglöven"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (freegeven Schriefdisch)"
|
||||
@@ -407,12 +407,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "De feerne Bruker \"%1\" hett sik tokoppelt."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "De feerne Bruker \"%1\" hett sik afkoppelt."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2007-09-13 13:45+0545\n"
|
||||
"Last-Translator: Ishwor Sharma <sharmabeeshwar@gmail.com>\n"
|
||||
"Language-Team: Nepali <info@mpp.org.np>\n"
|
||||
@@ -55,7 +55,7 @@ msgstr "%1 बाट निमन्त्रणा नगरिएको जड
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "%1 बाट जडान प्राप्त भयो, होल्डमा (यकीनका लागि प्रतिक्षा गर्दैछ)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (साझेदार गरिएको डेस्कटप)"
|
||||
@@ -420,13 +420,13 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "टाढाको प्रयोगकर्ताले जडान बन्द गर्यो ।"
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "The remote user has closed the connection."
|
||||
msgid "The remote user %1 disconnected."
|
||||
|
||||
@@ -12,7 +12,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2021-10-31 09:10+0100\n"
|
||||
"Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -62,7 +62,7 @@ msgstr "Verbinding van %1 geaccepteerd"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Ontving een verbinding van %1. Deze wacht op uw bevestiging."
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (gedeeld bureaublad)"
|
||||
@@ -420,12 +420,12 @@ msgstr ""
|
||||
"Om de instelling van de framebufferplug-in toe te passen, moet u het "
|
||||
"programma opnieuw opstarten."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "De gebruiker op afstand %1 is nu verbonden."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "De verbinding met de gebruiker op afstand %1 is nu verbroken."
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
# Translation of krfb to Norwegian Nynorsk
|
||||
#
|
||||
# Gaute Hvoslef Kvalnes <gaute@verdsveven.com>, 2003, 2004.
|
||||
# Karl Ove Hufthammer <karl@huftis.org>, 2007, 2008, 2009, 2018, 2020, 2023.
|
||||
# Karl Ove Hufthammer <karl@huftis.org>, 2007, 2008, 2009, 2018, 2020.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"PO-Revision-Date: 2023-07-31 21:03+0200\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2020-11-02 20:58+0100\n"
|
||||
"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
|
||||
"Language-Team: Norwegian Nynorsk <l10n-no@lister.huftis.org>\n"
|
||||
"Language: nn\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Lokalize 23.04.3\n"
|
||||
"X-Generator: Lokalize 20.08.2\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Environment: kde\n"
|
||||
"X-Accelerator-Marker: &\n"
|
||||
@@ -55,7 +55,7 @@ msgstr "Godtok tilkopling frå %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Motteke tilkopling frå %1, ventar (på stadfesting)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (delt skjerm)"
|
||||
@@ -119,17 +119,17 @@ msgstr "Føretrekt programtillegg for biletbuffer"
|
||||
#: main-virtualmonitor.cpp:49
|
||||
#, kde-format
|
||||
msgid "Creating a Virtual Monitor from %1"
|
||||
msgstr "Lagar virtuell avlyttar frå %1"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:80
|
||||
#, kde-format
|
||||
msgid "Remote Virtual Monitor"
|
||||
msgstr "Virtuell skjerm for ekstern ressurs"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:82
|
||||
#, kde-format
|
||||
msgid "Offer a Virtual Monitor that can be accessed remotely"
|
||||
msgstr "Tilbyr ein virtuell skjerm ein kan få tilgang til eksternt"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:84 main.cpp:98
|
||||
#, kde-format
|
||||
@@ -153,7 +153,7 @@ msgstr ""
|
||||
#: main-virtualmonitor.cpp:91
|
||||
#, kde-format
|
||||
msgid "Virtual Monitor implementation"
|
||||
msgstr "Implementasjon av virtuell skjerm"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:92 main.cpp:108
|
||||
#, kde-format
|
||||
@@ -223,52 +223,52 @@ msgstr "Opphavlege VNC-kodarar og protokollutforming"
|
||||
#: main-virtualmonitor.cpp:108
|
||||
#, kde-format
|
||||
msgid "Logical resolution of the new monitor"
|
||||
msgstr "Logisk oppløysing på ny skjerm"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:108
|
||||
#, kde-format
|
||||
msgid "resolution"
|
||||
msgstr "oppløysing"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:110
|
||||
#, kde-format
|
||||
msgid "Name of the monitor"
|
||||
msgstr "Namnet på skjermen"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:110
|
||||
#, kde-format
|
||||
msgid "name"
|
||||
msgstr "namn"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:112
|
||||
#, kde-format
|
||||
msgid "Password for the client to connect to it"
|
||||
msgstr "Passord for tilkopling frå klienten"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:112
|
||||
#, kde-format
|
||||
msgid "password"
|
||||
msgstr "passord"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:114
|
||||
#, kde-format
|
||||
msgid "The device-pixel-ratio of the device, the scaling factor"
|
||||
msgstr "Einingspiksel-forholdet til eininga – skaleringsfaktor"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:114
|
||||
#, kde-format
|
||||
msgid "dpr"
|
||||
msgstr "dpr"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:116
|
||||
#, kde-format
|
||||
msgid "The port we will be listening to"
|
||||
msgstr "Porten me skal lytta til"
|
||||
msgstr ""
|
||||
|
||||
#: main-virtualmonitor.cpp:116
|
||||
#, kde-format
|
||||
msgid "number"
|
||||
msgstr "tal"
|
||||
msgstr ""
|
||||
|
||||
#: main.cpp:49
|
||||
#, kde-format
|
||||
@@ -410,12 +410,12 @@ msgstr ""
|
||||
"For å ta i bruk innstillingane for biletbuffer må du starta programmet på "
|
||||
"nytt."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Fjernbrukaren %1 er no tilkopla."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Fjernbrukaren %1 kopla frå."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2008-08-05 22:27+0200\n"
|
||||
"Last-Translator: Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>\n"
|
||||
"Language-Team: Occitan (lengadocian) <ubuntu-l10n-oci@lists.ubuntu.com>\n"
|
||||
@@ -53,7 +53,7 @@ msgstr ""
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr ""
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr ""
|
||||
@@ -379,12 +379,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr ""
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2011-01-01 14:22+0530\n"
|
||||
"Last-Translator: A S Alam <aalam@users.sf.net>\n"
|
||||
"Language-Team: Punjabi/Panjabi <punjabi-users@lists.sf.net>\n"
|
||||
@@ -53,7 +53,7 @@ msgstr "%1 ਤੋਂ ਕੁਨੈਕਸ਼ਨ ਮਨਜ਼ੂਰ ਕੀਤਾ"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "%1 ਤੋਂ ਕੁਨੈਕਸ਼ਨ ਮਿਲਿਆ, ਹੋਲਡ ਹੈ (ਪੁਸ਼ਟੀ ਦੀ ਉਡੀਕ ਜਾਰੀ)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (ਸਾਂਝਾ ਡੈਸਕਟਾਪ)"
|
||||
@@ -382,12 +382,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "%1 ਰਿਮੋਟ ਯੂਜ਼ਰ ਹੁਣ ਕੁਨੈਕਟ ਹੈ।"
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "ਰਿਮੋਟ ਯੂਜ਼ਰ %1 ਡਿਸ-ਕੁਨੈਕਟ ਹੋਇਆ।"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# translation of krfb.po to Polish
|
||||
# translation of krfb.po to
|
||||
# Version: $Revision: 1669497 $
|
||||
# Version: $Revision: 1629487 $
|
||||
# Copyright (C) 2002, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
|
||||
#
|
||||
# Krzysztof Lichota <lichota@mimuw.edu.pl>, 2002, 2005.
|
||||
@@ -12,7 +12,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2021-11-13 08:57+0100\n"
|
||||
"Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>\n"
|
||||
"Language-Team: Polish <kde-i18n-doc@kde.org>\n"
|
||||
@@ -59,7 +59,7 @@ msgstr "Zaakceptowano połączenie od %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Otrzymano połączenie z %1, jest wstrzymane (czeka na zatwierdzenie)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (współdzielony pulpit)"
|
||||
@@ -416,12 +416,12 @@ msgstr ""
|
||||
"Aby zastosować ustawienia wtyczki bufora klatek, musisz ponownie uruchomić "
|
||||
"program."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Od teraz użytkownik zdalny użytkownik %1 jest podłączony."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Zdalny użytkownik %1 jest rozłączony."
|
||||
|
||||
@@ -2,7 +2,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2021-11-08 18:24+0000\n"
|
||||
"Last-Translator: José Nuno Pires <zepires@gmail.com>\n"
|
||||
"Language-Team: pt <kde-i18n-pt@kde.org>\n"
|
||||
@@ -55,7 +55,7 @@ msgstr "Ligação aceite de %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Ligação recebida de %1 em espera (à espera de confirmação)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (ecrã partilhado)"
|
||||
@@ -412,12 +412,12 @@ msgstr ""
|
||||
"Para aplicar a configuração do 'plugin' do 'framebuffer', tem de reiniciar o "
|
||||
"programa."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "O utilizador remoto '%1' está agora ligado."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "O utilizador remoto '%1' desligou-se."
|
||||
|
||||
@@ -14,7 +14,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2021-11-01 16:21-0300\n"
|
||||
"Last-Translator: Luiz Fernando Ranghetti <elchevive@opensuse.org>\n"
|
||||
"Language-Team: Portuguese <kde-i18n-pt_BR@kde.org>\n"
|
||||
@@ -60,7 +60,7 @@ msgstr "Conexão aceita de %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Recebida conexão de %1, retida (esperando por confirmação)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (ambiente de trabalho compartilhado)"
|
||||
@@ -419,12 +419,12 @@ msgstr ""
|
||||
"Para aplicar as configurações do plugin de framebuffer, você precisa "
|
||||
"reiniciar o programa."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "O usuário remoto %1 está conectado agora."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "O usuário remoto %1 desconectou-se."
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2022-04-30 11:39+0100\n"
|
||||
"Last-Translator: Sergiu Bivol <sergiu@cip.md>\n"
|
||||
"Language-Team: Romanian <kde-i18n-ro@kde.org>\n"
|
||||
@@ -53,7 +53,7 @@ msgstr "Conexiune de la %1 acceptată"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Conexiune recepționată de la %1, în așteptare (așteaptă confirmarea)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (birou partajat)"
|
||||
@@ -410,12 +410,12 @@ msgstr ""
|
||||
"Trebuie să reporniți programul pentru a aplica configurarea extensiei de "
|
||||
"framebuffer."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Utilizatorul distant %1 e conectat acum."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Utilizatorul distant %1 s-a deconectat."
|
||||
|
||||
@@ -18,7 +18,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2022-07-05 10:21+0300\n"
|
||||
"Last-Translator: Olesya Gerasimenko <translation-team@basealt.ru>\n"
|
||||
"Language-Team: Basealt Translation Team\n"
|
||||
@@ -71,7 +71,7 @@ msgstr "Принято подключение %1"
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr "Получен запрос на подключение от %1 (ожидается подтверждение)"
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr "%1@%2 (доступный рабочий стол)"
|
||||
@@ -429,12 +429,12 @@ msgstr ""
|
||||
"Чтобы изменённые параметры модуля буфера экрана вступили в силу, необходимо "
|
||||
"перезапустить программу."
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr "Удалённый пользователь %1 сейчас подключен."
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr "Удалённый пользователь %1 отключен."
|
||||
|
||||
@@ -4,7 +4,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: krfb\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2024-01-10 01:34+0000\n"
|
||||
"POT-Creation-Date: 2022-07-18 00:45+0000\n"
|
||||
"PO-Revision-Date: 2007-09-11 22:44+0200\n"
|
||||
"Last-Translator: Northern Sami translation team <i18n-sme@lister.ping.uio."
|
||||
"no>\n"
|
||||
@@ -54,7 +54,7 @@ msgstr ""
|
||||
msgid "Received connection from %1, on hold (waiting for confirmation)"
|
||||
msgstr ""
|
||||
|
||||
#: invitationsrfbserver.cpp:50
|
||||
#: invitationsrfbserver.cpp:55
|
||||
#, kde-format
|
||||
msgid "%1@%2 (shared desktop)"
|
||||
msgstr ""
|
||||
@@ -379,12 +379,12 @@ msgstr ""
|
||||
msgid "To apply framebuffer plugin setting, you need to restart the program."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:237
|
||||
#: rfbservermanager.cpp:229
|
||||
#, kde-format
|
||||
msgid "The remote user %1 is now connected."
|
||||
msgstr ""
|
||||
|
||||
#: rfbservermanager.cpp:251
|
||||
#: rfbservermanager.cpp:243
|
||||
#, kde-format
|
||||
msgid "The remote user %1 disconnected."
|
||||
msgstr ""
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user