Adding upstream version 0.9.0.

Signed-off-by: Andrew Lee (李健秋) <ajqlee@debian.org>
ubuntu/cosmic upstream/0.9.0
Andrew Lee (李健秋) 10 years ago
commit c9e09e4533
No known key found for this signature in database
GPG Key ID: 9D0633E1B6250985

22
.gitignore vendored

@ -0,0 +1,22 @@
moc_*.cxx
qrc_*.cxx
cmake_install.cmake
cmake_uninstall.cmake
Makefile
CMakeFiles
CMakeCache.txt
CPackConfig.cmake
CPackSourceConfig.cmake
lib*.so
lib*.so.*
ui_*.h
*.qm
lxqt-appswitcher/lxqt-appswitcher
lxqt-desktop/lxqt-desktop
lxqt-panel/panel/lxqt-panel
*~
*.autosave
*-swp
CMakeLists.txt.user*
/build
nbproject/

@ -0,0 +1,15 @@
[main]
host = https://www.transifex.com
[lxde-qt.liblxqt]
file_filter = translations/liblxqt_<lang>.ts
source_file = translations/source.ts
source_lang = en
type = QT
#[flacon.About_Translators]
#source_file = translations/src.translators.info
#source_lang = en
#file_filter = translations/translators_<lang>.info
#type = MOZILLAPROPERTIES

@ -0,0 +1,3 @@
#!/bin/sh
tx pull --all --force

@ -0,0 +1,17 @@
#!/bin/sh
LUPDATE_OPTIONS="-noobsolete"
LUPDATE_OPTIONS="${LUPDATE_OPTIONS} -locations none "
TS_FILE="../translations/source.ts"
LUPDATE=$(which lupdate-qt4 2>/dev/null)
[ -z "${LUPDATE}" ] && LUPDATE=$(which lupdate 2>/dev/null)
if [ -z "${LUPDATE}" ]; then
echo "The lupdate program not found."
exit 1;
fi
${LUPDATE} ${LUPDATE_OPTIONS} .. -ts ${TS_FILE}

@ -0,0 +1,4 @@
#!/bin/sh
./updateSrc.sh && tx push --source

@ -0,0 +1,10 @@
Upstream Authors:
LXQt team: http://lxqt.org
Razor team: http://razor-qt.org
Copyright:
Copyright (c) 2010-2012 Razor team
Copyright (c) 2012-2014 LXQt team
License: GPL-2 and LGPL-2.1+
The full text of the licenses can be found in the 'COPYING' file.

@ -0,0 +1,350 @@
cmake_minimum_required(VERSION 2.8.11)
project(liblxqt)
set(LXQT_MAJOR_VERSION 0)
set(LXQT_MINOR_VERSION 9)
set(LXQT_PATCH_VERSION 0)
# Set default installation paths
set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "Installation path for libraries")
set(LXQT_PKG_CONFIG_DESCRIPTION "Shared library for LXQt applications")
set(PUB_HDRS
aboutdialog/lxqtaboutdialog.h
addplugindialog/lxqtaddplugindialog.h
lxqthtmldelegate.h
lxqtsettings.h
lxqtplugininfo.h
lxqtpowermanager.h
lxqtscreensaver.h
lxqtapplication.h
lxqtsingleapplication.h
lxqttranslator.h
lxqtprogramfinder.h
configdialog/lxqtconfigdialog.h
configdialog/lxqtpageselectwidget.h
lxqtpower/lxqtpower.h
lxqtnotification.h
lxqtautostartentry.h
lxqtgridlayout.h
lxqtrotatedwidget.h
lxqtglobals.h
)
set(PUBLIC_CLASSES
AboutDialog
HtmlDelegate
Settings
PluginInfo
PowerManager
AddPluginDialog
ScreenSaver
Application
SingleApplication
Translator
ProgramFinder
ConfigDialog
PageSelectWidget
Power
Notification
AutostartEntry
GridLayout
RotatedWidget
)
set(PRIV_HDRS
aboutdialog/lxqtaboutdialog_p.h
aboutdialog/technicalinfo.h
translatorsinfo/translatorsinfo.h
)
set(SRCS
aboutdialog/lxqtaboutdialog.cpp
aboutdialog/technicalinfo.cpp
lxqthtmldelegate.cpp
lxqtplugininfo.cpp
lxqtpowermanager.cpp
addplugindialog/lxqtaddplugindialog.cpp
lxqtsettings.cpp
lxqtscreensaver.cpp
lxqtapplication.cpp
lxqtsingleapplication.cpp
lxqttranslator.cpp
lxqtprogramfinder.cpp
configdialog/lxqtconfigdialog.cpp
configdialog/lxqtpageselectwidget.cpp
lxqtpower/lxqtpower.cpp
lxqtpower/lxqtpowerproviders.cpp
lxqtautostartentry.cpp
lxqtnotification.cpp
lxqtgridlayout.cpp
lxqtrotatedwidget.cpp
translatorsinfo/translatorsinfo.cpp
)
set(MOCS
aboutdialog/lxqtaboutdialog.h
aboutdialog/lxqtaboutdialog_p.h
addplugindialog/lxqtaddplugindialog.h
lxqthtmldelegate.h
lxqtpowermanager.h
lxqtsettings.h
lxqtscreensaver.h
lxqtapplication.h
configdialog/lxqtconfigdialog.h
configdialog/lxqtpageselectwidget.h
lxqtnotification.h
lxqtnotification_p.h
lxqtpower/lxqtpower.h
lxqtpower/lxqtpowerproviders.h
lxqtgridlayout.h
lxqtrotatedwidget.h
)
set(FORMS
aboutdialog/lxqtaboutdialog.ui
configdialog/lxqtconfigdialog.ui
addplugindialog/lxqtaddplugindialog.ui
)
# additional cmake files
list(APPEND CMAKE_MODULE_PATH
${CMAKE_CURRENT_SOURCE_DIR}/cmake
${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules
)
option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt5Widgets REQUIRED QUIET)
find_package(Qt5DBus REQUIRED QUIET)
find_package(Qt5X11Extras REQUIRED QUIET)
find_package(Qt5LinguistTools REQUIRED QUIET)
find_package(Qt5Xdg REQUIRED QUIET)
find_package(KF5WindowSystem REQUIRED QUIET)
message(STATUS "Building with Qt ${Qt5Core_VERSION_STRING}")
QT5_WRAP_UI(UIS ${FORMS})
QT5_ADD_DBUS_INTERFACE(SRCS
dbus/org.freedesktop.Notifications.xml
notifications_interface
)
QT5_ADD_DBUS_ADAPTOR(SRCS
dbus/org.lxqt.SingleApplication.xml
lxqtsingleapplication.h LxQt::SingleApplication
)
set(LXQT_QT_VERSION "5")
# KF5WindowSystem is missing here. KF5WindowSystem doesn't provide an .pc file.
set(LXQT_PKG_CONFIG_REQUIRES "Qt5Widgets Qt5Xml Qt5DBus Qt5X11Extras")
include(${QTXDG_USE_FILE})
include_directories(
"${QTXDG_INCLUDE_DIRS}"
)
# Standard directories for installation
include(GNUInstallDirs)
set(LXQT_VERSION ${LXQT_MAJOR_VERSION}.${LXQT_MINOR_VERSION}.${LXQT_PATCH_VERSION})
set(LXQT_LIBRARY_NAME "lxqt" CACHE STRING "lxqt")
set(LXQT_RELATIVE_SHARE_DIR "${LXQT_LIBRARY_NAME}")
set(LXQT_SHARE_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/${LXQT_RELATIVE_SHARE_DIR}")
set(LXQT_RELATIVE_TRANSLATIONS_DIR "${LXQT_LIBRARY_NAME}/translations")
set(LXQT_TRANSLATIONS_DIR "${LXQT_SHARE_DIR}/translations")
set(LXQT_INTREE_INCLUDE_DIR "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/include")
set(LXQT_INTREE_TARGETS_FILE "${CMAKE_BINARY_DIR}/${LXQT_LIBRARY_NAME}-targets.cmake")
set(LXQT_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}/${LXQT_LIBRARY_NAME}")
set(LXQT_INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/share/cmake")
include(cmake/FindInstallConfigPath.cmake)
include(create_portable_headers)
## Translations
include(LXQtTranslateTs)
lxqt_translate_ts(QM_FILES
UPDATE_TRANSLATIONS
${UPDATE_TRANSLATIONS}
SOURCES
${SRCS}
${FORMS}
INSTALL_DIR
${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}
)
message(STATUS "")
message(STATUS "liblxqt version: ${LXQT_VERSION}")
message(STATUS "")
# Copy public headers
foreach(h ${PUB_HDRS})
get_filename_component(bh ${h} NAME)
configure_file(${h} "${LXQT_INTREE_INCLUDE_DIR}/LXQt/${bh}" COPYONLY)
endforeach()
# Create the portable headers
create_portable_headers(INTREE_PORTABLE_HEADERS ${LXQT_INTREE_INCLUDE_DIR}/LXQt ${PUBLIC_CLASSES})
check_portable_headers(H_FILES ${PUB_HDRS} LINKS ${INTREE_PORTABLE_HEADERS})
#************************************************
# Create in-tree build infrastructure
#************************************************
set(CFG_LXQT_INCLUDE_DIR ${LXQT_INTREE_INCLUDE_DIR})
set(CFG_LXQT_LIBRARY ${LXQT_LIBRARY_NAME})
set(CFG_LXQT_USE_FILE ${CMAKE_BINARY_DIR}/${LXQT_LIBRARY_NAME}_use.cmake)
set(CFG_LXQT_TARGETS_FILE ${LXQT_INTREE_TARGETS_FILE})
set(CFG_LXQT_CMAKE_MODULES_DIR "${PROJECT_SOURCE_DIR}/cmake/modules")
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/lxqtX-config.cmake.in
${CMAKE_BINARY_DIR}/${LXQT_LIBRARY_NAME}-config.cmake
@ONLY
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/lxqt_use.cmake.in
${CMAKE_BINARY_DIR}/${LXQT_LIBRARY_NAME}_use.cmake
@ONLY
)
include(${CFG_LXQT_USE_FILE})
#************************************************
# Create installable build infrastructure
#************************************************
set(CFG_LXQT_INCLUDE_DIR "${LXQT_INSTALL_INCLUDE_DIR}")
set(CFG_LXQT_LIBRARY ${LXQT_LIBRARY_NAME})
set(CFG_LXQT_USE_FILE "${LXQT_INSTALL_CMAKE_DIR}/${LXQT_LIBRARY_NAME}/${LXQT_LIBRARY_NAME}_use.cmake")
set(CFG_LXQT_TARGETS_FILE "${LXQT_INSTALL_CMAKE_DIR}/${LXQT_LIBRARY_NAME}/${LXQT_LIBRARY_NAME}-targets.cmake")
set(CFG_LXQT_CMAKE_MODULES_DIR "${LXQT_INSTALL_CMAKE_DIR}/${LXQT_LIBRARY_NAME}/modules")
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/lxqtX-config.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/install/${LXQT_LIBRARY_NAME}-config.cmake"
@ONLY
)
# use gcc visibility feature to decrease unnecessary exported symbols
if (CMAKE_COMPILER_IS_GNUCXX)
# set visibility to hidden to hide symbols, unlesss they're exported
# manually in the code
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wl,-no-undefined -Wall")
endif()
add_definitions(-DCOMPILE_LIBLXQT)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/lxqt_use.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/install/${LXQT_LIBRARY_NAME}_use.cmake
@ONLY
)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/install/${LXQT_LIBRARY_NAME}-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/install/${LXQT_LIBRARY_NAME}_use.cmake
DESTINATION ${LXQT_INSTALL_CMAKE_DIR}/${LXQT_LIBRARY_NAME}
COMPONENT Devel
)
install(EXPORT
${LXQT_LIBRARY_NAME}-targets
DESTINATION ${LXQT_INSTALL_CMAKE_DIR}/${LXQT_LIBRARY_NAME}
COMPONENT Devel
)
file(GLOB toInstallModules
"${PROJECT_SOURCE_DIR}/cmake/modules/*.cmake"
"${PROJECT_SOURCE_DIR}/cmake/modules/*.in"
)
install(
FILES ${toInstallModules}
DESTINATION "${LXQT_INSTALL_CMAKE_DIR}/${LXQT_LIBRARY_NAME}/modules"
COMPONENT Devel
)
include(translatorsinfo/CMakeLists.txt)
get_translatorsinfo_qrc(translatorsinfo_qrc)
qt5_add_resources(QRC_CXX_SOURCES ${translatorsinfo_qrc})
add_library(${LXQT_LIBRARY_NAME}
SHARED ${PUB_HDRS}
${PRIV_HDRS}
${SRCS}
${dbus_generated}
${UIS} ${MOCS}
${QM_FILES}
${QRC_CXX_SOURCES}
)
target_link_libraries(${LXQT_LIBRARY_NAME}
KF5::WindowSystem
Qt5::Widgets
Qt5::DBus
Qt5::X11Extras
${QTXDG_LIBRARIES}
)
set_target_properties(${LXQT_LIBRARY_NAME} PROPERTIES
VERSION ${LXQT_VERSION}
SOVERSION ${LXQT_MAJOR_VERSION}
)
install(TARGETS
${LXQT_LIBRARY_NAME}
DESTINATION ${CMAKE_INSTALL_LIBDIR}
EXPORT ${LXQT_LIBRARY_NAME}-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}
)
export(TARGETS ${LXQT_LIBRARY_NAME} ${QTXDG_TARGET} FILE ${LXQT_INTREE_TARGETS_FILE})
install(FILES ${PUB_HDRS} DESTINATION "${LXQT_INSTALL_INCLUDE_DIR}/LXQt")
install(FILES ${INTREE_PORTABLE_HEADERS} DESTINATION "${LXQT_INSTALL_INCLUDE_DIR}/LXQt")
#************************************************
# Create pkgconfig file
#************************************************
lxqt_create_pkgconfig_file(${LXQT_LIBRARY_NAME}
${LXQT_PKG_CONFIG_DESCRIPTION}
${LXQT_PKG_CONFIG_REQUIRES}
${LXQT_LIBRARY_NAME}
${LXQT_VERSION}
)
#************************************************
# building tarball with CPack -------------------------------------------------
include(InstallRequiredSystemLibraries)
set(CPACK_PACKAGE_VERSION_MAJOR ${LXQT_MAJOR_VERSION})
set(CPACK_PACKAGE_VERSION_MINOR ${LXQT_MINOR_VERSION})
set(CPACK_PACKAGE_VERSION_PATCH ${LXQT_PATCH_VERSION})
set(CPACK_GENERATOR TBZ2)
set(CPACK_SOURCE_GENERATOR TBZ2)
set(CPACK_SOURCE_IGNORE_FILES /build/;.gitignore;.*~;.git;.kdev4;temp)
include(CPack)

@ -0,0 +1,461 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations
below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it
becomes a de-facto standard. To achieve this, non-free programs must
be allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control
compilation and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at least
three years, to give the same user the materials specified in
Subsection 6a, above, for a charge no more than the cost of
performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply, and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License
may add an explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS

@ -0,0 +1,159 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - The Lightweight Desktop Environment
* http://lxqt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Petr Vanek <petr@scribus.info>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtaboutdialog.h"
#include "ui_lxqtaboutdialog.h"
#include "lxqtaboutdialog_p.h"
#include "lxqttranslator.h"
#include "technicalinfo.h"
#include "translatorsinfo/translatorsinfo.h"
#include <QDebug>
#include <QDate>
#include <QClipboard>
using namespace LxQt;
AboutDialogPrivate::AboutDialogPrivate()
{
Translator::translateLibrary("liblxqt");
setupUi(this);
QString css="<style TYPE='text/css'> "
"body { font-family: sans-serif;} "
".name { font-size: 16pt; } "
"a { white-space: nowrap ;} "
"h2 { font-size: 10pt;} "
"li { line-height: 120%;} "
".techInfoKey { white-space: nowrap ; margin: 0 20px 0 16px; } "
"</style>"
;
iconLabel->setFixedSize(48, 48);
iconLabel->setScaledContents(true);
iconLabel->setPixmap(QPixmap(QString(LXQT_SHARE_DIR) + "/graphics/lxqt_logo.png"));
nameLabel->setText(css + titleText());
aboutBrowser->setHtml(css + aboutText());
aboutBrowser->viewport()->setAutoFillBackground(false);
autorsBrowser->setHtml(css + authorsText());
autorsBrowser->viewport()->setAutoFillBackground(false);
thanksBrowser->setHtml(css + thanksText());
thanksBrowser->viewport()->setAutoFillBackground(false);
translationsBrowser->setHtml(css + translationsText());
translationsBrowser->viewport()->setAutoFillBackground(false);
TechnicalInfo info;
techBrowser->setHtml(info.html());
techBrowser->viewport()->setAutoFillBackground(false);
connect(techCopyToClipboardButton, SIGNAL(clicked()), this, SLOT(copyToCliboardTechInfo()));
this->setAttribute(Qt::WA_DeleteOnClose);
show();
}
QString AboutDialogPrivate::titleText() const
{
return QString("<div class=name>%1</div><div class=ver>%2</div>").arg("LXQt",
tr("Version: %1").arg(LXQT_VERSION));
}
QString AboutDialogPrivate::aboutText() const
{
return QString(
"<p>%1</p>"
"<p>%2</p>"
"<p>%3</p>"
"<p>%4</p>"
"<p>%5</p>")
.arg(
tr("Advanced, easy-to-use, and fast desktop environment based on Qt technologies.",
"About dialog, 'About' tab text"),
tr("LXQt would not have been possible without the <a %1>Razor-qt</a> project and its many contributors.",
"About dialog, 'About' tab text").arg("href=\"http://razor-qt.org\""),
tr("Copyright: %1-%2 %3", "About dialog, 'About' tab text")
.arg("2010", QDate::currentDate().toString("yyyy"), "LXQt team"),
tr("Homepage: %1", "About dialog, 'About' tab text")
.arg("<a href=\"http://lxqt.org\">http://lxqt.org</a>"),
tr("License: %1", "About dialog, 'About' tab text")
.arg("<a href=\"http://www.gnu.org/licenses/lgpl-2.1.html\">GNU Lesser General Public License version 2.1 or later</a>"
" and partly under the "
"<a href=\"http://www.gnu.org/licenses/gpl-2.0.html\">GNU General Public License version 2</a>")
);
}
QString AboutDialogPrivate::authorsText() const
{
return QString("<p>%1</p><p>%2</p>").arg(
tr("LXQt is developed by the <a %1>LXQt Team and contributors</a>.", "About dialog, 'Authors' tab text")
.arg(" href=\"https://github.com/lxde/lxde-qt\""),
tr("If you are interested in working with our development team, <a %1>join us</a>.", "About dialog, 'Authors' tab text")
.arg("href=\"http://lxqt.org\"")
);
}
QString AboutDialogPrivate::thanksText() const
{
return QString(
"%1"
"<ul>"
"<li>Alexey Nosov (for the A-MeGo theme)</li>"
"<li>Alexander Zakher (the Razor-qt name)</li>"
"<li>Andy Fitzsimon (logo/icon)</li>"
"<li>Eugene Pivnev (QtDesktop)</li>"
"<li>Paul Gnther (desktop backgrounds)</li>"
"<li>Manuel Meier (for ideas)</li>"
"<li>KDE &lt;<a href=\"http://kde.org/\">http://kde.org/</a>&gt;</li>"
).arg(tr("Special thanks to:", "About dialog, 'Thanks' tab text"));
}
QString AboutDialogPrivate::translationsText() const
{
TranslatorsInfo translatorsInfo;
return QString("%1<p><ul>%2</ul>").arg(
tr("LXQt is translated into many languages thanks to the work of the translation teams all over the world.", "About dialog, 'Translations' tab text"),
translatorsInfo.asHtml()
);
}
AboutDialog::AboutDialog()
{
d_ptr = new AboutDialogPrivate();
}
void AboutDialogPrivate::copyToCliboardTechInfo()
{
TechnicalInfo info;
QClipboard *clipboard = QApplication::clipboard();
clipboard->setText(info.text());
}

@ -0,0 +1,53 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Petr Vanek <petr@scribus.info>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTRABOUTDIALOG_H
#define LXQTRABOUTDIALOG_H
#include <QDialog>
#include "lxqtglobals.h"
namespace LxQt
{
class AboutDialogPrivate;
/**
* @brief displays a simple about dialog
*/
class LXQT_API AboutDialog: public QDialog
{
Q_OBJECT
public:
AboutDialog();
private:
AboutDialogPrivate * d_ptr;
};
} // namespace LxQt
#endif // LXQTRABOUTDIALOG_H

@ -0,0 +1,203 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>about</class>
<widget class="QDialog" name="about">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>633</width>
<height>416</height>
</rect>
</property>
<property name="windowTitle">
<string> About LXQt</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>21</number>
</property>
<property name="bottomMargin">
<number>16</number>
</property>
<item>
<widget class="QLabel" name="iconLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="nameLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">&lt;h1&gt;LXQt&lt;/h1&gt;&lt;p&gt;Version: %1&lt;/p&gt;</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string comment="About dialog, Tab title ">About</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QTextBrowser" name="aboutBrowser">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string comment="About dialog, Tab title">Authors</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QTextBrowser" name="autorsBrowser">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_4">
<attribute name="title">
<string comment="About dialog, Tab title">Thanks</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QTextBrowser" name="thanksBrowser">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="translationsTab">
<attribute name="title">
<string comment="About dialog, Tab title">Translations</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTextBrowser" name="translationsBrowser">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string comment="About dialog, Tab title">Technical Info</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QTextBrowser" name="techBrowser">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="techCopyToClipboardButton">
<property name="text">
<string>Copy to clipboard</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Close</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>about</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>303</x>
<y>273</y>
</hint>
<hint type="destinationlabel">
<x>437</x>
<y>290</y>
</hint>
</hints>
</connection>
</connections>
</ui>

@ -0,0 +1,57 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Petr Vanek <petr@scribus.info>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQT_ABOUTDIALOG_P_H
#define LXQT_ABOUTDIALOG_P_H
#include "ui_lxqtaboutdialog.h"
#include <QDialog>
namespace LxQt
{
/**
* @brief prepares the data to show and fills the form, then shows.
*/
class AboutDialogPrivate: public QDialog, public Ui_about
{
Q_OBJECT
public:
AboutDialogPrivate();
QString titleText() const;
QString aboutText() const;
QString authorsText() const;
QString thanksText() const;
QString translationsText() const;
public slots:
void copyToCliboardTechInfo();
};
} // namespace LxQt
#endif // LXQT_ABOUTDIALOG_P_H

@ -0,0 +1,187 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2012 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "technicalinfo.h"
#include "lxqttranslator.h"
#include <XdgDirs>
using namespace LxQt;
class LxQt::TechInfoTable
{
public:
TechInfoTable(const QString &title);
void add(const QString &name, const QVariant &value);
QString html() const;
QString text(int nameFieldWidth) const;
int maxNameLength() const;
private:
QString mTitle;
QList<QPair<QString,QString> > mRows;
};
TechInfoTable::TechInfoTable(const QString &title)
{
mTitle = title;
}
void TechInfoTable::add(const QString &name, const QVariant &value)
{
QPair<QString,QString> row;
row.first = name;
row.second = value.toString();
mRows.append(row);
}
QString TechInfoTable::html() const
{
QString res;
res = "<style TYPE='text/css'> "
".techInfoKey { white-space: nowrap ; margin: 0 20px 0 16px; } "
"</style>";
res += QString("<b>%1</b>").arg(mTitle);
res += "<table width='100%'>";
QPair<QString,QString> row;
foreach(row, mRows)
{
res += QString("<tr>"
"<td class=techInfoTd width='1%'>"
"<div class=techInfoKey>%1</div>"
"</td>"
"<td>%2</td>"
"</tr>").arg(row.first, row.second);
}
res += "</table>";
return res;
}
QString TechInfoTable::text(int nameFieldWidth) const
{
QString res;
res += QString("%1\n").arg(mTitle);
QPair<QString,QString> row;
foreach(row, mRows)
{
res += QString(" %1 %2\n")
.arg(row.first + ":", -nameFieldWidth)
.arg(row.second);
}
return res;
}
int TechInfoTable::maxNameLength() const
{
int res = 0;
QPair<QString,QString> row;
foreach (row, mRows)
res = qMax(res, row.first.length());
return res;
}
QString TechnicalInfo::html() const
{
QString res;
foreach (TechInfoTable* item, mItems)
{
res += item->html();
res += "<br><br>";
}
return res;
}
QString TechnicalInfo::text() const
{
int nameWidth = 0;
foreach (TechInfoTable* item, mItems)
nameWidth = qMax(nameWidth, item->maxNameLength());
QString res;
foreach (TechInfoTable* item, mItems)
{
res += item->text(nameWidth + 2);
res += "\n\n";
}
return res;
}
TechInfoTable *TechnicalInfo::newTable(const QString &title)
{
TechInfoTable *table = new TechInfoTable(title);
mItems.append(table);
return table;
}
TechnicalInfo::~TechnicalInfo()
{
qDeleteAll(mItems);
}
TechnicalInfo::TechnicalInfo()
{
TechInfoTable *table;
// ******************************************
table = newTable("LXQt Desktop Toolbox - Technical Info<p>");
#ifdef DEBUG
QString buildType("Debug");
#else
QString buildType("Release");
#endif
table->add("Version", LXQT_VERSION);
table->add("Qt", qVersion());
table->add("Build type", buildType);
table->add("System Configuration", LXQT_ETC_XDG_DIR);
table->add("Share Directory", LXQT_SHARE_DIR);
table->add("Translations", Translator::translationSearchPaths().join("<br>\n"));
// ******************************************
table = newTable("User Directories");
XdgDirs xdgDirs;
table->add("Xdg Data Home", xdgDirs.dataHome(false));
table->add("Xdg Config Home", xdgDirs.configHome(false));
table->add("Xdg Data Dirs", xdgDirs.dataDirs().join(":"));
table->add("Xdg Cache Home", xdgDirs.cacheHome(false));
table->add("Xdg Runtime Home", xdgDirs.runtimeDir());
table->add("Xdg Autostart Dirs", xdgDirs.autostartDirs().join("<br>\n"));
table->add("Xdg Autostart Home", xdgDirs.autostartHome(false));
}

@ -0,0 +1,61 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2012 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef TECHNICALINFO_H
#define TECHNICALINFO_H
#include <QList>
#include <QPair>
#include <QDateTime>
#include <QVariant>
namespace LxQt
{
class TechInfoTable;
class TechnicalInfo
{
public:
TechnicalInfo();
~TechnicalInfo();
QString html() const;
QString text() const;
TechInfoTable *newTable(const QString &title);
void add(const TechInfoTable &table);
private:
QList<TechInfoTable*> mItems;
};
} // namespace LxQt
#endif // TECHNICALINFO_H

@ -0,0 +1,212 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtaddplugindialog.h"
#include "ui_lxqtaddplugindialog.h"
#include "lxqthtmldelegate.h"
#include <QDebug>
#include <QLineEdit>
#include <XdgIcon>
#include <QListWidgetItem>
#include <QIcon>
#include "lxqttranslator.h"
using namespace LxQt;
#define SEARCH_ROLE Qt::UserRole
#define INDEX_ROLE SEARCH_ROLE+1
/************************************************
************************************************/
bool pluginDescriptionLessThan(const PluginInfo &p1, const PluginInfo &p2)
{
int cmp = QString::compare(p1.name(), p2.name());
if (cmp != 0)
return cmp < 0;
return p1.comment() < p2.comment();
}
/************************************************
************************************************/
AddPluginDialog::AddPluginDialog(const QStringList& desktopFilesDirs,
const QString &serviceType,
const QString &nameFilter,
QWidget *parent):
QDialog(parent),
ui(new Ui::AddPluginDialog),
mTimerId(0)
{
Translator::translateLibrary("liblxqt");
ui->setupUi(this);
mPlugins = PluginInfo::search(desktopFilesDirs, serviceType, nameFilter);
qSort(mPlugins.begin(), mPlugins.end(), pluginDescriptionLessThan);
ui->pluginList->setItemDelegate(new HtmlDelegate(QSize(32, 32), ui->pluginList));
init();
connect(ui->pluginList, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(emitPluginSelected()));
connect(ui->pluginList, SIGNAL(itemSelectionChanged()), this, SLOT(toggleAddButtonState()));
connect(ui->searchEdit, SIGNAL(textEdited(QString)), this, SLOT(searchEditTexChanged(QString)));
connect(ui->addButton, SIGNAL(clicked(bool)), this, SLOT(emitPluginSelected()));
}
void AddPluginDialog::setPluginsInUse(const QStringList pluginsInUseIDs)
{
Q_FOREACH (QString id, pluginsInUseIDs)
{
if (!mPluginsInUseAmount.contains(id))
mPluginsInUseAmount[id] = 0;
mPluginsInUseAmount[id]++;
}
init();
}
void AddPluginDialog::init()
{
QListWidget* pluginList = ui->pluginList;
pluginList->clear();
QIcon fallIco = XdgIcon::fromTheme("preferences-plugin");
int pluginCount = mPlugins.length();
for (int i = 0; i < pluginCount; ++i)
{
const PluginInfo &plugin = mPlugins.at(i);
QString countStr;
int amount = mPluginsInUseAmount[plugin.id()];
if (amount)
countStr = tr("(%1 active)").arg(amount);
QListWidgetItem* item = new QListWidgetItem(ui->pluginList);
item->setText(QString("<b>%1 %2</b><br>\n%3\n").arg(plugin.name(), countStr, plugin.comment()));
item->setIcon(plugin.icon(fallIco));
item->setData(INDEX_ROLE, i);
item->setData(SEARCH_ROLE, QString("%1 %2 %3 %4").arg(
plugin.name(),
plugin.comment(),
plugin.value("Name").toString(),
plugin.value("Comment").toString()
)
);
}
if (pluginCount > 0)
ui->pluginList->setCurrentRow(0);
}
/************************************************
************************************************/
void AddPluginDialog::pluginAdded(const QString &id)
{
if (!mPluginsInUseAmount.contains(id))
mPluginsInUseAmount[id] = 0;
mPluginsInUseAmount[id]++;
init();
}
/************************************************
************************************************/
void AddPluginDialog::pluginRemoved(const QString &id)
{
mPluginsInUseAmount[id]--;
init();
}
/************************************************
************************************************/
AddPluginDialog::~AddPluginDialog()
{
delete ui;
}
/************************************************
************************************************/
void AddPluginDialog::searchEditTexChanged(const QString& text)
{
if (mTimerId)
killTimer(mTimerId);
mTimerId = startTimer(SEARCH_DELAY);
}
/************************************************
************************************************/
void AddPluginDialog::timerEvent(QTimerEvent* event)
{
if (event->timerId() == mTimerId)
{
killTimer(mTimerId);
QListWidget* pluginList = ui->pluginList;
QString s = ui->searchEdit->text();
for (int i=0; i < pluginList->count(); ++i)
{
QListWidgetItem* item = pluginList->item(i);
item->setHidden(! item->data(SEARCH_ROLE).toString().contains(s, Qt::CaseInsensitive));
}
}
}
/************************************************
************************************************/
void AddPluginDialog::emitPluginSelected()
{
QListWidget* pluginList = ui->pluginList;
if (pluginList->currentItem() && pluginList->currentItem()->isSelected())
{
PluginInfo plugin = mPlugins.at(pluginList->currentItem()->data(INDEX_ROLE).toInt());
emit pluginSelected(plugin);
}
}
/************************************************
************************************************/
void AddPluginDialog::toggleAddButtonState()
{
ui->addButton->setEnabled(ui->pluginList->currentItem() && ui->pluginList->currentItem()->isSelected());
}

@ -0,0 +1,94 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTADDPLUGINDIALOG_H
#define LXQTADDPLUGINDIALOG_H
#include <QDialog>
#include <lxqtplugininfo.h>
#include "lxqtglobals.h"
#define SEARCH_DELAY 125
namespace Ui {
class AddPluginDialog;
}
namespace LxQt
{
/*! The AddPluginDialog class provides a dialog that allow users to add plugins.
*/
class LXQT_API AddPluginDialog : public QDialog
{
Q_OBJECT
public:
/*! Constructs a dialog with the given parent that initially displays
PluginInfo objects for the matched files in the directories
@param desktopFilesDirs - list of the scanned directories names.
@param serviceType - type of the plugin, for example "LxQtPanel/Plugin".
@param nameFilter - wildcard filter that understands * and ? wildcards. */
AddPluginDialog(const QStringList& desktopFilesDirs,
const QString& serviceType,
const QString& nameFilter="*",
QWidget *parent = 0);
~AddPluginDialog();
void setPluginsInUse(const QStringList pluginsInUseIDs);
signals:
void pluginSelected(const LxQt::PluginInfo &plugin);
protected:
void timerEvent(QTimerEvent* event);
private:
void init();
Ui::AddPluginDialog *ui;
PluginInfoList mPlugins;
int mTimerId;
// store the amount of instances of the plugins using their ids
QHash<QString, int> mPluginsInUseAmount;
public slots:
void pluginAdded(const QString &id);
void pluginRemoved(const QString &id);
private slots:
void emitPluginSelected();
void searchEditTexChanged(const QString& text);
void toggleAddButtonState();
};
} // namecpase LxQt
#endif // LXQTADDPLUGINDIALOG_H

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AddPluginDialog</class>
<widget class="QDialog" name="AddPluginDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>359</height>
</rect>
</property>
<property name="windowTitle">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="searchLabel">
<property name="text">
<string>Search:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="searchEdit"/>
</item>
</layout>
</item>
<item>
<widget class="QListWidget" name="pluginList">
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContentsOnFirstShow</enum>
</property>
<property name="showDropIndicator" stdset="0">
<bool>true</bool>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="movement">
<enum>QListView::Static</enum>
</property>
<property name="flow">
<enum>QListView::TopToBottom</enum>
</property>
<property name="resizeMode">
<enum>QListView::Adjust</enum>
</property>
<property name="spacing">
<number>0</number>
</property>
<property name="modelColumn">
<number>0</number>
</property>
<property name="uniformItemSizes">
<bool>false</bool>
</property>
<property name="selectionRectVisible">
<bool>true</bool>
</property>
<property name="currentRow">
<number>-1</number>
</property>
<property name="sortingEnabled">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="addButton">
<property name="text">
<string>Add Widget</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="closeButton">
<property name="text">
<string>Close</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<tabstops>
<tabstop>pluginList</tabstop>
<tabstop>addButton</tabstop>
<tabstop>closeButton</tabstop>
<tabstop>searchEdit</tabstop>
</tabstops>
<resources/>
<connections>
<connection>
<sender>closeButton</sender>
<signal>clicked()</signal>
<receiver>AddPluginDialog</receiver>
<slot>close()</slot>
<hints>
<hint type="sourcelabel">
<x>380</x>
<y>279</y>
</hint>
<hint type="destinationlabel">
<x>118</x>
<y>270</y>
</hint>
</hints>
</connection>
</connections>
</ui>

@ -0,0 +1,23 @@
# XDG standards expects system-wide configuration files in the /etc/xdg/lxqt location.
# Unfortunately QSettings we are using internally can be overriden in the Qt compilation
# time to use different path for system-wide configs. (for example configure ... -sysconfdir /etc/settings ...)
# This path can be found calling Qt4's qmake:
# qmake -query QT_INSTALL_CONFIGURATION
#
if(NOT DEFINED LXQT_ETC_XDG_DIR)
get_target_property(QT_QMAKE_EXECUTABLE ${Qt5Core_QMAKE_EXECUTABLE} IMPORTED_LOCATION)
message(STATUS "${QT_QMAKE_EXECUTABLE}")
if(NOT QT_QMAKE_EXECUTABLE)
message(FATAL_ERROR "LXQT_ETC_XDG_DIR: qmake executable not found (included before qt was configured?)")
endif()
execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_CONFIGURATION
OUTPUT_VARIABLE LXQT_ETC_XDG_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "LXQT_ETC_XDG_DIR autodetected as '${LXQT_ETC_XDG_DIR}'")
message(STATUS "You can set it manually with -DLXQT_ETC_XDG_DIR=<value>")
message(STATUS "")
endif ()

@ -0,0 +1,33 @@
#
# Write a pkg-config pc file for given "name" with "decription"
# Arguments:
# name: a library name (withoud "lib" prefix and "so" suffixes
# desc: a desription string
#
macro (create_pkgconfig_file name desc)
set(_pkgfname "${CMAKE_CURRENT_BINARY_DIR}/${name}.pc")
#message(STATUS "${name}: writing pkgconfig file ${_pkgfname}")
file(WRITE "${_pkgfname}"
"# file generated by lxde-qt cmake build\n"
"prefix=${CMAKE_INSTALL_PREFIX}\n"
"libdir=\${prefix}/lib${LIB_SUFFIX}\n"
"includedir=\${prefix}/include\n"
"\n"
"Name: ${name}\n"
"Description: ${desc}\n"
"Version: ${LXQT_VERSION}\n"
"Libs: -L\${libdir} -l${name}\n"
"Cflags: -I\${includedir}\n"
"\n"
)
# FreeBSD loves to install files to different locations
# http://www.freebsd.org/doc/handbook/dirstructure.html
if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
install(FILES ${_pkgfname} DESTINATION libdata/pkgconfig)
else()
install(FILES ${_pkgfname} DESTINATION lib${LIB_SUFFIX}/pkgconfig)
endif()
endmacro()

@ -0,0 +1,58 @@
# Creates portable headers; e.g.:
# Creates XdgAction from xdgaction.h
# XdgAction contents:
# #include "xdgaction.h"
#
# Use:
# set(PUBLIC_CLASSES MyClass YourClass)
# create_portable_headers(PORTABLE_HEADERS ${PUBLIC_CLASSES})
# PORTABLE_HEADER is an return value that contains the full name of the
# generated headers.
function(create_portable_headers outfiles outDir)
set(options)
set(oneValueArgs)
set(multiValueArgs)
cmake_parse_arguments(_CREATE_PORTABLE_HEADERS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(class_list ${_CREATE_PORTABLE_HEADERS_UNPARSED_ARGUMENTS})
foreach(f ${class_list})
string(TOLOWER "${f}.h" _filename)
file(WRITE ${outDir}/${f}
"#include \"lxqt${_filename}\"\n")
list(APPEND ${outfiles} ${outDir}/${f})
endforeach()
set(${outfiles} ${${outfiles}} PARENT_SCOPE)
endfunction()
function(check_portable_headers)
cmake_parse_arguments(__ARGS "" "" "H_FILES;LINKS" ${ARGN})
foreach(f ${__ARGS_LINKS})
file(READ ${f} content)
set(found False)
foreach(line ${content})
string(REGEX MATCH "#include \"(.*)\"" v ${line})
set(hFile ${CMAKE_MATCH_1})
string(REGEX MATCH "[;/]${hFile};" v ";${__ARGS_H_FILES};")
if(NOT v)
set(found True)
endif()
endforeach()
if(found)
message(FATAL_ERROR "Incorrect portable header: '${f}'")
endif()
endforeach()
endfunction()

@ -0,0 +1,71 @@
# - Find the lxqt include and library dirs and define a some macros
#
# The module defines the following variables
#
# LXQT_FOUND - Set to TRUE if all of the above has been found
#
# LXQT_INCLUDE_DIR - The lxqt include directory
#
# LXQT_INCLUDE_DIRS - The lxqt and the Qt include directory, for use with INCLUDE_DIRECTORIES()
#
# LXQT_LIBRARY_DIRS - The lxqt and the Qt library directories
#
# LXQT_LIBRARIES - The libraries needed to use lxqt
#
# LXQT_SHARE_DIR - This allows to install and read the configs from non-standard locations
#
# LXQT_TRANSLATIONS_DIR - The default translations directory
#
# LXQT_ETC_XDG_DIR - XDG standards expects system-wide configuration files in the
# /etc/xdg/lxqt location. Unfortunately QSettings we are using internally
# can be overriden in the Qt compilation time to use different path for
# system-wide configs. (for example configure ... -sysconfdir /etc/settings ...)
# This path can be found calling Qt4's qmake:
# qmake -query QT_INSTALL_CONFIGURATION
#
# LXQT_USE_FILE - The variable LXQT_USE_FILE is set which is the path to a CMake file that
# can be included to compile lxqt applications and libraries. It sets up
# the compilation environment for include directories and populates a
# LXQT_LIBRARIES variable.
#
# When using the components argument, LXQT_USE_* variables are automatically set
# for the LXQT_USE_FILE to pick up. If one wishes to manually set them, the
# available ones to set include:
# LXQT_USE_MOUNT
# LXQT_USE_GLOBAL_KEY_CLIENT
#
# Typical usage could be something like:
# set(LXQT_USE_MOUNT 1)
# find_package(LXQT REQUIRED)
# include(${LXQT_USE_FILE})
#
# lxqt_translate_ts(QM_FILES
# SOURCES
# ${H_FILES}
# ${CPP_FILES}
# ${UI_FILES}
# )
# lxqt_translate_desktop(DESKTOP_FILES
# SOURCES
# ${DESKTOP_FILES_IN}
# )
#
# add_executable(myexe main.cpp)
# target_link_libraries(myexe $LXQT_LIBRARIES})
if(LXQT_FIND_REQUIRED)
set(REQUIRED_OPT "REQUIRED")
endif()
set(LXQT_LIBRARY_DIRS @CMAKE_INSTALL_PREFIX@/@LIB_INSTALL_DIR@)
set(LXQT_LIBRARIES ${LXQT_LIBRARY} )
set(LXQT_INCLUDE_DIRS ${LXQT_INCLUDE_DIR} @CMAKE_INSTALL_PREFIX@/include)
set(LXQT_USE_FILE ${CMAKE_CURRENT_LIST_DIR}/lxqt_use.cmake)
set(LXQT_CMAKE_MODULES_DIR @CFG_LXQT_CMAKE_MODULES_DIR@)
set(LXQT_FOUND 1)
if(LXQT_FIND_QUIETLY)
set(QUIET_OPT "QUIET")
endif()
find_package(LxQt5 ${REQUIRED_OPT} ${QUIET_OPT})

@ -0,0 +1,82 @@
# - Find the lxqt include and library dirs and define a some macros
#
# The module defines the following variables
#
# LXQT_FOUND - Set to TRUE if all of the above has been found
#
# LXQT_INCLUDE_DIR - The lxqt include directory
#
# LXQT_INCLUDE_DIRS - The lxqt and the Qt include directory, for use with INCLUDE_DIRECTORIES()
#
# LXQT_LIBRARIES - The libraries needed to use lxqt
#
# LXQT_SHARE_DIR - This allows to install and read the configs from non-standard locations
#
# LXQT_TRANSLATIONS_DIR - The default translations directory
#
# LXQT_ETC_XDG_DIR - XDG standards expects system-wide configuration files in the
# /etc/xdg/razor location. Unfortunately QSettings we are using internally
# can be overriden in the Qt compilation time to use different path for
# system-wide configs. (for example configure ... -sysconfdir /etc/settings ...)
# This path can be found calling Qt4's qmake:
# qmake -query QT_INSTALL_CONFIGURATION
#
# LXQT_USE_FILE - The variable LXQT_USE_FILE is set which is the path to a CMake file that
# can be included to compile lxqt applications and libraries. It sets up
# the compilation environment for include directories and populates a
# LXQT_LIBRARIES variable.
#
# When using the components argument, LXQT_USE_* variables are automatically set
# for the LXQT_USE_FILE to pick up. If one wishes to manually set them, the
# available ones to set include:
# LXQT_USE_MOUNT
# LXQT_USE_GLOBAL_KEY_CLIENT
#
# Typical usage could be something like:
# set(LXQT_USE_MOUNT 1)
# find_package(LXQT REQUIRED)
# include(${LXQT_USE_FILE})
#
# razor_translate_ts(QM_FILES
# SOURCES
# ${H_FILES}
# ${CPP_FILES}
# ${UI_FILES}
# )
# razor_translate_desktop(DESKTOP_FILES
# SOURCES
# ${DESKTOP_FILES_IN}
# )
#
# add_executable(myexe main.cpp)
# target_link_libraries(myexe $LXQT_LIBRARIES})
set(LXQT_USEQT@LXQT_QT_VERSION@ ON)
set(LXQT_QT_VERSION @LXQT_QT_VERSION@)
set(LXQT_MAJOR_VERSION @LXQT_MAJOR_VERSION@)
set(LXQT_MINOR_VERSION @LXQT_MINOR_VERSION@)
set(LXQT_PATCH_VERSION @LXQT_PATCH_VERSION@)
set(LXQT_VERSION @LXQT_VERSION@)
set(LXQT_RELATIVE_SHARE_DIR @LXQT_RELATIVE_SHARE_DIR@)
set(LXQT_SHARE_DIR @LXQT_SHARE_DIR@)
set(LXQT_RELATIVE_TRANSLATIONS_DIR @LXQT_RELATIVE_TRANSLATIONS_DIR@)
set(LXQT_TRANSLATIONS_DIR @LXQT_TRANSLATIONS_DIR@)
set(LXQT_ETC_XDG_DIR @LXQT_ETC_XDG_DIR@)
set(LXQT_CMAKE_MODULES_DIR @CFG_LXQT_CMAKE_MODULES_DIR@)
set(LXQT_INCLUDE_DIR @CFG_LXQT_INCLUDE_DIR@)
set(LXQT_INCLUDE_DIRS @CFG_LXQT_INCLUDE_DIR@)
set(LXQT_LIBRARY @CFG_LXQT_LIBRARY@)
set(LXQT_LIBRARIES @CFG_LXQT_LIBRARY@)
set(LXQT_USE_FILE @CFG_LXQT_USE_FILE@)
set(LXQT_FOUND 1)
set(LXQT@LXQT_QT_VERSION@_FOUND 1)
include(@CFG_LXQT_TARGETS_FILE@)
mark_as_advanced(LXQT_LIBRARY LXQT_INCLUDE_DIR)

@ -0,0 +1,106 @@
# - Find the LXQt include and library dirs and define a some macros
#
# The module defines the following functions
#
# lxqt_set_default_value(VAR_NAME VAR_VALUE)
#
#
# lxqt_create_pkgconfig_file(name
# desc
# requires
# include_rel_dir
# version)
# Write a pkg-config pc file for given "name" with "decription"
# Arguments:
# name: a library name (withoud "lib" prefix and "so" suffixes
# desc: a desription string
# requires: required libraries
# include_rel_dir: include directory, relative to includedir
# version: package version
#
#
#
# The module defines the following definitions
#
# -DLXQT_SHARE_DIR - This allows to install and read the configs from non-standard locations
#
# -DLXQT_ETC_XDG_DIR - XDG standards expects system-wide configuration files in the
# /etc/xdg/lxqt location. Unfortunately QSettings we are using internally
# can be overriden in the Qt compilation time to use different path for
# system-wide configs. (for example configure ... -sysconfdir /etc/settings ...)
# This path can be found calling Qt4's qmake:
# qmake -query QT_INSTALL_CONFIGURATION
#
#
#
include_directories(${LXQT_INCLUDE_DIRS})
link_directories(${LXQT_LIBRARY_DIRS})
add_definitions(-DLXQT_RELATIVE_SHARE_DIR=\"${LXQT_RELATIVE_SHARE_DIR}\")
add_definitions(-DLXQT_SHARE_DIR=\"${LXQT_SHARE_DIR}\")
add_definitions(-DLXQT_RELATIVE_SHARE_TRANSLATIONS_DIR=\"${LXQT_RELATIVE_TRANSLATIONS_DIR}\")
add_definitions(-DLXQT_SHARE_TRANSLATIONS_DIR=\"${LXQT_TRANSLATIONS_DIR}\")
add_definitions(-DLXQT_ETC_XDG_DIR=\"${LXQT_ETC_XDG_DIR}\")
add_definitions(-DLXQT_VERSION=\"${LXQT_VERSION}\")
SET_SOURCE_FILES_PROPERTIES(LXQT_LIBRARIES PROPERTIES OBJECT_DEPENDS lxqt${LXQT_QT_VERSION})
if (LXQT_QT_VERSION EQUAL "4")
find_package(Qt4 REQUIRED QUIET)
include(${QT_USE_FILE})
find_package(QTXDG REQUIRED)
elseif(LXQT_QT_VERSION EQUAL "5")
find_package(Qt5Widgets REQUIRED QUIET)
find_package(Qt5DBus REQUIRED QUIET)
find_package(Qt5X11Extras REQUIRED QUIET)
find_package(Qt5LinguistTools REQUIRED QUIET)
find_package(Qt5Xdg REQUIRED)
find_package(KF5WindowSystem REQUIRED QUIET)
else()
message(FATAL "Qt${LXQT_QT_VERSION} is not supported.")
endif()
list(APPEND CMAKE_MODULE_PATH ${LXQT_CMAKE_MODULES_DIR})
# Works for Qt4 and Qt5
include(${QTXDG_USE_FILE})
macro(lxqt_set_default_value VAR_NAME VAR_VALUE)
if (NOT DEFINED ${VAR_NAME})
set (${VAR_NAME} ${VAR_VALUE})
endif ()
endmacro()
#
# Write a pkg-config pc file for given "name" with "decription"
# Arguments:
# name: a library name (withoud "lib" prefix and "so" suffixes
# desc: a desription string
#
macro(lxqt_create_pkgconfig_file name desc requires include_rel_dir version)
set(_pkgfname "${CMAKE_CURRENT_BINARY_DIR}/${name}.pc")
message(STATUS "${name}: writing pkgconfig file ${_pkgfname}")
file(WRITE "${_pkgfname}"
"# file generated by razor-qt cmake build\n"
"prefix=${CMAKE_INSTALL_PREFIX}\n"
"libdir=\${prefix}/${CMAKE_INSTALL_LIBDIR}\n"
"includedir=\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}\n"
"\n"
"Name: ${name}\n"
"Description: ${desc}\n"
"Version: ${version}\n"
"Requires: ${requires}\n"
"Libs: -L\${libdir} -l${name}\n"
"Cflags: -I\${includedir} -I\${includedir}/${include_rel_dir}\n"
"\n"
)
install(FILES ${_pkgfname} DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endmacro()

@ -0,0 +1,15 @@
/* This file has been generated by the CMake lxqt_app_translation_loader().
* It loads LXQt application translations.
*
* Attention: All changes will be overwritten!!!
*/
#include <QCoreApplication>
#include <LXQt/Translator>
static void loadAppTranslation()
{
LxQt::Translator::translateApplication(QStringLiteral("@catalog_name@"));
}
Q_COREAPP_STARTUP_FUNCTION(loadAppTranslation)

@ -0,0 +1,15 @@
/* This file has been generated by the CMake lxqt_app_translation_loader().
* It loads LXQt libraries translations.
*
* Attention: All changes will be overwritten!!!
*/
#include <QCoreApplication>
#include <LXQt/Translator>
static void loadLibTranslation()
{
LxQt::Translator::translateLibrary(QStringLiteral("@catalog_name@"));
}
Q_COREAPP_STARTUP_FUNCTION(loadLibTranslation)

@ -0,0 +1,32 @@
#=============================================================================
# Copyright 2014 Luís Pereira <luis.artur.pereira@gmail.com>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#=============================================================================
#
# An convenience module that loads all the LXQt translations modules at once.
include(LXQtTranslateTs)
include(LXQtTranslateDesktop)
include(LXQtTranslationLoader)

@ -0,0 +1,107 @@
#=============================================================================
# The lxqt_translate_desktop() function was copied from the the
# LXQt LxQtTranste.cmake
#
# Original Author: Alexander Sokolov <sokoloff.a@gmail.com>
#
# funtion lxqt_translate_desktop(_RESULT
# SOURCES <sources>
# [TRANSLATION_DIR] translation_directory
# )
# Output:
# _RESULT The generated .desktop (.desktop) files
#
# Input:
#
# SOURCES List of input desktop files (.destktop.in) to be translated
# (merged), relative to the CMakeList.txt.
#
# TRANSLATION_DIR Optional path to the directory with the .ts files,
# relative to the CMakeList.txt. Defaults to
# "translations".
#
#=============================================================================
function(lxqt_translate_desktop _RESULT)
# Parse arguments ***************************************
set(oneValueArgs TRANSLATION_DIR)
set(multiValueArgs SOURCES)
cmake_parse_arguments(_ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
# check for unknown arguments
set(_UNPARSED_ARGS ${_ARGS_UNPARSED_ARGUMENTS})
if (NOT ${_UNPARSED_ARGS} STREQUAL "")
MESSAGE(FATAL_ERROR
"Unknown arguments '${_UNPARSED_ARGS}'.\n"
"See lxqt_translate_desktop() documenation for more information.\n"
)
endif()
if (NOT DEFINED _ARGS_SOURCES)
set(${_RESULT} "" PARENT_SCOPE)
return()
else()
set(_sources ${_ARGS_SOURCES})
endif()
if (NOT DEFINED _ARGS_TRANSLATION_DIR)
set(_translationDir "translations")
else()
set(_translationDir ${_ARGS_TRANSLATION_DIR})
endif()
get_filename_component (_translationDir ${_translationDir} ABSOLUTE)
foreach (_inFile ${_sources})
get_filename_component(_inFile ${_inFile} ABSOLUTE)
get_filename_component(_fileName ${_inFile} NAME_WE)
#Extract the real extension ............
get_filename_component(_fileExt ${_inFile} EXT)
string(REPLACE ".in" "" _fileExt ${_fileExt})
#.......................................
set(_outFile "${CMAKE_CURRENT_BINARY_DIR}/${_fileName}${_fileExt}")
file(GLOB _translations
${_translationDir}/${_fileName}_*${_fileExt}
${_translationDir}/local/${_fileName}_*${_fileExt}
)
set(_pattern "'\\[.*]\\s*='")
if (_translations)
add_custom_command(OUTPUT ${_outFile}
COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile}
COMMAND grep -h ${_pattern} ${_translations} >> ${_outFile}
COMMENT "Generating ${_fileName}${_fileExt}"
)
else()
add_custom_command(OUTPUT ${_outFile}
COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile}
COMMENT "Generating ${_fileName}${_fileExt}"
)
endif()
set(__result ${__result} ${_outFile})
# TX file ***********************************************
set(_txFile "${CMAKE_BINARY_DIR}/tx/${_fileName}${_fileExt}.tx.sh")
string(REPLACE "${CMAKE_SOURCE_DIR}/" "" _tx_translationDir ${_translationDir})
string(REPLACE "${CMAKE_SOURCE_DIR}/" "" _tx_inFile ${_inFile})
string(REPLACE "." "" _fileType ${_fileExt})
file(WRITE ${_txFile}
"[ -f ${_inFile} ] || exit 0\n"
"echo '[lxde-qt.${_fileName}_${_fileType}]'\n"
"echo 'type = DESKTOP'\n"
"echo 'source_lang = en'\n"
"echo 'source_file = ${_tx_inFile}'\n"
"echo 'file_filter = ${_tx_translationDir}/${_fileName}_<lang>${_fileExt}'\n"
"echo ''\n"
)
endforeach()
set(${_RESULT} ${__result} PARENT_SCOPE)
endfunction(lxqt_translate_desktop)

@ -0,0 +1,131 @@
#=============================================================================
# Copyright 2014 Luís Pereira <luis.artur.pereira@gmail.com>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#=============================================================================
#
# funtion lxqt_translate_ts(qmFiles
# [USE_QT5 [Yes | No]]
# [UPDATE_TRANSLATIONS [Yes | No]]
# SOURCES <sources>
# [TEMPLATE] translation_template
# [TRANSLATION_DIR] translation_directory
# [INSTALL_DIR] install_directory
# )
# Output:
# qmFiles The generated compiled translations (.qm) files
#
# Input:
# USE_QT5 Optional flag to choose between Qt4 and Qt5. Defaults to Qt5
#
# UPDATE_TRANSLATIONS Optional flag. Setting it to Yes, extracts and
# compiles the translations. Setting it No, only
# compiles them.
#
# TEMPLATE Optional translations files base name. Defaults to
# ${PROJECT_NAME}. An .ts extensions is added.
#
# TRANSLATION_DIR Optional path to the directory with the .ts files,
# relative to the CMakeList.txt. Defaults to
# "translations".
#
# INSTALL_DIR Optional destination of the file compiled files (qmFiles).
# If not present no installation is performed
# CMake v2.8.3 needed to use the CMakeParseArguments module
cmake_minimum_required(VERSION 2.8.3 FATAL_ERROR)
# We use our patched version to round a annoying bug.
include(Qt5PatchedLinguistToolsMacros)
function(lxqt_translate_ts qmFiles)
set(oneValueArgs USE_QT5 UPDATE_TRANSLATIONS TEMPLATE TRANSLATION_DIR INSTALL_DIR)
set(multiValueArgs SOURCES)
cmake_parse_arguments(TR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if (NOT DEFINED TR_UPDATE_TRANSLATIONS)
set(TR_UPDATE_TRANSLATIONS "No")
endif()
if (NOT DEFINED TR_USE_QT5)
set(TR_USE_QT5 "Yes")
endif()
if(NOT DEFINED TR_TEMPLATE)
set(TR_TEMPLATE "${PROJECT_NAME}")
endif()
if (NOT DEFINED TR_TRANSLATION_DIR)
set(TR_TRANSLATION_DIR "translations")
endif()
file(GLOB tsFiles "${TR_TRANSLATION_DIR}/${TR_TEMPLATE}_*.ts")
set(templateFile "${TR_TRANSLATION_DIR}/${TR_TEMPLATE}.ts")
if(TR_USE_QT5)
# Qt5
if (TR_UPDATE_TRANSLATIONS)
qt5_patched_create_translation(QMS
${TR_SOURCES}
${templateFile}
OPTIONS -locations absolute
)
qt5_patched_create_translation(QM
${TR_SOURCES}
${tsFiles}
OPTIONS -locations absolute
)
else()
qt5_patched_add_translation(QM ${tsFiles})
endif()
else()
# Qt4
if(TR_UPDATE_TRANSLATIONS)
qt4_create_translation(QMS
${TR_SOURCES}
${templateFile}
OPTIONS -locations absolute
)
qt4_create_translation(QM
${TR_SOURCES}
${tsFiles}
OPTIONS -locations absolute
)
else()
qt4_add_translation(QM ${tsFiles})
endif()
endif()
if(TR_UPDATE_TRANSLATIONS)
add_custom_target("update_${TR_TEMPLATE}_ts" ALL DEPENDS ${QMS})
endif()
if(DEFINED TR_INSTALL_DIR)
install(FILES ${QM} DESTINATION ${TR_INSTALL_DIR})
endif()
set(${qmFiles} ${QM} PARENT_SCOPE)
endfunction()

@ -0,0 +1,61 @@
#=============================================================================
# Copyright 2014 Luís Pereira <luis.artur.pereira@gmail.com>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#=============================================================================
#
# These functions enables "automatic" translation loading in LXQt Qt5 apps
# and libs. They generate a .cpp file that takes care of everything. The
# user doesn't have to do anything in the source code.
#
# Typical use:
# include(LXQtTranslationLoader)
# lxqt_app_translation_loader(lxqt-app_QM_LOADER ${PROJECT_NAME})
# add_executable(${PROJECT_NAME}
# ${lxqt-app_QM_LOADER}
# ...
# )
# lxqt_app_translation_loader(<source_files> <catalog_name>)
# <source_files> The generated .cpp file is added to <source_files>
# <catalog_name> Translations catalog to be loaded
function(lxqt_app_translation_loader source_files catalog_name)
configure_file(
${LXQT_CMAKE_MODULES_DIR}/LXQtAppTranslationLoader.cpp.in
LXQtAppTranslationLoader.cpp @ONLY
)
set(${source_files} ${${source_files}} ${CMAKE_CURRENT_BINARY_DIR}/LXQtAppTranslationLoader.cpp PARENT_SCOPE)
endfunction()
# lxqt_lib_translation_loader(<source_files> <catalog_name>)
# <source_files> The generated .cpp file is added to <source_files>
# <catalog_name> Translations catalog to be loaded
function(lxqt_lib_translation_loader source_files catalog_name)
configure_file(
${LXQT_CMAKE_MODULES_DIR}/LXQtLibTranslationLoader.cpp.in
LXQtLibTranslationLoader.cpp @ONLY
)
set(${source_files} ${${source_files}} ${CMAKE_CURRENT_BINARY_DIR}/LXQtLibTranslationLoader.cpp PARENT_SCOPE)
endfunction()

@ -0,0 +1,112 @@
#=============================================================================
# Copyright 2005-2011 Kitware, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# * Neither the name of Kitware, Inc. nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#=============================================================================
include(CMakeParseArguments)
function(QT5_PATCHED_CREATE_TRANSLATION _qm_files)
set(options)
set(oneValueArgs)
set(multiValueArgs OPTIONS)
cmake_parse_arguments(_LUPDATE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(_lupdate_files ${_LUPDATE_UNPARSED_ARGUMENTS})
set(_lupdate_options ${_LUPDATE_OPTIONS})
set(_my_sources)
set(_my_tsfiles)
foreach(_file ${_lupdate_files})
get_filename_component(_ext ${_file} EXT)
get_filename_component(_abs_FILE ${_file} ABSOLUTE)
if(_ext MATCHES "ts")
list(APPEND _my_tsfiles ${_abs_FILE})
else()
list(APPEND _my_sources ${_abs_FILE})
endif()
endforeach()
foreach(_ts_file ${_my_tsfiles})
if(_my_sources)
# make a list file to call lupdate on, so we don't make our commands too
# long for some systems
# get_filename_component(_ts_name ${_ts_file} NAME_WE)
get_filename_component(_name ${_ts_file} NAME)
string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _ts_name ${_name})
set(_ts_lst_file "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_ts_name}_lst_file")
set(_lst_file_srcs)
foreach(_lst_file_src ${_my_sources})
set(_lst_file_srcs "${_lst_file_src}\n${_lst_file_srcs}")
endforeach()
get_directory_property(_inc_DIRS INCLUDE_DIRECTORIES)
foreach(_pro_include ${_inc_DIRS})
get_filename_component(_abs_include "${_pro_include}" ABSOLUTE)
set(_lst_file_srcs "-I${_pro_include}\n${_lst_file_srcs}")
endforeach()
file(WRITE ${_ts_lst_file} "${_lst_file_srcs}")
endif()
add_custom_command(OUTPUT ${_ts_file}
COMMAND ${Qt5_LUPDATE_EXECUTABLE}
ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file}
DEPENDS ${_my_sources} ${_ts_lst_file} VERBATIM)
endforeach()
qt5_patched_add_translation(${_qm_files} ${_my_tsfiles})
set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
endfunction()
function(QT5_PATCHED_ADD_TRANSLATION _qm_files)
foreach(_current_FILE ${ARGN})
get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE)
# get_filename_component(qm ${_abs_FILE} NAME_WE)
get_filename_component(_name ${_abs_FILE} NAME)
string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" qm ${_name})
get_source_file_property(output_location ${_abs_FILE} OUTPUT_LOCATION)
if(output_location)
file(MAKE_DIRECTORY "${output_location}")
set(qm "${output_location}/${qm}.qm")
else()
set(qm "${CMAKE_CURRENT_BINARY_DIR}/${qm}.qm")
endif()
add_custom_command(OUTPUT ${qm}
COMMAND ${Qt5_LRELEASE_EXECUTABLE}
ARGS ${_abs_FILE} -qm ${qm}
DEPENDS ${_abs_FILE} VERBATIM
)
list(APPEND ${_qm_files} ${qm})
endforeach()
set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
endfunction()

@ -0,0 +1,47 @@
#=============================================================================
# Copyright 2014 Luís Pereira <luis.artur.pereira@gmail.com>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#=============================================================================
#
# These functions enables "automatic" translation loading in Qt5 apps
# and libs. They generate a .cpp file that takes care of everything. The
# user doesn't have to do anything in the source code.
#
# qt5_translation_loader(<source_files> <translations_dir> <catalog_name>)
#
# Output:
# <source_files> Appends the generated file to this variable.
#
# Input:
# <translations_dir> Full path name to the translations dir.
# <catalog_name> Translation catalog to be loaded.
function(qt5_translation_loader source_files translations_dir catalog_name)
configure_file(
${LXQT_CMAKE_MODULES_DIR}/Qt5TranslationLoader.cpp.in
Qt5TranslationLoader.cpp @ONLY
)
set(${source_files} ${${source_files}} ${CMAKE_CURRENT_BINARY_DIR}/Qt5TranslationLoader.cpp PARENT_SCOPE)
endfunction()

@ -0,0 +1,33 @@
/* This file has been generated by the CMake qt_translation_loader().
* It loads Qt application translations.
*
* Attention: All changes will be overwritten!!!
*/
#include <QCoreApplication>
#include <QLocale>
#include <QTranslator>
#include <QLibraryInfo>
static void loadQtTranslation()
{
QString locale = QLocale::system().name();
QTranslator *qtTranslator = new QTranslator(qApp);
if (qtTranslator->load("qt_" + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath))) {
qApp->installTranslator(qtTranslator);
} else {
delete qtTranslator;
}
QTranslator *appTranslator = new QTranslator(qApp);
if (appTranslator->load(QString("@translations_dir@/@catalog_name@_%1.qm").arg(locale))) {
QCoreApplication::installTranslator(appTranslator);
} else if (locale == QLatin1String("C") ||
locale.startsWith(QLatin1String("en"))) {
// English is the default. It's translated anyway.
delete appTranslator;
}
}
Q_COREAPP_STARTUP_FUNCTION(loadQtTranslation)

@ -0,0 +1,104 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright (C) 2012 Alec Moskvin <alecm@gmx.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtconfigdialog.h"
#include "ui_lxqtconfigdialog.h"
#include <XdgIcon>
#include <QPushButton>
using namespace LxQt;
ConfigDialog::ConfigDialog(const QString& title, Settings* settings, QWidget* parent) :
QDialog(parent),
mSettings(settings),
mCache(new SettingsCache(settings)),
ui(new Ui::ConfigDialog)
{
ui->setupUi(this);
setWindowTitle(title);
connect(ui->buttons, SIGNAL(clicked(QAbstractButton*)), SLOT(dialogButtonsAction(QAbstractButton*)));
ui->moduleList->setVisible(false);
connect(Settings::globalSettings(), SIGNAL(settingsChanged()), this, SLOT(updateIcons()));
foreach(QPushButton* button, ui->buttons->findChildren<QPushButton*>())
button->setAutoDefault(false);
}
void ConfigDialog::addPage(QWidget* page, const QString& name, const QString& iconName)
{
addPage(page, name, QStringList() << iconName);
}
void ConfigDialog::addPage(QWidget* page, const QString& name, const QStringList& iconNames)
{
QStringList icons = QStringList(iconNames) << "application-x-executable";
new QListWidgetItem(XdgIcon::fromTheme(icons), name, ui->moduleList);
mIcons.append(icons);
ui->stackedWidget->addWidget(page);
if(ui->stackedWidget->count() > 1)
{
ui->moduleList->setVisible(true);
ui->moduleList->setCurrentRow(0);
mMaxSize = QSize(qMax(page->geometry().width() + ui->moduleList->geometry().width(), mMaxSize.width()),
qMax(page->geometry().height() + ui->buttons->geometry().height(), mMaxSize.height()));
}
else
{
mMaxSize = page->geometry().size();
}
resize(mMaxSize);
}
void ConfigDialog::closeEvent(QCloseEvent* event)
{
emit save();
mSettings->sync();
}
void ConfigDialog::dialogButtonsAction(QAbstractButton* button)
{
QDialogButtonBox::ButtonRole role = ui->buttons->buttonRole(button);
if (role == QDialogButtonBox::ResetRole)
{
mCache->loadToSettings();
emit reset();
}
else
{
close();
}
}
void ConfigDialog::updateIcons()
{
for (int ix = 0; ix < mIcons.size(); ix++)
ui->moduleList->item(ix)->setIcon(XdgIcon::fromTheme(mIcons.at(ix)));
update();
}
ConfigDialog::~ConfigDialog()
{
delete ui;
delete mCache;
}

@ -0,0 +1,88 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright (C) 2012 Alec Moskvin <alecm@gmx.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTCONFIGDIALOG_H
#define LXQTCONFIGDIALOG_H
#include "lxqtsettings.h"
#include <QDialog>
#include <QAbstractButton>
#include "lxqtglobals.h"
namespace Ui {
class ConfigDialog;
}
namespace LxQt
{
class LXQT_API ConfigDialog : public QDialog
{
Q_OBJECT
public:
explicit ConfigDialog(const QString& title, Settings* settings, QWidget* parent = 0);
~ConfigDialog();
/*!
* Add a page to the configure dialog
*/
void addPage(QWidget* page, const QString& name, const QString& iconName="application-x-executable");
/*!
* Add a page to the configure dialog, attempting several alternative icons to find one in the theme
*/
void addPage(QWidget* page, const QString& name, const QStringList& iconNames);
signals:
/*!
* This signal is emitted when the user pressed the "Reset" button.
* Settings should be re-read and the widgets should be set accordingly.
*/
void reset();
/*!
* This is emitted whenever the window is closed and settings need to be saved.
* It is only necessary if additional actions need to be performed - Settings are handled automatically.
*/
void save();
protected:
Settings* mSettings;
virtual void closeEvent(QCloseEvent* event);
private:
SettingsCache* mCache;
QList<QStringList> mIcons;
QSize mMaxSize;
Ui::ConfigDialog* ui;
private slots:
void dialogButtonsAction(QAbstractButton* button);
void updateIcons();
};
} // namespace LxQt
#endif // LXQTCONFIGDIALOG_H

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ConfigDialog</class>
<widget class="QWidget" name="ConfigDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>272</width>
<height>231</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="LxQt::PageSelectWidget" name="moduleList">
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QStackedWidget" name="stackedWidget">
<property name="currentIndex">
<number>-1</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="buttons">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Close|QDialogButtonBox::Reset</set>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>LxQt::PageSelectWidget</class>
<extends>QListWidget</extends>
<header location="global">configdialog/lxqtpageselectwidget.h</header>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>moduleList</tabstop>
<tabstop>buttons</tabstop>
</tabstops>
<resources/>
<connections>
<connection>
<sender>moduleList</sender>
<signal>currentRowChanged(int)</signal>
<receiver>stackedWidget</receiver>
<slot>setCurrentIndex(int)</slot>
<hints>
<hint type="sourcelabel">
<x>150</x>
<y>123</y>
</hint>
<hint type="destinationlabel">
<x>344</x>
<y>117</y>
</hint>
</hints>
</connection>
</connections>
</ui>

@ -0,0 +1,113 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtpageselectwidget.h"
#include <QDebug>
#include <QStyledItemDelegate>
#include <QScrollBar>
using namespace LxQt;
class PageSelectWidgetItemDelegate: public QStyledItemDelegate
{
public:
explicit PageSelectWidgetItemDelegate(PageSelectWidget *parent = 0);
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
private:
PageSelectWidget* mView;
};
/************************************************
************************************************/
PageSelectWidgetItemDelegate::PageSelectWidgetItemDelegate(PageSelectWidget *parent):
QStyledItemDelegate(parent),
mView(parent)
{
}
/************************************************
************************************************/
QSize PageSelectWidgetItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QSize size = QStyledItemDelegate::sizeHint(option, index);
size.setWidth(mView->viewport()->width() - 2*mView->spacing());
return size;
}
/************************************************
************************************************/
PageSelectWidget::PageSelectWidget(QWidget *parent) :
QListWidget(parent)
{
setSelectionRectVisible(false);
setViewMode(IconMode);
setSpacing(2);
setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding);
setWordWrap(true);
setDragEnabled(NoDragDrop);
setEditTriggers(NoEditTriggers);
setTextElideMode(Qt::ElideNone);
setItemDelegate(new PageSelectWidgetItemDelegate(this));
}
/************************************************
************************************************/
PageSelectWidget::~PageSelectWidget()
{
}
/************************************************
************************************************/
QSize PageSelectWidget::sizeHint() const
{
QSize size = QListWidget::sizeHint();
int w = 0;
for(int i=0; i< count(); ++i)
{
QRect rect = fontMetrics().boundingRect(QRect(), Qt::AlignLeft | Qt::TextWordWrap, item(i)->text());
w = qMax(w, rect.width());
}
if (horizontalScrollBar()->isVisible())
w += horizontalScrollBar()->width();
size.setWidth(w + frameWidth() + spacing()*2 + 10);
return size;
}

@ -0,0 +1,50 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTPAGESELECTWIDGET_H
#define LXQTPAGESELECTWIDGET_H
#include "lxqtglobals.h"
#include <QListWidget>
namespace LxQt
{
class LXQT_API PageSelectWidget : public QListWidget
{
Q_OBJECT
public:
explicit PageSelectWidget(QWidget *parent = 0);
virtual ~PageSelectWidget();
protected:
QSize sizeHint() const;
};
} // namespace LxQt
#endif // PAGESELECTWIDGET_H

@ -0,0 +1,69 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<!--
Based on the output of command:
qdbus org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.DBus.Introspectable.Introspect
against xfce4-notifyd
-->
<node>
<!--interface name="org.freedesktop.DBus.Introspectable">
<method name="Introspect">
<arg name="data" direction="out" type="s"/>
</method>
</interface>
<interface name="org.freedesktop.DBus.Properties">
<method name="Get">
<arg name="interface" direction="in" type="s"/>
<arg name="propname" direction="in" type="s"/>
<arg name="value" direction="out" type="v"/>
</method>
<method name="Set">
<arg name="interface" direction="in" type="s"/>
<arg name="propname" direction="in" type="s"/>
<arg name="value" direction="in" type="v"/>
</method>
<method name="GetAll">
<arg name="interface" direction="in" type="s"/>
<arg name="props" direction="out" type="a{sv}"/>
</method>
</interface>
<interface name="org.xfce.Notifyd">
<method name="Quit">
</method>
</interface-->
<interface name="org.freedesktop.Notifications">
<method name="GetServerInformation">
<arg name="name" type="s" direction="out"/>
<arg name="vendor" type="s" direction="out"/>
<arg name="version" type="s" direction="out"/>
<arg name="spec_version" type="s" direction="out"/>
</method>
<method name="CloseNotification">
<arg name="id" type="u" direction="in"/>
</method>
<method name="Notify">
<annotation name="com.trolltech.QtDBus.QtTypeName.In6" value="QVariantMap"/>
<arg name="app_name" type="s" direction="in"/>
<arg name="replaces_id" type="u" direction="in"/>
<arg name="app_icon" type="s" direction="in"/>
<arg name="summary" type="s" direction="in"/>
<arg name="body" type="s" direction="in"/>
<arg name="actions" type="as" direction="in"/>
<arg name="hints" type="a{sv}" direction="in"/>
<arg name="expire_timeout" type="i" direction="in"/>
<arg name="id" type="u" direction="out"/>
</method>
<method name="GetCapabilities">
<arg name="capabilities" type="as" direction="out"/>
</method>
<signal name="ActionInvoked">
<arg type="u"/>
<arg type="s"/>
</signal>
<signal name="NotificationClosed">
<arg type="u"/>
<arg type="u"/>
</signal>
</interface>
</node>

@ -0,0 +1,7 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="org.lxqt.SingleApplication">
<method name="activateWindow">
</method>
</interface>
</node>

@ -0,0 +1,4 @@
/*! \mainpage A minimal shared library for LXQt DE.
liblxqt containing shared classes for LXQt developed by LXQt team and contributors.
*/

@ -0,0 +1,117 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2012-2013 Razor team
* Authors:
* Petr Vanek <petr@scribus.info>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include <QDir>
#include "lxqtapplication.h"
#include "lxqtsettings.h"
#include <XdgIcon>
#include <XdgDirs>
using namespace LxQt;
#define COLOR_DEBUG "\033[32;2m"
#define COLOR_WARN "\033[33;2m"
#define COLOR_CRITICAL "\033[31;1m"
#define COLOR_FATAL "\033[33;1m"
#define COLOR_RESET "\033[0m"
#define QAPP_NAME qApp ? qApp->objectName().toUtf8().constData() : ""
#include <cstdio>
#include <cstdlib>
#include <unistd.h>
#include <QDateTime>
/*! \brief Log qDebug input to file
Used only in pure Debug builds or when is the system environment
variable LXQT_DEBUG set
*/
void dbgMessageOutput(QtMsgType type, const QMessageLogContext &ctx, const QString & msgStr)
{
QByteArray msgBuf = msgStr.toUtf8();
const char* msg = msgBuf.constData();
QDir dir(XdgDirs::configHome().toUtf8() + "/lxqt");
dir.mkpath(".");
const char* typestr;
const char* color;
switch (type) {
case QtDebugMsg:
typestr = "Debug";
color = COLOR_DEBUG;
break;
case QtWarningMsg:
typestr = "Warning";
color = COLOR_WARN;
break;
case QtFatalMsg:
typestr = "Fatal";
color = COLOR_FATAL;
break;
default: // QtCriticalMsg
typestr = "Critical";
color = COLOR_CRITICAL;
}
QByteArray dt = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz").toUtf8();
if (isatty(STDERR_FILENO))
fprintf(stderr, "%s %s(%p) %s: %s%s\n", color, QAPP_NAME, qApp, typestr, msg, COLOR_RESET);
else
fprintf(stderr, "%s(%p) %s: %s\n", QAPP_NAME, qApp, typestr, msg);
FILE *f = fopen(dir.absoluteFilePath("debug.log").toUtf8().constData(), "a+");
fprintf(f, "%s %s(%p) %s: %s\n", dt.constData(), QAPP_NAME, qApp, typestr, msg);
fclose(f);
if (type == QtFatalMsg)
abort();
}
Application::Application(int &argc, char** argv)
: QApplication(argc, argv)
{
#ifdef DEBUG
qInstallMessageHandler(dbgMessageOutput);
#else
if (!qgetenv("LXQT_DEBUG").isNull())
qInstallMessageHandler(dbgMessageOutput);
#endif
XdgIcon::setThemeName(Settings::globalSettings()->value("icon_theme").toString());
setWindowIcon(QIcon(QString(LXQT_SHARE_DIR) + "/graphics/lxqt_logo.png"));
connect(Settings::globalSettings(), SIGNAL(lxqtThemeChanged()), this, SLOT(updateTheme()));
updateTheme();
}
void Application::updateTheme()
{
QString styleSheetKey = QFileInfo(applicationFilePath()).fileName();
setStyleSheet(lxqtTheme.qss(styleSheetKey));
emit themeChanged();
}

@ -0,0 +1,71 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2012-2013 Razor team
* Authors:
* Petr Vanek <petr@scribus.info>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTAPPLICATION_H
#define LXQTAPPLICATION_H
#include <QApplication>
#include <QProxyStyle>
#include "lxqtglobals.h"
namespace LxQt
{
/*! \brief LXQt wrapper around QApplication.
* It loads various LXQt related stuff by default (window icon, icon theme...)
*
* \note This wrapper is intended to be used only inside LXQt project. Using it
* in external application will automatically require linking to various
* LXQt libraries.
*
*/
class LXQT_API Application : public QApplication
{
Q_OBJECT
public:
/*! Construct a LXQt application object.
* \param argc standard argc as in QApplication
* \param argv standard argv as in QApplication
*/
Application(int &argc, char **argv);
virtual ~Application() {}
private slots:
void updateTheme();
signals:
void themeChanged();
};
#if defined(lxqtApp)
#undef lxqtApp
#endif
#define lxqtApp (static_cast<LxQt::Application *>(qApp))
} // namespace LxQt
#endif // LXQTAPPLICATION_H

@ -0,0 +1,129 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright (C) 2012 Alec Moskvin <alecm@gmx.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtautostartentry.h"
#include <QFileInfo>
#include <XdgAutoStart>
#include <XdgDirs>
using namespace LxQt;
AutostartEntry::AutostartEntry() :
mLocalState(StateNone), mSystem(false)
{
}
AutostartEntry::AutostartEntry(const QString& name):
mLocalState(StateNone), mSystem(false)
{
foreach (const QString& dir, XdgDirs::autostartDirs())
{
QString path = QString("%1/%2").arg(dir, name);
if (QFile(path).exists())
{
mSystemFile.load(path);
mSystem = true;
break;
}
}
QString path = QString("%1/%2").arg(XdgDirs::autostartHome(), name);
if (QFile(path).exists())
{
mLocalFile.load(path);
mLocalState = StateExists;
}
}
void AutostartEntry::setFile(const XdgDesktopFile& file)
{
bool local = isLocal();
if (mSystem && local && file == mSystemFile)
{
removeLocal();
}
else
{
if (local)
mLocalState = StateModified;
else
mLocalState = StateTransient;
mLocalFile = file;
}
}
bool AutostartEntry::removeLocal()
{
if (!isLocal())
return false;
if (mLocalState == StateTransient)
mLocalState = StateNone;
else
mLocalState = StateDeleted;
return !mSystem;
}
const XdgDesktopFile& AutostartEntry::file() const
{
return isLocal() ? mLocalFile : mSystemFile;
}
QString AutostartEntry::name() const
{
return QFileInfo(file().fileName()).fileName();
}
void AutostartEntry::setEnabled(bool enable)
{
XdgDesktopFile f = file();
if (enable)
f.removeEntry("Hidden");
else
f.setValue("Hidden", true);
setFile(f);
}
bool AutostartEntry::isEnabled() const
{
return !isEmpty() && !file().value("Hidden", false).toBool();
}
bool AutostartEntry::commit()
{
if (mLocalState == StateDeleted)
{
mLocalState = StateNone;
return QFile::remove(mLocalFile.fileName());
}
else if (mLocalState == StateModified || mLocalState == StateTransient)
{
mLocalState = StateExists;
return mLocalFile.save(XdgAutoStart::localPath(mLocalFile));
}
return true;
}

@ -0,0 +1,114 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright (C) 2012 Alec Moskvin <alecm@gmx.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTAUTOSTARTENTRY_H
#define LXQTAUTOSTARTENTRY_H
#include "lxqtglobals.h"
#include <XdgDesktopFile>
namespace LxQt
{
/*! \brief The AutostartEntry class provides an interface for staging configuration of individual
autostart items. All changes are made in memory until commit() is called.
- "system" file refers to a read-only file in /etc/xdg/autostart (or a directory in $XDG_CONFIG_DIRS)
- "local" file refers to the file in user's ~/.config/autostart (or in $XDG_CONFIG_HOME/autostart)
When a "local" file has the same name as the "system" file, the local one overrides it. This class
tries to ensure that the "local" file is deleted if it's identical to the "system" file.
*/
class LXQT_API AutostartEntry
{
public:
/*! Constructs an AutostartEntry object for a specific entry.
* \param name The name of the autostart desktop file (e.g. "lxqt-panel.desktop")
*/
AutostartEntry(const QString& name);
//! \brief Default constructor
AutostartEntry();
//! Destructor
virtual ~AutostartEntry() { }
//! Returns the "active" desktop file
const XdgDesktopFile& file() const;
//! Returns the name of the autostart entry (e.g. "lxqt-panel.desktop")
QString name() const;
/*! Sets to the specified desktop file. Use this to make modifications.
* \param file The desktop file
*/
void setFile(const XdgDesktopFile& file);
/*! Sets whether the item auto-starts
* \param enable When false, sets the "Hidden" key which will prevent the item from starting
*/
void setEnabled(bool enable);
//! Returns true if the item will auto-start
bool isEnabled() const;
/*! Returns true if the entry does not exist, and the object carries no useful information
* and can be ignored/deleted.
*/
bool isEmpty() const { return !mSystem && mLocalState == StateNone; }
/*! Write any changes to disk
* \return true on success
*/
bool commit();
protected:
//! Returns true if the user's "local" version exists
bool isLocal() const { return mLocalState != StateNone && mLocalState != StateDeleted; }
/*! Removes the user's "local" version of the file, reverting to system defaults
* \return true if there is no "system" version left (i.e. the entry was entirely deleted)
*/
bool removeLocal();
//! \brief a read-only file in /etc/xdg/autostart (or a directory in $XDG_CONFIG_DIRS)
XdgDesktopFile mSystemFile;
//! \brief the file in user's ~/.config/autostart (or in $XDG_CONFIG_HOME/autostart)
XdgDesktopFile mLocalFile;
//! State of the "local" file
enum ItemState
{
StateNone, //! does not exist at all
StateDeleted, //! needs to be deleted from disk
StateTransient, //! does not yet exist on disk
StateModified, //! exists on disk and is modified
StateExists //! exists on disk and unmodified
} mLocalState;
bool mSystem; //! true if the "system" file exists
};
} // namespace LxQt
#endif // LXQTAUTOSTARTENTRY_H

@ -0,0 +1,39 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2013 - LXQt team
* Authors:
* Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef _LXQT_GLOBALS_H_
#define _LXQT_GLOBALS_H_
#include <QtGlobal>
#ifdef COMPILE_LIBLXQT
#define LXQT_API Q_DECL_EXPORT
#else
#define LXQT_API Q_DECL_IMPORT
#endif
#endif // _LXQT_GLOBALS_H_

@ -0,0 +1,609 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2012 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtgridlayout.h"
#include <QDebug>
#include <math.h>
#include <QWidget>
using namespace LxQt;
class LxQt::GridLayoutPrivate
{
public:
GridLayoutPrivate();
QList<QLayoutItem*> mItems;
int mRowCount;
int mColumnCount;
GridLayout::Direction mDirection;
bool mIsValid;
QSize mCellSizeHint;
QSize mCellMaxSize;
int mVisibleCount;
GridLayout::Stretch mStretch;
void updateCache();
int rows() const;
int cols() const;
QSize mPrefCellMinSize;
QSize mPrefCellMaxSize;
};
/************************************************
************************************************/
GridLayoutPrivate::GridLayoutPrivate()
{
mColumnCount = 0;
mRowCount = 0;
mDirection = GridLayout::LeftToRight;
mIsValid = false;
mVisibleCount = 0;
mStretch = GridLayout::StretchHorizontal | GridLayout::StretchVertical;
mPrefCellMinSize = QSize(0,0);
mPrefCellMaxSize = QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
}
/************************************************
************************************************/
void GridLayoutPrivate::updateCache()
{
mCellSizeHint = QSize(0, 0);
mCellMaxSize = QSize(0, 0);
mVisibleCount = 0;
for (int i=0; i<mItems.count(); ++i)
{
QLayoutItem *item = mItems.at(i);
if (!item->widget() || item->widget()->isHidden())
continue;
int h = qBound(item->minimumSize().height(),
item->sizeHint().height(),
item->maximumSize().height());
int w = qBound(item->minimumSize().width(),
item->sizeHint().width(),
item->maximumSize().width());
mCellSizeHint.rheight() = qMax(mCellSizeHint.height(), h);
mCellSizeHint.rwidth() = qMax(mCellSizeHint.width(), w);
mCellMaxSize.rheight() = qMax(mCellMaxSize.height(), item->maximumSize().height());
mCellMaxSize.rwidth() = qMax(mCellMaxSize.width(), item->maximumSize().width());
mVisibleCount++;
#if 0
qDebug() << "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-";
qDebug() << "item.min" << item->minimumSize().width();
qDebug() << "item.sz " << item->sizeHint().width();
qDebug() << "item.max" << item->maximumSize().width();
qDebug() << "w h" << w << h;
qDebug() << "wid.sizeHint" << item->widget()->sizeHint();
qDebug() << "mCellSizeHint:" << mCellSizeHint;
qDebug() << "mCellMaxSize: " << mCellMaxSize;
qDebug() << "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-";
#endif
}
mCellSizeHint.rwidth() = qBound(mPrefCellMinSize.width(), mCellSizeHint.width(), mPrefCellMaxSize.width());
mCellSizeHint.rheight()= qBound(mPrefCellMinSize.height(), mCellSizeHint.height(), mPrefCellMaxSize.height());
mIsValid = !mCellSizeHint.isEmpty();
}
/************************************************
************************************************/
int GridLayoutPrivate::rows() const
{
if (mRowCount)
return mRowCount;
if (!mColumnCount)
return 1;
return ceil(mVisibleCount * 1.0 / mColumnCount);
}
/************************************************
************************************************/
int GridLayoutPrivate::cols() const
{
if (mColumnCount)
return mColumnCount;
int rows = mRowCount;
if (!rows)
rows = 1;
return ceil(mVisibleCount * 1.0 / rows);
}
/************************************************
************************************************/
GridLayout::GridLayout(QWidget *parent):
QLayout(parent),
d_ptr(new GridLayoutPrivate())
{
}
/************************************************
************************************************/
GridLayout::~GridLayout()
{
delete d_ptr;
}
/************************************************
************************************************/
void GridLayout::addItem(QLayoutItem *item)
{
d_ptr->mItems.append(item);
}
/************************************************
************************************************/
QLayoutItem *GridLayout::itemAt(int index) const
{
Q_D(const GridLayout);
if (index < 0 || index >= d->mItems.count())
return 0;
return d->mItems.at(index);
}
/************************************************
************************************************/
QLayoutItem *GridLayout::takeAt(int index)
{
Q_D(GridLayout);
if (index < 0 || index >= d->mItems.count())
return 0;
QLayoutItem *item = d->mItems.takeAt(index);
return item;
}
/************************************************
************************************************/
int GridLayout::count() const
{
Q_D(const GridLayout);
return d->mItems.count();
}
/************************************************
************************************************/
void GridLayout::invalidate()
{
Q_D(GridLayout);
d->mIsValid = false;
QLayout::invalidate();
}
/************************************************
************************************************/
int GridLayout::rowCount() const
{
Q_D(const GridLayout);
return d->mRowCount;
}
/************************************************
************************************************/
void GridLayout::setRowCount(int value)
{
Q_D(GridLayout);
if (d->mRowCount != value)
{
d->mRowCount = value;
invalidate();
}
}
/************************************************
************************************************/
int GridLayout::columnCount() const
{
Q_D(const GridLayout);
return d->mColumnCount;
}
/************************************************
************************************************/
void GridLayout::setColumnCount(int value)
{
Q_D(GridLayout);
if (d->mColumnCount != value)
{
d->mColumnCount = value;
invalidate();
}
}
/************************************************
************************************************/
GridLayout::Direction GridLayout::direction() const
{
Q_D(const GridLayout);
return d->mDirection;
}
/************************************************
************************************************/
void GridLayout::setDirection(GridLayout::Direction value)
{
Q_D(GridLayout);
if (d->mDirection != value)
{
d->mDirection = value;
invalidate();
}
}
/************************************************
************************************************/
GridLayout::Stretch GridLayout::stretch() const
{
Q_D(const GridLayout);
return d->mStretch;
}
/************************************************
************************************************/
void GridLayout::setStretch(Stretch value)
{
Q_D(GridLayout);
if (d->mStretch != value)
{
d->mStretch = value;
invalidate();
}
}
/************************************************
************************************************/
void GridLayout::moveItem(int from, int to)
{
Q_D(GridLayout);
d->mItems.move(from, to);
invalidate();
}
/************************************************
************************************************/
QSize GridLayout::cellMinimumSize() const
{
Q_D(const GridLayout);
return d->mPrefCellMinSize;
}
/************************************************
************************************************/
void GridLayout::setCellMinimumSize(QSize minSize)
{
Q_D(GridLayout);
if (d->mPrefCellMinSize != minSize)
{
d->mPrefCellMinSize = minSize;
invalidate();
}
}
/************************************************
************************************************/
void GridLayout::setCellMinimumHeight(int value)
{
Q_D(GridLayout);
if (d->mPrefCellMinSize.height() != value)
{
d->mPrefCellMinSize.setHeight(value);
invalidate();
}
}
/************************************************
************************************************/
void GridLayout::setCellMinimumWidth(int value)
{
Q_D(GridLayout);
if (d->mPrefCellMinSize.width() != value)
{
d->mPrefCellMinSize.setWidth(value);
invalidate();
}
}
/************************************************
************************************************/
QSize GridLayout::cellMaximumSize() const
{
Q_D(const GridLayout);
return d->mPrefCellMaxSize;
}
/************************************************
************************************************/
void GridLayout::setCellMaximumSize(QSize maxSize)
{
Q_D(GridLayout);
if (d->mPrefCellMaxSize != maxSize)
{
d->mPrefCellMaxSize = maxSize;
invalidate();
}
}
/************************************************
************************************************/
void GridLayout::setCellMaximumHeight(int value)
{
Q_D(GridLayout);
if (d->mPrefCellMaxSize.height() != value)
{
d->mPrefCellMaxSize.setHeight(value);
invalidate();
}
}
/************************************************
************************************************/
void GridLayout::setCellMaximumWidth(int value)
{
Q_D(GridLayout);
if (d->mPrefCellMaxSize.width() != value)
{
d->mPrefCellMaxSize.setWidth(value);
invalidate();
}
}
/************************************************
************************************************/
void GridLayout::setCellFixedSize(QSize size)
{
Q_D(GridLayout);
if (d->mPrefCellMinSize != size ||
d->mPrefCellMaxSize != size)
{
d->mPrefCellMinSize = size;
d->mPrefCellMaxSize = size;
invalidate();
}
}
/************************************************
************************************************/
void GridLayout::setCellFixedHeight(int value)
{
Q_D(GridLayout);
if (d->mPrefCellMinSize.height() != value ||
d->mPrefCellMaxSize.height() != value)
{
d->mPrefCellMinSize.setHeight(value);
d->mPrefCellMaxSize.setHeight(value);
invalidate();
}
}
/************************************************
************************************************/
void GridLayout::setCellFixedWidth(int value)
{
Q_D(GridLayout);
if (d->mPrefCellMinSize.width() != value ||
d->mPrefCellMaxSize.width() != value)
{
d->mPrefCellMinSize.setWidth(value);
d->mPrefCellMaxSize.setWidth(value);
invalidate();
}
}
/************************************************
************************************************/
QSize GridLayout::sizeHint() const
{
Q_D(const GridLayout);
if (!d->mIsValid)
const_cast<GridLayoutPrivate*>(d)->updateCache();
return QSize(d->cols() * d->mCellSizeHint.width(),
d->rows() * d->mCellSizeHint.height());
}
/************************************************
************************************************/
void GridLayout::setGeometry(const QRect &geometry)
{
Q_D(GridLayout);
if (!d->mIsValid)
d->updateCache();
int y = geometry.top();
int x = geometry.left();
// For historical reasons QRect::right returns left() + width() - 1
// and QRect::bottom() returns top() + height() - 1;
// So we use left() + height() and top() + height()
//
// http://qt-project.org/doc/qt-4.8/qrect.html
int maxX = geometry.left() + geometry.width();
int maxY = geometry.top() + geometry.height();
int itemWidth;
if (d->mStretch.testFlag(StretchHorizontal))
{
itemWidth = geometry.width() * 1.0 / d->cols();
itemWidth = qMin(itemWidth, d->mCellMaxSize.width());
}
else
{
itemWidth = d->mCellSizeHint.width();
}
itemWidth = qBound(d->mPrefCellMinSize.width(), itemWidth, d->mPrefCellMaxSize.width());
int itemHeight;
if (d->mStretch.testFlag(StretchVertical))
{
itemHeight = geometry.height() * 1.0 / d->rows();
itemHeight = qMin(itemHeight, d->mCellMaxSize.height());
}
else
{
itemHeight = d->mCellSizeHint.height();
}
itemHeight = qBound(d->mPrefCellMinSize.height(), itemHeight, d->mPrefCellMaxSize.height());
#if 0
qDebug() << "** GridLayout::setGeometry *******************************";
qDebug() << "Geometry:" << geometry;
qDebug() << "CellSize:" << d->mCellSizeHint;
qDebug() << "Constraints:" << "min" << d->mPrefCellMinSize << "max" << d->mPrefCellMaxSize;
qDebug() << "Count" << count();
qDebug() << "Cols:" << d->cols() << "(" << d->mColumnCount << ")";
qDebug() << "Rows:" << d->rows() << "(" << d->mRowCount << ")";
qDebug() << "Stretch:" << "h:" << (d->mStretch.testFlag(StretchHorizontal)) << " v:" << (d->mStretch.testFlag(StretchVertical));
qDebug() << "Item:" << "h:" << itemHeight << " w:" << itemWidth;
#endif
if (d->mDirection == LeftToRight)
{
foreach(QLayoutItem *item, d->mItems)
{
if (!item->widget() || item->widget()->isHidden())
continue;
if (x + itemWidth > maxX)
{
x = geometry.left();
if (d->mStretch.testFlag(StretchVertical))
y += geometry.height() / d->rows();
else
y += itemHeight;
}
item->setGeometry(QRect(x, y, itemWidth, itemHeight));
x += itemWidth;
}
}
else
{
foreach(QLayoutItem *item, d->mItems)
{
if (!item->widget() || item->widget()->isHidden())
continue;
if (y + itemHeight > maxY)
{
y = geometry.top();
if (d->mStretch.testFlag(StretchHorizontal))
x += geometry.width() / d->cols();
else
x += itemWidth;
}
item->setGeometry(QRect(x, y, itemWidth, itemHeight));
y += itemHeight;
}
}
}

@ -0,0 +1,237 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2012 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTGRIDLAYOUT_H
#define LXQTGRIDLAYOUT_H
#include <QList>
#include "lxqtglobals.h"
#include <QLayout>
namespace LxQt
{
class GridLayoutPrivate;
/**
The GridLayout class lays out widgets in a grid.
**/
class LXQT_API GridLayout: public QLayout
{
Q_OBJECT
public:
/**
This enum type is used to describe direction for this grid.
**/
enum Direction
{
LeftToRight, ///< The items are first laid out horizontally and then vertically.
TopToBottom ///< The items are first laid out vertically and then horizontally.
};
/**
This enum type is used to describe stretch. It contains one horizontal
and one vertical flags that can be combined to produce the required effect.
*/
enum StretchFlag
{
NoStretch = 0, ///< No justifies items
StretchHorizontal = 1, ///< Justifies items in the available horizontal space
StretchVertical = 2 ///< Justifies items in the available vertical space
};
Q_DECLARE_FLAGS(Stretch, StretchFlag)
/**
Constructs a new GridLayout with parent widget, parent.
The layout has one row and zero column initially, and will
expand to left when new items are inserted.
**/
explicit GridLayout(QWidget *parent = 0);
/**
Destroys the grid layout. The layout's widgets aren't destroyed.
**/
~GridLayout();
void addItem(QLayoutItem *item);
QLayoutItem *itemAt(int index) const;
QLayoutItem *takeAt(int index);
int count() const;
void invalidate();
QSize sizeHint() const;
void setGeometry(const QRect &geometry);
/**
Returns the number of rows in this grid.
**/
int rowCount() const;
/**
Sets the number of rows in this grid. If value is 0, then rows
count will calculated automatically when new items are inserted.
In the most cases you should to set fixed number for one thing,
or for rows, or for columns.
\sa GridLayout::setColumnCount
**/
void setRowCount(int value);
/**
Returns the number of columns in this grid.
**/
int columnCount() const;
/**
Sets the number of columns in this grid. If value is 0, then columns
count will calculated automatically when new items are inserted.
In the most cases you should to set fixed number for one thing,
or for rows, or for columns.
\sa GridLayout::setRowCount
**/
void setColumnCount(int value);
/**
Returns the alignment of this grid.
\sa GridLayout::Direction
**/
Direction direction() const;
/**
Sets the direction for this grid.
\sa GridLayout::Direction
**/
void setDirection(Direction value);
/**
Returns the stretch flags of this grid.
\sa GridLayout::StretchFlag
**/
Stretch stretch() const;
/**
Sets the stretch flags for this grid.
\sa GridLayout::StretchFlag
**/
void setStretch(Stretch value);
/**
Moves the item at index position from to index position to.
**/
void moveItem(int from, int to);
/**
Returns the cells' minimum size.
By default, this property contains a size with zero width and height.
**/
QSize cellMinimumSize() const;
/**
Sets the minimum size of all cells to minSize pixels.
**/
void setCellMinimumSize(QSize minSize);
/**
Sets the minimum height of the cells to value without
changing the width. Provided for convenience.
**/
void setCellMinimumHeight(int value);
/**
Sets the minimum width of the cells to value without
changing the heights. Provided for convenience.
**/
void setCellMinimumWidth(int value);
/**
Returns the cells' maximum size.
By default, this property contains a size with zero width and height.
**/
QSize cellMaximumSize() const;
/**
Sets the maximum size of all cells to maxSize pixels.
**/
void setCellMaximumSize(QSize maxSize);
/**
Sets the maximum height of the cells to value without
changing the width. Provided for convenience.
**/
void setCellMaximumHeight(int value);
/**
Sets the maximum width of the cells to value without
changing the heights. Provided for convenience.
**/
void setCellMaximumWidth(int value);
/**
Sets both the minimum and maximum sizes of the cells to size,
thereby preventing it from ever growing or shrinking.
**/
void setCellFixedSize(QSize size);
/**
Sets both the minimum and maximum height of the cells to value without
changing the width. Provided for convenience.
**/
void setCellFixedHeight(int value);
/**
Sets both the minimum and maximum width of the cells to value without
changing the heights. Provided for convenience.
**/
void setCellFixedWidth(int value);
private:
GridLayoutPrivate* const d_ptr;
Q_DECLARE_PRIVATE(GridLayout)
};
Q_DECLARE_OPERATORS_FOR_FLAGS(GridLayout::Stretch)
} // namespace LxQt
#endif // LXQTGRIDLAYOUT_H

@ -0,0 +1,114 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://lxqt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
* Paulo Lieuthier <paulolieuthier@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqthtmldelegate.h"
#include <QAbstractTextDocumentLayout>
#include <QTextDocument>
using namespace LxQt;
HtmlDelegate::HtmlDelegate(const QSize iconSize, QObject* parent) :
QStyledItemDelegate(parent),
mIconSize(iconSize)
{
}
HtmlDelegate::~HtmlDelegate()
{
}
/************************************************
************************************************/
void HtmlDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
if (!index.isValid())
return;
QStyleOptionViewItemV4 options = option;
initStyleOption(&options, index);
painter->save();
QTextDocument doc;
doc.setHtml(options.text);
QIcon icon = options.icon;
options.text = "";
options.icon = QIcon();
// icon size
QSize iconSize = icon.actualSize(mIconSize);
QRect iconRect = QRect(8, 8, iconSize.width(), iconSize.height());
// set doc size
doc.setTextWidth(options.rect.width() - iconRect.right() - 8);
options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter);
// paint icon
painter->translate(options.rect.left(), options.rect.top());
icon.paint(painter, iconRect);
// shift text right to make icon visible
painter->translate(iconRect.right() + 8, 0);
QRect clip(0, 0, options.rect.width() - iconRect.right() - 8, options.rect.height());
painter->setClipRect(clip);
// set text color to red for selected item
QAbstractTextDocumentLayout::PaintContext ctx;
if (option.state & QStyle::State_Selected)
{
QPalette::ColorGroup colorGroup = (option.state & QStyle::State_Active) ? QPalette::Active : QPalette::Inactive;
ctx.palette.setColor(QPalette::Text, option.palette.color(colorGroup, QPalette::HighlightedText));
}
ctx.clip = clip;
doc.documentLayout()->draw(painter, ctx);
painter->restore();
}
/************************************************
************************************************/
QSize HtmlDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const
{
QStyleOptionViewItemV4 options = option;
initStyleOption(&options, index);
QSize iconSize = options.icon.actualSize(mIconSize);
QRect iconRect = QRect(8, 8, iconSize.width(), iconSize.height());
QTextDocument doc;
doc.setHtml(options.text);
doc.setTextWidth(options.rect.width() - iconRect.right() - 8);
return QSize(options.rect.width(), doc.size().height() + 8);
}

@ -0,0 +1,57 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://lxqt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
* Paulo Lieuthier <paulolieuthier@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTHTMLDELEGATE_H
#define LXQTHTMLDELEGATE_H
#include <QStyledItemDelegate>
#include <QPainter>
#include "lxqtglobals.h"
namespace LxQt
{
class LXQT_API HtmlDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
explicit HtmlDelegate(const QSize iconSize, QObject* parent = 0);
virtual ~HtmlDelegate();
virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
virtual QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const;
private:
QSize mIconSize;
};
}
#endif

@ -0,0 +1,210 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright (C) 2012 Alec Moskvin <alecm@gmx.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtnotification.h"
#include "lxqtnotification_p.h"
#include <QMessageBox>
#include <QDebug>
using namespace LxQt;
Notification::Notification(const QString& summary, QObject* parent) :
QObject(parent),
d_ptr(new NotificationPrivate(summary, this))
{
}
Notification::~Notification()
{
Q_D(Notification);
delete d;
}
void Notification::update()
{
Q_D(Notification);
d->update();
}
void Notification::close()
{
Q_D(Notification);
d->close();
}
void Notification::setSummary(const QString& summary)
{
Q_D(Notification);
d->mSummary = summary;
}
void Notification::setBody(const QString& body)
{
Q_D(Notification);
d->mBody = body;
}
void Notification::setIcon(const QString& iconName)
{
Q_D(Notification);
d->mIconName = iconName;
}
void Notification::setActions(const QStringList& actions, int defaultAction)
{
Q_D(Notification);
d->setActions(actions, defaultAction);
}
void Notification::setTimeout(int timeout)
{
Q_D(Notification);
d->mTimeout = timeout;
}
void Notification::setHint(const QString& hintName, const QVariant& value)
{
Q_D(Notification);
d->mHints.insert(hintName, value);
}
void Notification::setUrgencyHint(Urgency urgency)
{
Q_D(Notification);
d->mHints.insert("urgency", qvariant_cast<uchar>(urgency));
}
void Notification::clearHints()
{
Q_D(Notification);
d->mHints.clear();
}
QStringList Notification::getCapabilities()
{
Q_D(Notification);
return d->mInterface->GetCapabilities().value();
}
const Notification::ServerInfo Notification::serverInfo()
{
Q_D(Notification);
return d->serverInfo();
}
void Notification::notify(const QString& summary, const QString& body, const QString& iconName)
{
Notification notification(summary);
notification.setBody(body);
notification.setIcon(iconName);
notification.update();
}
NotificationPrivate::NotificationPrivate(const QString& summary, Notification* parent) :
mId(0),
mSummary(summary),
mTimeout(-1),
q_ptr(parent)
{
mInterface = new OrgFreedesktopNotificationsInterface("org.freedesktop.Notifications",
"/org/freedesktop/Notifications",
QDBusConnection::sessionBus(), this);
connect(mInterface, SIGNAL(NotificationClosed(uint, uint)), this, SLOT(notificationClosed(uint,uint)));
connect(mInterface, SIGNAL(ActionInvoked(uint,QString)), this, SLOT(handleAction(uint,QString)));
}
NotificationPrivate::~NotificationPrivate()
{
}
void NotificationPrivate::update()
{
QDBusPendingReply<uint> reply = mInterface->Notify(qAppName(), mId, mIconName, mSummary, mBody, mActions, mHints, mTimeout);
reply.waitForFinished();
if (!reply.isError())
{
mId = reply.value();
}
else
{
if (mHints.contains("urgency") && mHints.value("urgency").toInt() != Notification::UrgencyLow)
QMessageBox::information(0, tr("Notifications Fallback"), mSummary + " \n\n " + mBody);
}
}
void NotificationPrivate::setActions(QStringList actions, int defaultAction)
{
mActions.clear();
mDefaultAction = defaultAction;
for (int ix = 0; ix < actions.size(); ix++)
{
if (ix == defaultAction)
mActions.append("default");
else
mActions.append(QString::number(ix));
mActions.append(actions[ix]);
}
}
const Notification::ServerInfo NotificationPrivate::serverInfo()
{
Notification::ServerInfo info;
info.name = mInterface->GetServerInformation(info.vendor, info.version, info.specVersion);
return info;
}
void NotificationPrivate::handleAction(uint id, QString key)
{
if (id != mId)
return;
Q_Q(Notification);
qDebug() << "action invoked:" << key;
bool ok = true;
int keyId;
if (key == "default")
keyId = mDefaultAction;
else
keyId = key.toInt(&ok);
if (ok && key >= 0)
emit q->actionActivated(keyId);
}
void NotificationPrivate::close()
{
mInterface->CloseNotification(mId);
mId = 0;
}
void NotificationPrivate::notificationClosed(uint id, uint reason)
{
Q_Q(Notification);
if (id != 0 && id == mId)
{
mId = 0;
}
emit q->notificationClosed(Notification::CloseReason(reason));
}

@ -0,0 +1,192 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright (C) 2012 Alec Moskvin <alecm@gmx.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTNOTIFICATION_H
#define LXQTNOTIFICATION_H
#include <QStringList>
#include "lxqtglobals.h"
namespace LxQt
{
class NotificationPrivate;
/**
* \brief Libnotify-style desktop notifications
*
* Spec: http://developer.gnome.org/notification-spec
*/
class LXQT_API Notification : public QObject
{
Q_OBJECT
public:
/*!
* \brief Notification is an object that represents a single notification.
* \param summary Summary text briefly describing the notification (required by the spec)
*/
Notification(const QString& summary = QString(), QObject* parent = 0);
~Notification();
enum CloseReason
{
//! The notification expired.
Expired = 1,
//! The notification was dismissed by the user.
Dismissed = 2,
//! The notification was closed by a call to close().
ForceClosed = 3,
//! Undefined/reserved reasons.
Unknown = 4
};
enum Urgency
{
UrgencyLow = 0,
UrgencyNormal = 1,
UrgencyCritical = 2
};
struct ServerInfo
{
//! The product name of the server.
QString name;
//! The vendor name. For example, "lxde-qt.org"
QString vendor;
//! The server's version number.
QString version;
//! The specification version the server is compliant with.
QString specVersion;
};
/*!
* \brief Set the summary text briefly describing the notification
*/
void setSummary(const QString& summary);
/*!
* \brief Set the detailed body text
*/
void setBody(const QString& body);
/*!
* \brief Set an icon to display
* \param iconName Name of the icon
*/
void setIcon(const QString& iconName);
/*!
* \brief Set action buttons for the notification. Whenever an action is
* activated, the actionActivated() signal is emitted with the list
* index of the activated action.
* \param actions List of action button titles
* \param defaultAction Index of the default action which gets activated
* when the notification body is clicked
* \sa actionActivated()
*/
void setActions(const QStringList& actions, int defaultAction = -1);
/*!
* \brief Set the timeout for the notification
* \param timeout Milliseconds for timeout, or zero to never time out.
*/
void setTimeout(int timeout);
/*!
* \brief Set notification hint.
* \note For description of Hints, see http://developer.gnome.org/notification-spec/#hints
* \note For D-Bus-to-Qt mappings, see https://qt-project.org/doc/qdbustypesystem.html
* \param hint Hint name
* \param value The hint data
*/
void setHint(const QString& hint, const QVariant& value);
/*!
* \brief Set the "urgency" hint
* \param urgency
*/
void setUrgencyHint(Urgency urgency);
/*!
* \brief Remove all hints that were set
* \sa setHint()
*/
void clearHints();
/*!
* \brief returns a list of optional capabilities supported by the server.
* For the list, see http://developer.gnome.org/notification-spec/#commands
*/
QStringList getCapabilities();
/*!
* \brief Returns information about the notifications server
*/
const ServerInfo serverInfo();
/*!
* \brief Convenience function to create and display a notification for the most common
* cases. For anything more complex, create a Notification object, set the
* desired properties and call update(). (That's what this does internally.)
* \sa Notification()
*/
static void notify(const QString& summary,
const QString& body = QString(),
const QString& iconName = QString()
);
public slots:
/*!
* \brief Display the notification or update it if it's already visible
*/
void update();
/*!
* \brief Causes a notification to be forcefully closed and removed from the user's view.
* It can be used, for example, in the event that what the notification pertains to
* is no longer relevant, or to cancel a notification with no expiration time.
*/
void close();
signals:
/*!
* \brief Emitted when the notification is closed
* \param reason How notification was closed
*/
void notificationClosed(LxQt::Notification::CloseReason reason);
/*!
* \brief Emitted when an action button is activated.
* \param actionNumber Index of the actions array for the activated button.
* \sa setActions()
*/
void actionActivated(int actionNumber);
private:
Q_DECLARE_PRIVATE(Notification)
NotificationPrivate* const d_ptr;
};
} // namespace LxQt
#endif // LXQTNOTIFICATION_H

@ -0,0 +1,67 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright (C) 2012 Alec Moskvin <alecm@gmx.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTNOTIFICATION_P_H
#define LXQTNOTIFICATION_P_H
#include "lxqtnotification.h"
#include "notifications_interface.h"
namespace LxQt
{
class NotificationPrivate : public QObject
{
Q_OBJECT
public:
NotificationPrivate(const QString& summary, Notification* parent);
~NotificationPrivate();
void update();
void close();
void setActions(QStringList actions, int defaultAction);
const Notification::ServerInfo serverInfo();
public slots:
void handleAction(uint id, QString key);
void notificationClosed(uint, uint);
private:
OrgFreedesktopNotificationsInterface* mInterface;
uint mId;
QString mSummary;
QString mBody;
QString mIconName;
QStringList mActions;
QVariantMap mHints;
int mDefaultAction;
int mTimeout;
Notification* const q_ptr;
Q_DECLARE_PUBLIC(Notification)
};
} // namespace LxQt
#endif // LXQTNOTIFICATION_P_H

@ -0,0 +1,180 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtplugininfo.h"
#include <QObject>
#include <QFileInfo>
#include <QDir>
#include <QTranslator>
#include <QCoreApplication>
#include <QLibrary>
#include <QDebug>
using namespace LxQt;
/************************************************
************************************************/
PluginInfo::PluginInfo():
XdgDesktopFile()
{
}
/************************************************
************************************************/
bool PluginInfo::load(const QString& fileName)
{
XdgDesktopFile::load(fileName);
mId = QFileInfo(fileName).completeBaseName();
return isValid();
}
/************************************************
************************************************/
bool PluginInfo::isValid() const
{
return XdgDesktopFile::isValid();
}
/************************************************
************************************************/
QLibrary* PluginInfo::loadLibrary(const QString& libDir) const
{
QString baseName, path;
QFileInfo fi = QFileInfo(fileName());
path = fi.canonicalPath();
baseName = value("X-LxQt-Library", fi.completeBaseName()).toString();
QString soPath = QDir(libDir).filePath(QString("lib%2.so").arg(baseName));
QLibrary* library = new QLibrary(soPath);
if (!library->load())
{
qWarning() << QString("Can't load plugin lib \"%1\"").arg(soPath) << library->errorString();
delete library;
return 0;
}
QString locale = QLocale::system().name();
QTranslator* translator = new QTranslator(library);
translator->load(QString("%1/%2/%2_%3.qm").arg(path, baseName, locale));
qApp->installTranslator(translator);
return library;
}
/************************************************
************************************************/
PluginInfoList PluginInfo::search(const QStringList& desktopFilesDirs, const QString& serviceType, const QString& nameFilter)
{
QList<PluginInfo> res;
QSet<QString> processed;
foreach (QString desktopFilesDir, desktopFilesDirs)
{
QDir dir(desktopFilesDir);
QFileInfoList files = dir.entryInfoList(QStringList(nameFilter), QDir::Files | QDir::Readable);
foreach (QFileInfo file, files)
{
if (processed.contains(file.fileName()))
continue;
processed << file.fileName();
PluginInfo item;
item.load(file.canonicalFilePath());
if (item.isValid() && item.serviceType() == serviceType)
res.append(item);
}
}
return res;
}
/************************************************
************************************************/
PluginInfoList PluginInfo::search(const QString& desktopFilesDir, const QString& serviceType, const QString& nameFilter)
{
return search(QStringList(desktopFilesDir), serviceType, nameFilter);
}
/************************************************
************************************************/
QDebug operator<<(QDebug dbg, const LxQt::PluginInfo &pluginInfo)
{
dbg.nospace() << QString("%1").arg(pluginInfo.id());
return dbg.space();
}
/************************************************
************************************************/
QDebug operator<<(QDebug dbg, const LxQt::PluginInfo * const pluginInfo)
{
return operator<<(dbg, *pluginInfo);
}
/************************************************
************************************************/
QDebug operator<<(QDebug dbg, const PluginInfoList& list)
{
dbg.nospace() << '(';
for (int i=0; i<list.size(); ++i)
{
if (i) dbg.nospace() << ", ";
dbg << list.at(i);
}
dbg << ')';
return dbg.space();
}
/************************************************
************************************************/
QDebug operator<<(QDebug dbg, const PluginInfoList* const pluginInfoList)
{
return operator<<(dbg, *pluginInfoList);
}

@ -0,0 +1,116 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTPLUGININFO_H
#define LXQTPLUGININFO_H
#include <QString>
#include <QList>
#include <QFileInfo>
#include <QtAlgorithms>
#include <QDebug>
#include "lxqtglobals.h"
#include <XdgDesktopFile>
class QLibrary;
namespace LxQt
{
/*!
Every plugin needs a .desktop file that describes it. The basename of this file must
be same as the basename of the plugin library.
lxqtpanel_clock2.desktop file
[Desktop Entry]
Type=Service
ServiceTypes=LxQtPanel/Plugin
Name=Clock
Comment=Clock and calendar
PluginInfo class gives the interface for reading the values from the plugin .desktop file.
This is a pure virtual class, you must implement libraryDir(), translationDir(), and instance() methods.
*/
class LXQT_API PluginInfo: public XdgDesktopFile
{
public:
/// Constructs a PluginInfo object for accessing the info stored in the .desktop file.
explicit PluginInfo();
//! Reimplemented from XdgDesktopFile.
virtual bool load(const QString& fileName);
//! Reimplemented from XdgDesktopFile.
//PluginInfo& operator=(const PluginInfo& other);
//! Returns identification string of this plugin, identified plugin type. Now id is part of the filename.
QString id() const { return mId; }
//! This function is provided for convenience. It's equivalent to calling value("ServiceTypes").toString().
QString serviceType() const { return value("ServiceTypes").toString(); }
//! Reimplemented from XdgDesktopFile.
virtual bool isValid() const;
/*! Loads the library and returns QLibrary object if the library was loaded successfully; otherwise returns 0.
@parm libDir directory where placed the plugin .so file. */
QLibrary* loadLibrary(const QString& libDir) const;
/*! Returns a list of PluginInfo objects for the matched files in the directories.
@param desktopFilesDirs - scanned directories names.
@param serviceType - type of the plugin, for example "LxQtPanel/Plugin".
@param nameFilter - wildcard filter that understands * and ? wildcards.
If the same filename is located under multiple directories only the first file should be used.
*/
static QList<PluginInfo> search(const QStringList& desktopFilesDirs, const QString& serviceType, const QString& nameFilter="*");
/// This function is provided for convenience. It's equivalent to new calling search(QString(desktopFilesDir), serviceType, nameFilter)
static QList<PluginInfo> search(const QString& desktopFilesDir, const QString& serviceType, const QString& nameFilter="*");
private:
QString mId;
};
typedef QList<PluginInfo> PluginInfoList;
} // namespace LxQt
QDebug operator<<(QDebug dbg, const LxQt::PluginInfo& pi);
QDebug operator<<(QDebug dbg, const LxQt::PluginInfo* const pi);
QDebug operator<<(QDebug dbg, const LxQt::PluginInfoList& list);
QDebug operator<<(QDebug dbg, const LxQt::PluginInfoList* const pluginInfoList);
#endif // LXQTPLUGININFO_H

@ -0,0 +1,90 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtpower.h"
#include "lxqtpowerproviders.h"
#include <QtAlgorithms>
#include <QDebug>
using namespace LxQt;
Power::Power(QObject *parent) :
QObject(parent)
{
mProviders.append(new CustomProvider(this));
mProviders.append(new UPowerProvider(this));
mProviders.append(new ConsoleKitProvider(this));
mProviders.append(new SystemdProvider(this));
mProviders.append(new LxSessionProvider(this));
mProviders.append(new LxQtProvider(this));
}
Power::~Power()
{
}
bool Power::canAction(Power::Action action) const
{
foreach(PowerProvider* provider, mProviders)
{
if (provider->canAction(action))
return true;
}
return false;
}
bool Power::doAction(Power::Action action)
{
foreach(PowerProvider* provider, mProviders)
{
if (provider->canAction(action) &&
provider->doAction(action)
)
{
return true;
}
}
return false;
}
bool Power::canLogout() const { return canAction(PowerLogout); }
bool Power::canHibernate() const { return canAction(PowerHibernate); }
bool Power::canReboot() const { return canAction(PowerReboot); }
bool Power::canShutdown() const { return canAction(PowerShutdown); }
bool Power::canSuspend() const { return canAction(PowerSuspend); }
bool Power::logout() { return doAction(PowerLogout); }
bool Power::hibernate() { return doAction(PowerHibernate); }
bool Power::reboot() { return doAction(PowerReboot); }
bool Power::shutdown() { return doAction(PowerShutdown); }
bool Power::suspend() { return doAction(PowerSuspend); }

@ -0,0 +1,107 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTPOWER_H
#define LXQTPOWER_H
#include <QObject>
#include <QList>
#include "lxqtglobals.h"
namespace LxQt
{
class PowerProvider;
/*! Power class provides an interface to control system-wide power and session management.
It allows logout from the user session, hibernate, reboot, shutdown and suspend computer.
This is a wrapper class. All the real work is done in the PowerWorker classes.
*/
class LXQT_API Power : public QObject
{
Q_OBJECT
public:
/// Power can perform next actions:
enum Action{
PowerLogout, /// Close the current user session.
PowerHibernate, /// Hibernate the comupter
PowerReboot, /// Reboot the computer
PowerShutdown, /// Shutdown the computer
PowerSuspend /// Suspend the computer
};
/// Constructs a Power with parent.
explicit Power(QObject *parent = 0);
/// Destroys the object.
virtual ~Power();
/// Returns true if the Power can perform action.
bool canAction(Action action) const;
//! This function is provided for convenience. It's equivalent to calling canAction(PowerLogout).
bool canLogout() const;
//! This function is provided for convenience. It's equivalent to calling canAction(PowerHibernate).
bool canHibernate() const;
//! This function is provided for convenience. It's equivalent to calling canAction(PowerReboot).
bool canReboot() const;
//! This function is provided for convenience. It's equivalent to calling canAction(PowerShutdown).
bool canShutdown() const;
//! This function is provided for convenience. It's equivalent to calling canAction(PowerSuspend).
bool canSuspend() const;
public slots:
/// Performs the requested action.
bool doAction(Action action);
//! This function is provided for convenience. It's equivalent to calling doAction(PowerLogout).
bool logout();
//! This function is provided for convenience. It's equivalent to calling doAction(PowerHibernate).
bool hibernate();
//! This function is provided for convenience. It's equivalent to calling doAction(PowerReboot).
bool reboot();
//! This function is provided for convenience. It's equivalent to calling doAction(PowerShutdown).
bool shutdown();
//! This function is provided for convenience. It's equivalent to calling doAction(PowerSuspend).
bool suspend();
private:
QList<PowerProvider*> mProviders;
};
} // namespace LxQt
#endif // LXQTPOWER_H

@ -0,0 +1,662 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
* Petr Vanek <petr@scribus.info>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtpowerproviders.h"
#include <QDBusInterface>
#include <QProcess>
#include <QDebug>
#include "lxqtnotification.h"
#include <signal.h> // for kill()
#define UPOWER_SERVICE "org.freedesktop.UPower"
#define UPOWER_PATH "/org/freedesktop/UPower"
#define UPOWER_INTERFACE UPOWER_SERVICE
#define CONSOLEKIT_SERVICE "org.freedesktop.ConsoleKit"
#define CONSOLEKIT_PATH "/org/freedesktop/ConsoleKit/Manager"
#define CONSOLEKIT_INTERFACE "org.freedesktop.ConsoleKit.Manager"
#define SYSTEMD_SERVICE "org.freedesktop.login1"
#define SYSTEMD_PATH "/org/freedesktop/login1"
#define SYSTEMD_INTERFACE "org.freedesktop.login1.Manager"
#define LXQT_SERVICE "org.lxqt.session"
#define LXQT_PATH "/LxQtSession"
#define LXQT_INTERFACE "org.lxqt.session"
#define LXSESSION_SERVICE "org.lxde.SessionManager"
#define LXSESSION_PATH "/org/lxde/SessionManager"
#define LXSESSION_INTERFACE "org.lxde.SessionManager"
#define PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties"
using namespace LxQt;
/************************************************
Helper func
************************************************/
void printDBusMsg(const QDBusMessage &msg)
{
qWarning() << "** Dbus error **************************";
qWarning() << "Error name " << msg.errorName();
qWarning() << "Error msg " << msg.errorMessage();
qWarning() << "****************************************";
}
/************************************************
Helper func
************************************************/
static bool dbusCall(const QString &service,
const QString &path,
const QString &interface,
const QDBusConnection &connection,
const QString & method,
PowerProvider::DbusErrorCheck errorCheck = PowerProvider::CheckDBUS
)
{
QDBusInterface dbus(service, path, interface, connection);
if (!dbus.isValid())
{
qWarning() << "dbusCall: QDBusInterface is invalid" << service << path << interface << method;
if (errorCheck == PowerProvider::CheckDBUS)
{
Notification::notify(
QObject::tr("Power Manager Error"),
QObject::tr("QDBusInterface is invalid")+ "\n\n" + service + " " + path + " " + interface + " " + method,
"lxqt-logo.png");
}
return false;
}
QDBusMessage msg = dbus.call(method);
if (!msg.errorName().isEmpty())
{
printDBusMsg(msg);
if (errorCheck == PowerProvider::CheckDBUS)
{
Notification::notify(
QObject::tr("Power Manager Error (D-BUS call)"),
msg.errorName() + "\n\n" + msg.errorMessage(),
"lxqt-logo.png");
}
}
// If the method no returns value, we believe that it was successful.
return msg.arguments().isEmpty() ||
msg.arguments().first().isNull() ||
msg.arguments().first().toBool();
}
/************************************************
Helper func
Just like dbusCall(), except that systemd
returns a string instead of a bool, and it takes
an "interactivity boolean" as an argument.
************************************************/
static bool dbusCallSystemd(const QString &service,
const QString &path,
const QString &interface,
const QDBusConnection &connection,
const QString &method,
bool needBoolArg,
PowerProvider::DbusErrorCheck errorCheck = PowerProvider::CheckDBUS
)
{
QDBusInterface dbus(service, path, interface, connection);
if (!dbus.isValid())
{
qWarning() << "dbusCall: QDBusInterface is invalid" << service << path << interface << method;
if (errorCheck == PowerProvider::CheckDBUS)
{
Notification::notify(
QObject::tr("Power Manager Error"),
QObject::tr("QDBusInterface is invalid")+ "\n\n" + service + " " + path + " " + interface + " " + method,
"lxqt-logo.png");
}
return false;
}
QDBusMessage msg = dbus.call(method, needBoolArg ? QVariant(true) : QVariant());
if (!msg.errorName().isEmpty())
{
printDBusMsg(msg);
if (errorCheck == PowerProvider::CheckDBUS)
{
Notification::notify(
QObject::tr("Power Manager Error (D-BUS call)"),
msg.errorName() + "\n\n" + msg.errorMessage(),
"lxqt-logo.png");
}
}
// If the method no returns value, we believe that it was successful.
if (msg.arguments().isEmpty() || msg.arguments().first().isNull())
return true;
QString response = msg.arguments().first().toString();
qDebug() << "systemd:" << method << "=" << response;
return response == "yes" || response == "challenge";
}
/************************************************
Helper func
************************************************/
bool dbusGetProperty(const QString &service,
const QString &path,
const QString &interface,
const QDBusConnection &connection,
const QString & property
)
{
QDBusInterface dbus(service, path, interface, connection);
if (!dbus.isValid())
{
qWarning() << "dbusGetProperty: QDBusInterface is invalid" << service << path << interface << property;
// Notification::notify(QObject::tr("LxQt Power Manager"),
// "lxqt-logo.png",
// QObject::tr("Power Manager Error"),
// QObject::tr("QDBusInterface is invalid")+ "\n\n" + service +" " + path +" " + interface +" " + property);
return false;
}
QDBusMessage msg = dbus.call("Get", dbus.interface(), property);
if (!msg.errorName().isEmpty())
{
printDBusMsg(msg);
// Notification::notify(QObject::tr("LxQt Power Manager"),
// "lxqt-logo.png",
// QObject::tr("Power Manager Error (Get Property)"),
// msg.errorName() + "\n\n" + msg.errorMessage());
}
return !msg.arguments().isEmpty() &&
msg.arguments().first().value<QDBusVariant>().variant().toBool();
}
/************************************************
PowerProvider
************************************************/
PowerProvider::PowerProvider(QObject *parent):
QObject(parent)
{
}
PowerProvider::~PowerProvider()
{
}
/************************************************
UPowerProvider
************************************************/
UPowerProvider::UPowerProvider(QObject *parent):
PowerProvider(parent)
{
}
UPowerProvider::~UPowerProvider()
{
}
bool UPowerProvider::canAction(Power::Action action) const
{
QString command;
QString property;
switch (action)
{
case Power::PowerHibernate:
property = "CanHibernate";
command = "HibernateAllowed";
break;
case Power::PowerSuspend:
property = "CanSuspend";
command = "SuspendAllowed";
break;
default:
return false;
}
return dbusGetProperty( // Whether the system is able to hibernate.
UPOWER_SERVICE,
UPOWER_PATH,
PROPERTIES_INTERFACE,
QDBusConnection::systemBus(),
property
)
&&
dbusCall( // Check if the caller has (or can get) the PolicyKit privilege to call command.
UPOWER_SERVICE,
UPOWER_PATH,
UPOWER_INTERFACE,
QDBusConnection::systemBus(),
command,
// canAction should be always silent because it can freeze
// g_main_context_iteration Qt event loop in QMessageBox
// on panel startup if there is no DBUS running.
PowerProvider::DontCheckDBUS
);
}
bool UPowerProvider::doAction(Power::Action action)
{
QString command;
switch (action)
{
case Power::PowerHibernate:
command = "Hibernate";
break;
case Power::PowerSuspend:
command = "Suspend";
break;
default:
return false;
}
return dbusCall(UPOWER_SERVICE,
UPOWER_PATH,
UPOWER_INTERFACE,
QDBusConnection::systemBus(),
command );
}
/************************************************
ConsoleKitProvider
************************************************/
ConsoleKitProvider::ConsoleKitProvider(QObject *parent):
PowerProvider(parent)
{
}
ConsoleKitProvider::~ConsoleKitProvider()
{
}
bool ConsoleKitProvider::canAction(Power::Action action) const
{
QString command;
switch (action)
{
case Power::PowerReboot:
command = "CanRestart";
break;
case Power::PowerShutdown:
command = "CanStop";
break;
default:
return false;
}
return dbusCall(CONSOLEKIT_SERVICE,
CONSOLEKIT_PATH,
CONSOLEKIT_INTERFACE,
QDBusConnection::systemBus(),
command,
// canAction should be always silent because it can freeze
// g_main_context_iteration Qt event loop in QMessageBox
// on panel startup if there is no DBUS running.
PowerProvider::DontCheckDBUS
);
}
bool ConsoleKitProvider::doAction(Power::Action action)
{
QString command;
switch (action)
{
case Power::PowerReboot:
command = "Restart";
break;
case Power::PowerShutdown:
command = "Stop";
break;
default:
return false;
}
return dbusCall(CONSOLEKIT_SERVICE,
CONSOLEKIT_PATH,
CONSOLEKIT_INTERFACE,
QDBusConnection::systemBus(),
command
);
}
/************************************************
SystemdProvider
http://www.freedesktop.org/wiki/Software/systemd/logind
************************************************/
SystemdProvider::SystemdProvider(QObject *parent):
PowerProvider(parent)
{
}
SystemdProvider::~SystemdProvider()
{
}
bool SystemdProvider::canAction(Power::Action action) const
{
QString command;
switch (action)
{
case Power::PowerReboot:
command = "CanReboot";
break;
case Power::PowerShutdown:
command = "CanPowerOff";
break;
case Power::PowerSuspend:
command = "CanSuspend";
break;
case Power::PowerHibernate:
command = "CanHibernate";
break;
default:
return false;
}
return dbusCallSystemd(SYSTEMD_SERVICE,
SYSTEMD_PATH,
SYSTEMD_INTERFACE,
QDBusConnection::systemBus(),
command,
false,
// canAction should be always silent because it can freeze
// g_main_context_iteration Qt event loop in QMessageBox
// on panel startup if there is no DBUS running.
PowerProvider::DontCheckDBUS
);
}
bool SystemdProvider::doAction(Power::Action action)
{
QString command;
switch (action)
{
case Power::PowerReboot:
command = "Reboot";
break;
case Power::PowerShutdown:
command = "PowerOff";
break;
case Power::PowerSuspend:
command = "Suspend";
break;
case Power::PowerHibernate:
command = "Hibernate";
break;
default:
return false;
}
return dbusCallSystemd(SYSTEMD_SERVICE,
SYSTEMD_PATH,
SYSTEMD_INTERFACE,
QDBusConnection::systemBus(),
command,
true
);
}
/************************************************
LxQtProvider
************************************************/
LxQtProvider::LxQtProvider(QObject *parent):
PowerProvider(parent)
{
}
LxQtProvider::~LxQtProvider()
{
}
bool LxQtProvider::canAction(Power::Action action) const
{
switch (action)
{
case Power::PowerLogout:
// there can be case when razo-session does not run
return dbusCall(LXQT_SERVICE, LXQT_PATH, LXQT_SERVICE,
QDBusConnection::sessionBus(), "canLogout",
PowerProvider::DontCheckDBUS);
default:
return false;
}
}
bool LxQtProvider::doAction(Power::Action action)
{
QString command;
switch (action)
{
case Power::PowerLogout:
command = "logout";
break;
default:
return false;
}
return dbusCall(LXQT_SERVICE,
LXQT_PATH,
LXQT_INTERFACE,
QDBusConnection::sessionBus(),
command
);
}
/************************************************
LxSessionProvider
************************************************/
LxSessionProvider::LxSessionProvider(QObject *parent):
PowerProvider(parent)
{
pid = (Q_PID)qgetenv("_LXSESSION_PID").toLong();
}
LxSessionProvider::~LxSessionProvider()
{
}
bool LxSessionProvider::canAction(Power::Action action) const
{
switch (action)
{
case Power::PowerLogout:
return pid != 0;
default:
return false;
}
}
bool LxSessionProvider::doAction(Power::Action action)
{
switch (action)
{
case Power::PowerLogout:
if(pid)
::kill(pid, SIGTERM);
break;
default:
return false;
}
return true;
}
/************************************************
HalProvider
************************************************/
HalProvider::HalProvider(QObject *parent):
PowerProvider(parent)
{
}
HalProvider::~HalProvider()
{
}
bool HalProvider::canAction(Power::Action action) const
{
return false;
}
bool HalProvider::doAction(Power::Action action)
{
return false;
}
/************************************************
CustomProvider
************************************************/
CustomProvider::CustomProvider(QObject *parent):
PowerProvider(parent),
mSettings("power")
{
}
CustomProvider::~CustomProvider()
{
}
bool CustomProvider::canAction(Power::Action action) const
{
switch (action)
{
case Power::PowerShutdown:
return mSettings.contains("shutdownCommand");
case Power::PowerReboot:
return mSettings.contains("rebootCommand");
case Power::PowerHibernate:
return mSettings.contains("hibernateCommand");
case Power::PowerSuspend:
return mSettings.contains("suspendCommand");
case Power::PowerLogout:
return mSettings.contains("logoutCommand");
default:
return false;
}
}
bool CustomProvider::doAction(Power::Action action)
{
QString command;
switch(action)
{
case Power::PowerShutdown:
command = mSettings.value("shutdownCommand").toString();
break;
case Power::PowerReboot:
command = mSettings.value("rebootCommand").toString();
break;
case Power::PowerHibernate:
command = mSettings.value("hibernateCommand").toString();
break;
case Power::PowerSuspend:
command = mSettings.value("suspendCommand").toString();
break;
case Power::PowerLogout:
command = mSettings.value("logoutCommand").toString();
break;
default:
return false;
}
return QProcess::startDetached(command);
}

@ -0,0 +1,159 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTPOWER_PROVIDERS_H
#define LXQTPOWER_PROVIDERS_H
#include <QObject>
#include <lxqtsettings.h>
#include "lxqtpower.h"
#include <QProcess> // for PID_T
namespace LxQt
{
class PowerProvider: public QObject
{
Q_OBJECT
public:
enum DbusErrorCheck {
CheckDBUS,
DontCheckDBUS
};
explicit PowerProvider(QObject *parent = 0);
virtual ~PowerProvider();
/*! Returns true if the Power can perform action.
This is a pure virtual function, and must be reimplemented in subclasses. */
virtual bool canAction(Power::Action action) const = 0 ;
public slots:
/*! Performs the requested action.
This is a pure virtual function, and must be reimplemented in subclasses. */
virtual bool doAction(Power::Action action) = 0;
};
class UPowerProvider: public PowerProvider
{
Q_OBJECT
public:
UPowerProvider(QObject *parent = 0);
~UPowerProvider();
bool canAction(Power::Action action) const;
public slots:
bool doAction(Power::Action action);
};
class ConsoleKitProvider: public PowerProvider
{
Q_OBJECT
public:
ConsoleKitProvider(QObject *parent = 0);
~ConsoleKitProvider();
bool canAction(Power::Action action) const;
public slots:
bool doAction(Power::Action action);
};
class SystemdProvider: public PowerProvider
{
Q_OBJECT
public:
SystemdProvider(QObject *parent = 0);
~SystemdProvider();
bool canAction(Power::Action action) const;
public slots:
bool doAction(Power::Action action);
};
class LxQtProvider: public PowerProvider
{
Q_OBJECT
public:
LxQtProvider(QObject *parent = 0);
~LxQtProvider();
bool canAction(Power::Action action) const;
public slots:
bool doAction(Power::Action action);
};
class LxSessionProvider: public PowerProvider
{
Q_OBJECT
public:
LxSessionProvider(QObject *parent = 0);
~LxSessionProvider();
bool canAction(Power::Action action) const;
public slots:
bool doAction(Power::Action action);
private:
Q_PID pid;
};
class HalProvider: public PowerProvider
{
Q_OBJECT
public:
HalProvider(QObject *parent = 0);
~HalProvider();
bool canAction(Power::Action action) const;
public slots:
bool doAction(Power::Action action);
};
class CustomProvider: public PowerProvider
{
Q_OBJECT
public:
CustomProvider(QObject *parent = 0);
~CustomProvider();
bool canAction(Power::Action action) const;
public slots:
bool doAction(Power::Action action);
private:
Settings mSettings;
};
} // namespace LxQt
#endif // LXQTPOWER_PROVIDERS_H

@ -0,0 +1,209 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Petr Vanek <petr@scribus.info>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtpowermanager.h"
#include "lxqtpower/lxqtpower.h"
#include <QDBusInterface>
#include <QMessageBox>
#include <QApplication>
#include <QDesktopWidget>
#include <QtDebug>
#include "lxqttranslator.h"
#include "lxqtglobals.h"
#include "lxqtsettings.h"
#include <XdgIcon>
namespace LxQt {
class LXQT_API MessageBox: public QMessageBox
{
public:
explicit MessageBox(QWidget *parent = 0): QMessageBox(parent) {}
static QWidget *parentWidget()
{
QWidgetList widgets = QApplication::topLevelWidgets();
if (widgets.count())
return widgets.at(0);
else
return 0;
}
static bool question(const QString& title, const QString& text)
{
MessageBox msgBox(parentWidget());
msgBox.setWindowTitle(title);
msgBox.setText(text);
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
return (msgBox.exec() == QMessageBox::Yes);
}
static void warning(const QString& title, const QString& text)
{
QMessageBox::warning(parentWidget(), tr("LxQt Power Manager Error"), tr("Hibernate failed."));
}
protected:
virtual void resizeEvent(QResizeEvent* event)
{
QRect screen = QApplication::desktop()->screenGeometry();
move((screen.width() - this->width()) / 2,
(screen.height() - this->height()) / 2);
}
};
PowerManager::PowerManager(QObject * parent, bool skipWarning)
: QObject(parent),
m_skipWarning(skipWarning)
{
m_power = new Power(this);
// connect(m_power, SIGNAL(suspendFail()), this, SLOT(suspendFailed()));
// connect(m_power, SIGNAL(hibernateFail()), this, SLOT(hibernateFailed()));
// connect(m_power, SIGNAL(monitoring(const QString &)),
// this, SLOT(monitoring(const QString&)));
QString sessionConfig(getenv("LXQT_SESSION_CONFIG"));
Settings settings(sessionConfig.isEmpty() ? "session" : sessionConfig);
m_skipWarning = settings.value("leave_confirmation").toBool() ? false : true;
}
PowerManager::~PowerManager()
{
// delete m_power;
}
QList<QAction*> PowerManager::availableActions()
{
QList<QAction*> ret;
QAction * act;
// TODO/FIXME: icons
if (m_power->canHibernate())
{
act = new QAction(XdgIcon::fromTheme("system-suspend-hibernate"), tr("Hibernate"), this);
connect(act, SIGNAL(triggered()), this, SLOT(hibernate()));
ret.append(act);
}
if (m_power->canSuspend())
{
act = new QAction(XdgIcon::fromTheme("system-suspend"), tr("Suspend"), this);
connect(act, SIGNAL(triggered()), this, SLOT(suspend()));
ret.append(act);
}
if (m_power->canReboot())
{
act = new QAction(XdgIcon::fromTheme("system-reboot"), tr("Reboot"), this);
connect(act, SIGNAL(triggered()), this, SLOT(reboot()));
ret.append(act);
}
if (m_power->canShutdown())
{
act = new QAction(XdgIcon::fromTheme("system-shutdown"), tr("Shutdown"), this);
connect(act, SIGNAL(triggered()), this, SLOT(shutdown()));
ret.append(act);
}
if (m_power->canLogout())
{
act = new QAction(XdgIcon::fromTheme("system-log-out"), tr("Logout"), this);
connect(act, SIGNAL(triggered()), this, SLOT(logout()));
ret.append(act);
}
return ret;
}
void PowerManager::suspend()
{
if (m_skipWarning ||
MessageBox::question(tr("LxQt Session Suspend"),
tr("Do you want to really suspend your computer?<p>Suspends the computer into a low power state. System state is not preserved if the power is lost.")))
{
m_power->suspend();
}
}
void PowerManager::hibernate()
{
if (m_skipWarning ||
MessageBox::question(tr("LxQt Session Hibernate"),
tr("Do you want to really hibernate your computer?<p>Hibernates the computer into a low power state. System state is preserved if the power is lost.")))
{
m_power->hibernate();
}
}
void PowerManager::reboot()
{
if (m_skipWarning ||
MessageBox::question(tr("LxQt Session Reboot"),
tr("Do you want to really restart your computer? All unsaved work will be lost...")))
{
m_power->reboot();
}
}
void PowerManager::shutdown()
{
if (m_skipWarning ||
MessageBox::question(tr("LxQt Session Shutdown"),
tr("Do you want to really switch off your computer? All unsaved work will be lost...")))
{
m_power->shutdown();
}
}
void PowerManager::logout()
{
if (m_skipWarning ||
MessageBox::question(tr("LxQt Session Logout"),
tr("Do you want to really logout? All unsaved work will be lost...")))
{
m_power->logout();
}
}
void PowerManager::hibernateFailed()
{
MessageBox::warning(tr("LxQt Power Manager Error"), tr("Hibernate failed."));
}
void PowerManager::suspendFailed()
{
MessageBox::warning(tr("LxQt Power Manager Error"), tr("Suspend failed."));
}
} // namespace LxQt

@ -0,0 +1,73 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Petr Vanek <petr@scribus.info>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTPOWERMANAGER_H
#define LXQTPOWERMANAGER_H
#include <QObject>
#include <QAction>
#include "lxqtglobals.h"
namespace LxQt
{
class Power;
/*! QAction centric menu aware wrapper around lxqtpower
*/
class LXQT_API PowerManager : public QObject
{
Q_OBJECT
public:
PowerManager(QObject * parent, bool skipWarning = false);
~PowerManager();
QList<QAction*> availableActions();
public slots:
// power management
void suspend();
void hibernate();
void reboot();
void shutdown();
// lxqt session
void logout();
public:
bool skipWarning() const { return m_skipWarning; }
private:
LxQt::Power * m_power;
bool m_skipWarning;
private slots:
void hibernateFailed();
void suspendFailed();
};
} // namespace LxQt
#endif // LXQTPOWERMANAGER_H

@ -0,0 +1,67 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright (C) 2013 Alec Moskvin <alecm@gmx.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtprogramfinder.h"
#include <wordexp.h>
#include <QDir>
#include <QFileInfo>
using namespace LxQt;
LXQT_API bool ProgramFinder::programExists(const QString& command)
{
QString program = programName(command);
if (program[0] == QChar('/'))
{
QFileInfo fi(program);
return fi.isExecutable() && fi.isFile();
}
QString path = qgetenv("PATH");
foreach (const QString& dirName, path.split(":", QString::SkipEmptyParts))
{
QFileInfo fi(QDir(dirName), program);
if (fi.isExecutable() && fi.isFile())
return true;
}
return false;
}
LXQT_API QStringList ProgramFinder::findPrograms(const QStringList& commands)
{
QStringList availPrograms;
foreach (const QString& program, commands)
if (programExists(program))
availPrograms.append(program);
return availPrograms;
}
LXQT_API QString ProgramFinder::programName(const QString& command)
{
wordexp_t we;
if (wordexp(command.toLocal8Bit().constData(), &we, WRDE_NOCMD) == 0)
if (we.we_wordc > 0)
return QString(we.we_wordv[0]);
return QString();
}

@ -0,0 +1,61 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright (C) 2013 Alec Moskvin <alecm@gmx.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTPROGRAMFINDER_H
#define LXQTPROGRAMFINDER_H
#include <QStringList>
#include "lxqtglobals.h"
namespace LxQt
{
namespace ProgramFinder
{
/*!
* \brief programExists Checks if the program needed to execute the given
* command is installed
* \param command
* \return True if the program exists
*/
LXQT_API bool programExists(const QString& command);
/*!
* \brief findPrograms Filters a list of commands (with arguments) based on
* which programs are installed
* \param commands Commands to check
* \return List of commands which are installed
*/
LXQT_API QStringList findPrograms(const QStringList& commands);
/*!
* \brief programName Returns the program name given a command
* \param command
* \return
*/
LXQT_API QString programName(const QString& command);
}
} // namespace LxQt
#endif // LXQTPROGRAMFINDER_H

@ -0,0 +1,326 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2013 Razor team
* Authors:
* Kuzma Shapran <kuzma.shapran@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtrotatedwidget.h"
#include <QPainter>
#include <QImage>
#include <QApplication>
#include <QMouseEvent>
#ifndef QT_NO_WHEELEVENT
#include <QWheelEvent>
#endif
#include <QResizeEvent>
using namespace LxQt;
RotatedWidget::RotatedWidget(QWidget &content, QWidget *parent, Qt::WindowFlags f)
: QWidget(parent, f)
, mContent(&content)
, mOrigin(Qt::TopLeftCorner)
, mTransferMousePressEvent(false)
, mTransferMouseReleaseEvent(false)
, mTransferMouseDoubleClickEvent(false)
, mTransferMouseMoveEvent(false)
#ifndef QT_NO_WHEELEVENT
, mTransferWheelEvent(false)
#endif
, mTransferEnterEvent(false)
, mTransferLeaveEvent(false)
{
mContent->setParent(this);
}
Qt::Corner RotatedWidget::origin() const
{
return mOrigin;
}
void RotatedWidget::setOrigin(Qt::Corner newOrigin)
{
if (mOrigin != newOrigin)
{
if (mOrigin == Qt::TopLeftCorner)
mContent->hide();
mOrigin = newOrigin;
adjustContentSize();
update();
if (mOrigin == Qt::TopLeftCorner)
mContent->show();
}
}
QWidget * RotatedWidget::content() const
{
return mContent;
}
void RotatedWidget::adjustContentSize()
{
mContent->adjustSize();
QSize before = size();
adjustSize();
if (before != size())
updateGeometry();
}
QSize RotatedWidget::adjustedSize(QSize size) const
{
switch (mOrigin)
{
case Qt::TopLeftCorner:
case Qt::BottomRightCorner:
break;
case Qt::TopRightCorner:
case Qt::BottomLeftCorner:
size.transpose();
break;
}
return size;
}
QPoint RotatedWidget::adjustedPoint(QPoint point) const
{
switch (mOrigin)
{
case Qt::TopLeftCorner:
case Qt::BottomRightCorner:
break;
case Qt::TopRightCorner:
case Qt::BottomLeftCorner:
point = QPoint(point.y(), point.x());
break;
}
return point;
}
QSize RotatedWidget::minimumSizeHint() const
{
return adjustedSize(mContent->minimumSizeHint());
}
QSize RotatedWidget::sizeHint() const
{
return adjustedSize(mContent->sizeHint());
}
void RotatedWidget::paintEvent(QPaintEvent */*event*/)
{
if (mOrigin == Qt::TopLeftCorner)
return;
QSize sz = mContent->size();
QPainter painter(this);
QTransform transform;
QPoint originPoint;
switch (mOrigin)
{
case Qt::TopLeftCorner:
// transform.rotate(0.0);
// originPoint = QPoint(0.0, 0.0);
break;
case Qt::TopRightCorner:
transform.rotate(90.0);
originPoint = QPoint(0.0, -sz.height());
break;
case Qt::BottomRightCorner:
transform.rotate(180.0);
originPoint = QPoint(-sz.width(), -sz.height());
break;
case Qt::BottomLeftCorner:
transform.rotate(270.0);
originPoint = QPoint(-sz.width(), 0.0);
break;
}
painter.setTransform(transform);
mContent->render(&painter, originPoint, QRegion(), RenderFlags(DrawChildren));
}
void RotatedWidget::mousePressEvent(QMouseEvent *event)
{
if (!mTransferMousePressEvent)
{
event->ignore();
return;
}
static bool cascadeCall = false;
if (cascadeCall)
return;
cascadeCall = true;
QMouseEvent contentEvent(event->type(), adjustedPoint(event->pos()), event->globalPos(), event->button(), event->buttons(), event->modifiers());
QApplication::sendEvent(mContent, &contentEvent);
cascadeCall = false;
}
void RotatedWidget::mouseReleaseEvent(QMouseEvent *event)
{
if (!mTransferMouseReleaseEvent)
{
event->ignore();
return;
}
static bool cascadeCall = false;
if (cascadeCall)
return;
cascadeCall = true;
QMouseEvent contentEvent(event->type(), adjustedPoint(event->pos()), event->globalPos(), event->button(), event->buttons(), event->modifiers());
QApplication::sendEvent(mContent, &contentEvent);
cascadeCall = false;
}
void RotatedWidget::mouseDoubleClickEvent(QMouseEvent *event)
{
if (!mTransferMouseDoubleClickEvent)
{
event->ignore();
return;
}
static bool cascadeCall = false;
if (cascadeCall)
return;
cascadeCall = true;
QMouseEvent contentEvent(event->type(), adjustedPoint(event->pos()), event->globalPos(), event->button(), event->buttons(), event->modifiers());
QApplication::sendEvent(mContent, &contentEvent);
cascadeCall = false;
}
void RotatedWidget::mouseMoveEvent(QMouseEvent *event)
{
if (!mTransferMouseMoveEvent)
{
event->ignore();
return;
}
static bool cascadeCall = false;
if (cascadeCall)
return;
cascadeCall = true;
QMouseEvent contentEvent(event->type(), adjustedPoint(event->pos()), event->globalPos(), event->button(), event->buttons(), event->modifiers());
QApplication::sendEvent(mContent, &contentEvent);
cascadeCall = false;
}
#ifndef QT_NO_WHEELEVENT
void RotatedWidget::wheelEvent(QWheelEvent *event)
{
if (!mTransferWheelEvent)
{
event->ignore();
return;
}
static bool cascadeCall = false;
if (cascadeCall)
return;
cascadeCall = true;
QWheelEvent contentEvent(adjustedPoint(event->pos()), event->globalPos(), event->delta(), event->buttons(), event->modifiers(), event->orientation());
QApplication::sendEvent(mContent, &contentEvent);
cascadeCall = false;
}
#endif
void RotatedWidget::enterEvent(QEvent *event)
{
if (!mTransferEnterEvent)
{
event->ignore();
return;
}
static bool cascadeCall = false;
if (cascadeCall)
return;
cascadeCall = true;
QApplication::sendEvent(mContent, event);
cascadeCall = false;
}
void RotatedWidget::leaveEvent(QEvent *event)
{
if (!mTransferLeaveEvent)
{
event->ignore();
return;
}
static bool cascadeCall = false;
if (cascadeCall)
return;
cascadeCall = true;
QApplication::sendEvent(mContent, event);
cascadeCall = false;
}
void RotatedWidget::resizeEvent(QResizeEvent *event)
{
static bool cascadeCall = false;
if (cascadeCall)
return;
cascadeCall = true;
QResizeEvent contentEvent(adjustedSize(event->size()), adjustedSize(event->oldSize()));
QApplication::sendEvent(mContent, &contentEvent);
cascadeCall = false;
}

@ -0,0 +1,126 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2013 Razor team
* Authors:
* Kuzma Shapran <kuzma.shapran@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTROTATED_WIDGET_H
#define LXQTROTATED_WIDGET_H
#include <QWidget>
#include "lxqtglobals.h"
namespace LxQt
{
class LXQT_API RotatedWidget: public QWidget
{
Q_OBJECT
Q_PROPERTY(Qt::Corner origin READ origin WRITE setOrigin)
Q_PROPERTY(bool transferMousePressEvent READ transferMousePressEvent WRITE setTransferMousePressEvent)
Q_PROPERTY(bool transferMouseReleaseEvent READ transferMouseReleaseEvent WRITE setTransferMouseReleaseEvent)
Q_PROPERTY(bool transferMouseDoubleClickEvent READ transferMouseDoubleClickEvent WRITE setTransferMouseDoubleClickEvent)
Q_PROPERTY(bool transferMouseMoveEvent READ transferMouseMoveEvent WRITE setTransferMouseMoveEvent)
#ifndef QT_NO_WHEELEVENT
Q_PROPERTY(bool transferWheelEvent READ transferWheelEvent WRITE setTransferWheelEvent)
#endif
Q_PROPERTY(bool transferEnterEvent READ transferEnterEvent WRITE setTransferEnterEvent)
Q_PROPERTY(bool transferLeaveEvent READ transferLeaveEvent WRITE setTransferLeaveEvent)
public:
explicit RotatedWidget(QWidget &content, QWidget* parent = 0, Qt::WindowFlags f = 0);
Qt::Corner origin() const;
void setOrigin(Qt::Corner);
QWidget * content() const;
void adjustContentSize();
virtual QSize minimumSizeHint() const;
virtual QSize sizeHint() const;
QSize adjustedSize(QSize) const;
QPoint adjustedPoint(QPoint) const;
bool transferMousePressEvent() const { return mTransferMousePressEvent; }
void setTransferMousePressEvent(bool value) { mTransferMousePressEvent = value; }
bool transferMouseReleaseEvent() const { return mTransferMouseReleaseEvent; }
void setTransferMouseReleaseEvent(bool value) { mTransferMouseReleaseEvent = value; }
bool transferMouseDoubleClickEvent() const { return mTransferMouseDoubleClickEvent; }
void setTransferMouseDoubleClickEvent(bool value) { mTransferMouseDoubleClickEvent = value; }
bool transferMouseMoveEvent() const { return mTransferMouseMoveEvent; }
void setTransferMouseMoveEvent(bool value) { mTransferMouseMoveEvent = value; }
#ifndef QT_NO_WHEELEVENT
bool transferWheelEvent() const { return mTransferWheelEvent; }
void setTransferWheelEvent(bool value) { mTransferWheelEvent = value; }
#endif
bool transferEnterEvent() const { return mTransferEnterEvent; }
void setTransferEnterEvent(bool value) { mTransferEnterEvent = value; }
bool transferLeaveEvent() const { return mTransferLeaveEvent; }
void setTransferLeaveEvent(bool value) { mTransferLeaveEvent = value; }
protected:
virtual void paintEvent(QPaintEvent *);
// Transition event handlers
virtual void mousePressEvent(QMouseEvent *);
virtual void mouseReleaseEvent(QMouseEvent *);
virtual void mouseDoubleClickEvent(QMouseEvent *);
virtual void mouseMoveEvent(QMouseEvent *);
#ifndef QT_NO_WHEELEVENT
virtual void wheelEvent(QWheelEvent *);
#endif
virtual void enterEvent(QEvent *);
virtual void leaveEvent(QEvent *);
virtual void resizeEvent(QResizeEvent *);
private:
QWidget *mContent;
Qt::Corner mOrigin;
bool mTransferMousePressEvent;
bool mTransferMouseReleaseEvent;
bool mTransferMouseDoubleClickEvent;
bool mTransferMouseMoveEvent;
#ifndef QT_NO_WHEELEVENT
bool mTransferWheelEvent;
#endif
bool mTransferEnterEvent;
bool mTransferLeaveEvent;
};
} // namespace LxQt
#endif // LXQTROTATEDWIDGET_H

@ -0,0 +1,130 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Petr Vanek <petr@scribus.info>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include <QProcess>
#include "lxqtscreensaver.h"
#include "lxqttranslator.h"
#include <XdgIcon>
#include <QMessageBox>
#include <QAction>
using namespace LxQt;
ScreenSaver::ScreenSaver(QObject * parent)
: QObject(parent)
{
m_xdgProcess = new QProcess(this);
connect(m_xdgProcess, SIGNAL(finished(int,QProcess::ExitStatus)),
this, SLOT(xdgProcess_finished(int,QProcess::ExitStatus)));
}
QList<QAction*> ScreenSaver::availableActions()
{
QList<QAction*> ret;
QAction * act;
act = new QAction(XdgIcon::fromTheme("system-lock-screen", "lock"), tr("Lock Screen"), this);
connect(act, SIGNAL(triggered()), this, SLOT(lockScreen()));
ret.append(act);
return ret;
}
void ScreenSaver::lockScreen()
{
m_xdgProcess->start("xdg-screensaver", QStringList() << "lock");
}
void ScreenSaver::xdgProcess_finished(int err, QProcess::ExitStatus status)
{
QWidget *p = qobject_cast<QWidget*>(parent());
if (status == QProcess::CrashExit)
{
QMessageBox::warning(p,
tr("Screen Saver Activation Error"),
tr("An error occurred starting screensaver. "
"xdg-screensaver cannot be started due its crash.")
);
}
else if (err == -2)
{
QMessageBox::warning(p,
tr("Screen Saver Activation Error"),
tr("An error occurred starting screensaver. "
"xdg-screensaver is not installed correctly.")
);
}
else if (err == -1)
{
QMessageBox::warning(p,
tr("Screen Saver Activation Error"),
tr("An error occurred starting screensaver. "
"xdg-screensaver cannot be started.")
);
}
else if (err == 0)
{
emit activated();
}
else if (err == 1)
{
QMessageBox::warning(p,
tr("Screen Saver Activation Error"),
tr("An error occurred starting screensaver. "
"Syntax error in xdg-screensaver arguments.")
);
}
else if (err == 3)
{
QMessageBox::warning(p,
tr("Screen Saver Activation Error"),
tr("An error occurred starting screensaver. "
"Ensure you have xscreensaver installed and running.")
);
}
else if (err == 4)
{
QMessageBox::warning(p,
tr("Screen Saver Activation Error"),
tr("An error occurred starting screensaver. "
"Action 'activate' failed. "
"Ensure you have xscreensaver installed and running.")
);
}
else
{
QMessageBox::warning(p,
tr("Screen Saver Activation Error"),
tr("An error occurred starting screensaver. "
"Unknown error - undocumented return value from xdg-screensaver=%1.").arg(err)
);
}
emit done();
}

@ -0,0 +1,66 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Petr Vanek <petr@scribus.info>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef SCREENSAVER_H
#define SCREENSAVER_H
#include <QProcess>
#include <QObject>
#include "lxqtglobals.h"
#include <QAction>
class QProcess;
namespace LxQt
{
class LXQT_API ScreenSaver : public QObject
{
Q_OBJECT
public:
ScreenSaver(QObject * parent=0);
QList<QAction*> availableActions();
signals:
void activated();
void done();
public slots:
void lockScreen();
private:
QProcess * m_xdgProcess;
private slots:
void xdgProcess_finished(int err, QProcess::ExitStatus status);
};
} // namespace LxQt
#endif

@ -0,0 +1,700 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
* Petr Vanek <petr@scribus.info>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtsettings.h"
#include <QDebug>
#include <QEvent>
#include <QDir>
#include <QStringList>
#include <QMutex>
#include <QFileSystemWatcher>
#include <QSharedData>
#include <QTimerEvent>
#include <XdgIcon>
#include <XdgDirs>
using namespace LxQt;
class LxQt::SettingsPrivate
{
public:
SettingsPrivate(Settings* parent):
mChangeTimer(0),
mParent(parent)
{
}
QString localizedKey(const QString& key) const;
QFileSystemWatcher mWatcher;
int mChangeTimer;
private:
Settings* mParent;
};
LxQtTheme* LxQtTheme::mInstance = 0;
class LxQt::LxQtThemeData: public QSharedData {
public:
LxQtThemeData(): mValid(false) {}
QString loadQss(const QString& qssFile) const;
QString findTheme(const QString &themeName);
QString mName;
QString mPath;
QString mPreviewImg;
bool mValid;
};
class LxQt::GlobalSettingsPrivate
{
public:
GlobalSettingsPrivate(GlobalSettings *parent):
mParent(parent),
mThemeUpdated(0ull)
{
}
GlobalSettings *mParent;
QString mIconTheme;
QString mLxQtTheme;
qlonglong mThemeUpdated;
};
/************************************************
************************************************/
Settings::Settings(const QString& module, QObject* parent) :
QSettings("lxqt", module, parent),
d_ptr(new SettingsPrivate(this))
{
// HACK: we need to ensure that the user (~/.config/lxqt/<module>.conf)
// exists to have functional mWatcher
if (!contains("__userfile__"))
{
setValue("__userfile__", true);
sync();
}
d_ptr->mWatcher.addPath(this->fileName());
connect(&(d_ptr->mWatcher), &QFileSystemWatcher::fileChanged, this, &Settings::_fileChanged);
}
/************************************************
************************************************/
Settings::Settings(const QString &fileName, QSettings::Format format, QObject *parent):
QSettings(fileName, format, parent),
d_ptr(new SettingsPrivate(this))
{
// HACK: we need to ensure that the user (~/.config/lxqt/<module>.conf)
// exists to have functional mWatcher
if (!contains("__userfile__"))
{
setValue("__userfile__", true);
sync();
}
d_ptr->mWatcher.addPath(this->fileName());
connect(&(d_ptr->mWatcher), &QFileSystemWatcher::fileChanged, this, &Settings::_fileChanged);
}
/************************************************
************************************************/
Settings::Settings(const QSettings* parentSettings, const QString& subGroup, QObject* parent):
QSettings(parentSettings->organizationName(), parentSettings->applicationName(), parent),
d_ptr(new SettingsPrivate(this))
{
beginGroup(subGroup);
}
/************************************************
************************************************/
Settings::Settings(const QSettings& parentSettings, const QString& subGroup, QObject* parent):
QSettings(parentSettings.organizationName(), parentSettings.applicationName(), parent),
d_ptr(new SettingsPrivate(this))
{
beginGroup(subGroup);
}
/************************************************
************************************************/
Settings::~Settings()
{
// because in the Settings::Settings(const QString& module, QObject* parent)
// constructor there is no beginGroup() called...
if (!group().isEmpty())
endGroup();
delete d_ptr;
}
bool Settings::event(QEvent *event)
{
if (event->type() == QEvent::UpdateRequest)
{
emit settingsChanged();
}
else if (event->type() == QEvent::Timer)
{
if(static_cast<QTimerEvent*>(event)->timerId() == d_ptr->mChangeTimer)
{
fileChanged(); // invoke the real fileChanged() handler.
killTimer(d_ptr->mChangeTimer);
d_ptr->mChangeTimer = 0;
}
}
return QSettings::event(event);
}
void Settings::fileChanged()
{
sync();
emit settingsChanged();
}
void Settings::_fileChanged(QString path)
{
// delay the change notification for 100 ms to avoid
// unnecessary repeated loading of the same config file if
// the file is changed for several times rapidly.
if(d_ptr->mChangeTimer)
killTimer(d_ptr->mChangeTimer);
d_ptr->mChangeTimer = startTimer(100);
// D*mn! yet another Qt 5.4 regression!!!
// See the bug report: https://github.com/lxde/lxqt/issues/441
// Since Qt 5.4, QSettings uses QSaveFile to save the config files.
// https://github.com/qtproject/qtbase/commit/8d15068911d7c0ba05732e2796aaa7a90e34a6a1#diff-e691c0405f02f3478f4f50a27bdaecde
// QSaveFile will save the content to a new temp file, and replace the old file later.
// Hence the existing config file is not changed. Instead, it's deleted and then replaced.
// This new behaviour unfortunately breaks QFileSystemWatcher.
// After file deletion, we can no longer receive any new change notifications.
// The most ridiculous thing is, QFileSystemWatcher does not provide a
// way for us to know if a file is deleted. WT*?
// Luckily, I found a workaround: If the file path no longer exists
// in the watcher's files(), this file is deleted.
if(!d_ptr->mWatcher.files().contains(path))
d_ptr->mWatcher.addPath(path);
}
/************************************************
************************************************/
const GlobalSettings *Settings::globalSettings()
{
static QMutex mutex;
static GlobalSettings *instance = 0;
if (!instance)
{
mutex.lock();
if (!instance)
instance = new GlobalSettings();
mutex.unlock();
}
return instance;
}
/************************************************
LC_MESSAGES value Possible keys in order of matching
lang_COUNTRY@MODIFIER lang_COUNTRY@MODIFIER, lang_COUNTRY, lang@MODIFIER, lang,
default value
lang_COUNTRY lang_COUNTRY, lang, default value
lang@MODIFIER lang@MODIFIER, lang, default value
lang lang, default value
************************************************/
QString SettingsPrivate::localizedKey(const QString& key) const
{
QString lang = getenv("LC_MESSAGES");
if (lang.isEmpty())
lang = getenv("LC_ALL");
if (lang.isEmpty())
lang = getenv("LANG");
QString modifier = lang.section('@', 1);
if (!modifier.isEmpty())
lang.truncate(lang.length() - modifier.length() - 1);
QString encoding = lang.section('.', 1);
if (!encoding.isEmpty())
lang.truncate(lang.length() - encoding.length() - 1);
QString country = lang.section('_', 1);
if (!country.isEmpty())
lang.truncate(lang.length() - country.length() - 1);
//qDebug() << "LC_MESSAGES: " << getenv("LC_MESSAGES");
//qDebug() << "Lang:" << lang;
//qDebug() << "Country:" << country;
//qDebug() << "Encoding:" << encoding;
//qDebug() << "Modifier:" << modifier;
if (!modifier.isEmpty() && !country.isEmpty())
{
QString k = QString("%1[%2_%3@%4]").arg(key, lang, country, modifier);
//qDebug() << "\t try " << k << mParent->contains(k);
if (mParent->contains(k))
return k;
}
if (!country.isEmpty())
{
QString k = QString("%1[%2_%3]").arg(key, lang, country);
//qDebug() << "\t try " << k << mParent->contains(k);
if (mParent->contains(k))
return k;
}
if (!modifier.isEmpty())
{
QString k = QString("%1[%2@%3]").arg(key, lang, modifier);
//qDebug() << "\t try " << k << mParent->contains(k);
if (mParent->contains(k))
return k;
}
QString k = QString("%1[%2]").arg(key, lang);
//qDebug() << "\t try " << k << mParent->contains(k);
if (mParent->contains(k))
return k;
//qDebug() << "\t try " << key << mParent->contains(key);
return key;
}
/************************************************
************************************************/
QVariant Settings::localizedValue(const QString& key, const QVariant& defaultValue) const
{
Q_D(const Settings);
return value(d->localizedKey(key), defaultValue);
}
/************************************************
************************************************/
void Settings::setLocalizedValue(const QString &key, const QVariant &value)
{
Q_D(const Settings);
setValue(d->localizedKey(key), value);
}
/************************************************
************************************************/
LxQtTheme::LxQtTheme():
d(new LxQtThemeData)
{
}
/************************************************
************************************************/
LxQtTheme::LxQtTheme(const QString &path):
d(new LxQtThemeData)
{
if (path.isEmpty())
return;
QFileInfo fi(path);
if (fi.isAbsolute())
{
d->mPath = path;
d->mName = fi.fileName();
d->mValid = fi.isDir();
}
else
{
d->mName = path;
d->mPath = d->findTheme(path);
d->mValid = !(d->mPath.isEmpty());
}
if (QDir(path).exists("preview.png"))
d->mPreviewImg = path + "/preview.png";
}
/************************************************
************************************************/
QString LxQtThemeData::findTheme(const QString &themeName)
{
if (themeName.isEmpty())
return "";
QStringList paths;
paths << XdgDirs::dataHome(false);
paths << XdgDirs::dataDirs();
// TODO/FIXME: this is fallback path for standard CMAKE_INSTALL_PREFIX
paths << "/usr/local/share";
foreach(QString path, paths)
{
QDir dir(QString("%1/lxqt/themes/%2").arg(path, themeName));
if (dir.isReadable())
return dir.absolutePath();
}
return QString();
}
/************************************************
************************************************/
LxQtTheme::LxQtTheme(const LxQtTheme &other):
d(other.d)
{
}
/************************************************
************************************************/
LxQtTheme::~LxQtTheme()
{
}
/************************************************
************************************************/
LxQtTheme& LxQtTheme::operator=(const LxQtTheme &other)
{
d = other.d;
return *this;
}
/************************************************
************************************************/
bool LxQtTheme::isValid() const
{
return d->mValid;
}
/************************************************
************************************************/
QString LxQtTheme::name() const
{
return d->mName;
}
/************************************************
************************************************/
QString LxQtTheme::path() const
{
return d->mPath;
}
/************************************************
************************************************/
QString LxQtTheme::previewImage() const
{
return d->mPreviewImg;
}
/************************************************
************************************************/
QString LxQtTheme::qss(const QString& module) const
{
QString path = QString("%1/%2.qss").arg(d->mPath, module);
QString styleSheet;
if (!path.isEmpty())
styleSheet = d->loadQss(path);
else
qWarning() << QString("QSS file %1 cannot be found").arg(path);
// Single/double click ...........................
Settings s("desktop");
bool singleClick = s.value("icon-launch-mode", "singleclick").toString() == "singleclick";
styleSheet += QString("QAbstractItemView {activate-on-singleclick : %1; }").arg(singleClick ? 1 : 0);
return styleSheet;
}
/************************************************
************************************************/
QString LxQtThemeData::loadQss(const QString& qssFile) const
{
QFile f(qssFile);
if (! f.open(QIODevice::ReadOnly | QIODevice::Text))
{
qWarning() << "Theme: Cannot open file for reading:" << qssFile;
return QString();
}
QString qss = f.readAll();
f.close();
if (qss.isEmpty())
return QString();
// handle relative paths
QString qssDir = QFileInfo(qssFile).canonicalPath();
qss.replace(QRegExp("url.[ \\t\\s]*", Qt::CaseInsensitive, QRegExp::RegExp2), "url(" + qssDir + "/");
return qss;
}
/************************************************
************************************************/
QString LxQtTheme::desktopBackground(int screen) const
{
QString wallpaperCfgFileName = QString("%1/wallpaper.cfg").arg(d->mPath);
if (wallpaperCfgFileName.isEmpty())
return QString();
QSettings s(wallpaperCfgFileName, QSettings::IniFormat);
QString themeDir = QFileInfo(wallpaperCfgFileName).absolutePath();
// There is something strange... If I remove next line the wallpapers array is not found...
s.childKeys();
s.beginReadArray("wallpapers");
s.setArrayIndex(screen - 1);
if (s.contains("file"))
return QString("%1/%2").arg(themeDir, s.value("file").toString());
s.setArrayIndex(0);
if (s.contains("file"))
return QString("%1/%2").arg(themeDir, s.value("file").toString());
return QString();
}
/************************************************
************************************************/
const LxQtTheme &LxQtTheme::currentTheme()
{
static LxQtTheme theme;
QString name = Settings::globalSettings()->value("theme").toString();
if (theme.name() != name)
{
theme = LxQtTheme(name);
}
return theme;
}
/************************************************
************************************************/
QList<LxQtTheme> LxQtTheme::allThemes()
{
QList<LxQtTheme> ret;
QSet<QString> processed;
QStringList paths;
paths << XdgDirs::dataHome(false);
paths << XdgDirs::dataDirs();
foreach(QString path, paths)
{
QDir dir(QString("%1/lxqt/themes").arg(path));
QFileInfoList dirs = dir.entryInfoList(QDir::AllDirs | QDir::NoDotAndDotDot);
foreach(QFileInfo dir, dirs)
{
if (!processed.contains(dir.fileName()) &&
QDir(dir.absoluteFilePath()).exists("lxqt-panel.qss"))
{
processed << dir.fileName();
ret << LxQtTheme(dir.absoluteFilePath());
}
}
}
return ret;
}
/************************************************
************************************************/
SettingsCache::SettingsCache(QSettings &settings) :
mSettings(settings)
{
loadFromSettings();
}
/************************************************
************************************************/
SettingsCache::SettingsCache(QSettings *settings) :
mSettings(*settings)
{
loadFromSettings();
}
/************************************************
************************************************/
void SettingsCache::loadFromSettings()
{
foreach (QString key, mSettings.allKeys())
{
mCache.insert(key, mSettings.value(key));
}
}
/************************************************
************************************************/
void SettingsCache::loadToSettings()
{
QHash<QString, QVariant>::const_iterator i = mCache.constBegin();
while(i != mCache.constEnd())
{
mSettings.setValue(i.key(), i.value());
++i;
}
mSettings.sync();
}
/************************************************
************************************************/
GlobalSettings::GlobalSettings():
Settings("lxqt"),
d_ptr(new GlobalSettingsPrivate(this))
{
if (value("icon_theme").toString().isEmpty())
{
QStringList failback;
failback << "oxygen";
failback << "Tango";
failback << "Prudence-icon";
failback << "Humanity";
failback << "elementary";
failback << "gnome";
QDir dir("/usr/share/icons/");
foreach (QString s, failback)
{
if (dir.exists(s))
{
setValue("icon_theme", s);
sync();
break;
}
}
}
fileChanged();
}
GlobalSettings::~GlobalSettings()
{
delete d_ptr;
}
/************************************************
************************************************/
void GlobalSettings::fileChanged()
{
Q_D(GlobalSettings);
sync();
QString it = value("icon_theme").toString();
if (d->mIconTheme != it)
{
d->mIconTheme = it;
XdgIcon::setThemeName(it);
emit iconThemeChanged();
}
QString rt = value("theme").toString();
qlonglong themeUpdated = value("__theme_updated__").toLongLong();
if ((d->mLxQtTheme != rt) || (d->mThemeUpdated != themeUpdated))
{
d->mLxQtTheme = rt;
emit lxqtThemeChanged();
}
emit settingsChanged();
}

@ -0,0 +1,206 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2010-2011 Razor team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTSETTINGS_H
#define LXQTSETTINGS_H
#include <QObject>
#include <QSettings>
#include <QSharedDataPointer>
#include "lxqtglobals.h"
class QEvent;
namespace LxQt
{
class SettingsPrivate;
class GlobalSettings;
/*! \brief User settings handling */
class LXQT_API Settings : public QSettings
{
Q_OBJECT
public:
/*! \brief Constructs a Settings object for accessing settings of the module called module, and with parent parent.
Settings can be accessed using the standard interface provided by QSettings, but it also provides some convenience functions and signals.
\param module a base name of the config file. It's a name without
the extension. For example: if you want to open settings for
panel create it as Settings("panel").
The function will create all parent directories necessary to create
the file.
\param parent It's no need to delete this class manually if it's set.
*/
explicit Settings(const QString& module, QObject* parent = 0);
//explicit Settings(QObject* parent=0);
explicit Settings(const QSettings* parentSettings, const QString& subGroup, QObject* parent=0);
explicit Settings(const QSettings& parentSettings, const QString& subGroup, QObject* parent=0);
Settings(const QString &fileName, QSettings::Format format, QObject *parent = 0);
~Settings();
static const GlobalSettings *globalSettings();
/*! Returns the localized value for key. In the desktop file keys may be postfixed by [LOCALE]. If the
localized value doesn't exist, returns non lokalized value. If non localized value doesn't exist, returns defaultValue.
LOCALE must be of the form lang_COUNTRY.ENCODING@MODIFIER, where _COUNTRY, .ENCODING, and @MODIFIER may be omitted.
If no default value is specified, a default QVariant is returned. */
QVariant localizedValue(const QString& key, const QVariant& defaultValue = QVariant()) const;
/*! Sets the value of setting key to value. If a localized version of the key already exists, the previous value is
overwritten. Otherwise, it overwrites the the un-localized version. */
void setLocalizedValue(const QString &key, const QVariant &value);
signals:
void settingsChanged();
protected:
bool event(QEvent *event);
protected slots:
/*! Called when the config file is changed */
virtual void fileChanged();
private slots:
void _fileChanged(QString path);
private:
Q_DISABLE_COPY(Settings)
SettingsPrivate* const d_ptr;
Q_DECLARE_PRIVATE(Settings)
};
class LxQtThemeData;
/*! \brief QSS theme handling */
class LXQT_API LxQtTheme
{
public:
/// Constructs a null theme.
LxQtTheme();
/*! Constructs an theme from the dir with the given path. If path not absolute
(i.e. the theme name only) the relevant dir must be found relative to the
$XDG_DATA_HOME + $XDG_DATA_DIRS directories. */
LxQtTheme(const QString &path);
/// Constructs a copy of other. This is very fast.
LxQtTheme(const LxQtTheme &other);
LxQtTheme& operator=(const LxQtTheme &other);
~LxQtTheme();
/// Returns the name of the theme.
QString name() const;
QString path() const;
QString previewImage() const;
/// Returns true if this theme is valid; otherwise returns false.
bool isValid() const;
/*! \brief Returns StyleSheet text (not file name, but real text) of the module called module.
Paths in url() C/QSS functions are parsed to be real values for the theme,
relative to full path
*/
QString qss(const QString& module) const;
/*! \brief A full path to image used as a wallpaper
\param screen is an ID of the screen like in Qt. -1 means default (any) screen.
Any other value greater than -1 is the exact screen (in dualhead).
In themes the index starts from 1 (ix 1 means 1st screen).
\retval QString a file name (including path).
*/
QString desktopBackground(int screen=-1) const;
/// Returns the current lxqt theme.
static const LxQtTheme &currentTheme();
/// Returns the all themes found in the system.
static QList<LxQtTheme> allThemes();
private:
static LxQtTheme* mInstance;
QSharedDataPointer<LxQtThemeData> d;
};
/*!
A global pointer referring to the unique LxQtTheme object.
It is equivalent to the pointer returned by the LxQtTheme::instance() function.
Only one theme object can be created. !*/
#define lxqtTheme LxQtTheme::currentTheme()
class LXQT_API SettingsCache
{
public:
explicit SettingsCache(QSettings &settings);
explicit SettingsCache(QSettings *settings);
virtual ~SettingsCache() {}
void loadFromSettings();
void loadToSettings();
private:
QSettings &mSettings;
QHash<QString, QVariant> mCache;
};
class GlobalSettingsPrivate;
class GlobalSettings: public Settings
{
Q_OBJECT
public:
GlobalSettings();
~GlobalSettings();
signals:
/// Signal emitted when the icon theme has changed.
void iconThemeChanged();
/// Signal emitted when the lxqt theme has changed.
void lxqtThemeChanged();
protected slots:
void fileChanged();
private:
GlobalSettingsPrivate* const d_ptr;
Q_DECLARE_PRIVATE(GlobalSettings)
};
} // namespace LxQt
#endif // LXQTSETTINGS_H

@ -0,0 +1,109 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://lxqt.org
*
* Copyright: 2014 LXQt team
* Authors:
* Luís Pereira <luis.artur.pereira@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#include "lxqtsingleapplication.h"
#include "singleapplicationadaptor.h"
#include <KWindowSystem/KWindowSystem>
#include <KWindowSystem/NETWM>
#include <QDBusMessage>
#include <QWidget>
#include <QDebug>
using namespace LxQt;
SingleApplication::SingleApplication(int &argc, char **argv, StartOptions options)
: Application(argc, argv),
mActivationWindow(0)
{
QString service =
QString::fromLatin1("org.lxqt.%1").arg(QApplication::applicationName());
SingleApplicationAdaptor *mAdaptor = new SingleApplicationAdaptor(this);
QDBusConnection bus = QDBusConnection::sessionBus();
if (!bus.isConnected()) {
QLatin1String errorMessage("Can't connect to the D-Bus session bus\n"
"Make sure the D-Bus daemon is running");
/* ExitOnDBusFailure is the default. Any value other than
NoExitOnDBusFailure will be taken as ExitOnDBusFailure (the default).
*/
if (options == NoExitOnDBusFailure) {
qDebug() << Q_FUNC_INFO << errorMessage;
return;
} else {
qCritical() << Q_FUNC_INFO << errorMessage;
::exit(1);
}
}
bool registered = (bus.registerService(service) ==
QDBusConnectionInterface::ServiceRegistered);
if (registered) { // We are the primary instance
QLatin1String objectPath("/");
bus.registerObject(objectPath, mAdaptor,
QDBusConnection::ExportAllSlots);
} else { // We are the second outstance
QDBusMessage msg = QDBusMessage::createMethodCall(service,
QStringLiteral("/"),
QStringLiteral("org.lxqt.SingleApplication"),
QStringLiteral("activateWindow"));
QDBusConnection::sessionBus().send(msg);
::exit(0);
}
}
SingleApplication::~SingleApplication()
{
}
void SingleApplication::setActivationWindow(QWidget *w)
{
mActivationWindow = w;
}
QWidget *SingleApplication::activationWindow() const
{
return mActivationWindow;
}
void SingleApplication::activateWindow()
{
if (mActivationWindow) {
WId window = mActivationWindow->effectiveWinId();
KWindowInfo info(window, NET::WMDesktop);
int windowDesktop = info.desktop();
if (windowDesktop != KWindowSystem::currentDesktop())
KWindowSystem::setCurrentDesktop(windowDesktop);
KWindowSystem::activateWindow(window);
} else {
qDebug() << Q_FUNC_INFO << "activationWindow not set or null";
}
}

@ -0,0 +1,158 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://lxqt.org
*
* Copyright: 2014 LXQt team
* Authors:
* Luís Pereira <luis.artur.pereira@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTSINGLEAPPLICATION_H
#define LXQTSINGLEAPPLICATION_H
#include "lxqtapplication.h"
class QWidget;
namespace LxQt {
/*! \class SingleApplication
* \brief The SingleApplication class provides an single instance Application.
*
* This class allows the user to create applications where only one instance
* is allowed to be running at an given time. If the user tries to launch
* another instance, the already running instance will be activated instead.
*
* The user has to set the activation window with setActivationWindow. If it
* doesn't the second instance will quietly exit without activating the first
* instance window. In any case only one instance is allowed.
*
* This classes depends uses D-Bus and KF5::WindowSystem
*
* \code
*
* // Original code
* int main(int argc, char **argv)
* {
* LxQt::Application app(argc, argv);
*
* MainWidget w;
* w.show();
*
* return app.exec();
* }
*
* // SingleApplication code
* int main(int argc, char **argv)
* {
* LxQt::SingleApplication app(argc, argv);
*
* MainWidget w;
* app.setActivationWindow(&w);
* w.show();
*
* return app.exec();
* }
* \endcode
* \sa SingleApplication
*/
class LXQT_API SingleApplication : public Application {
Q_OBJECT
Q_ENUMS(StartOptions)
public:
/*!
* \brief Options to control the D-Bus failure related application behaviour
*
* By default (ExitOnDBusFailure) if an instance can't connect to the D-Bus
* session bus, that instance calls ::exit(1). Not even the first instance
* will run. Connecting to the D-Bus session bus is an condition to
* guarantee that only one instance will run.
*
* If an user wants to allow an application to run without D-Bus, it must
* use the NoExitOnDBusFailure option.
*
* ExitOnDBusFailure is the default.
*/
enum StartOptions {
/** Exit if the connection to the D-Bus session bus fails.
* It's the default
*/
ExitOnDBusFailure,
/** Don't exit if the connection to the D-Bus session bud fails.*/
NoExitOnDBusFailure
};
/*!
* \brief Construct a LxQt SingleApplication object.
* \param argc standard argc as in QApplication
* \param argv standard argv as in QApplication
* \param options Control the on D-Bus failure application behaviour
*
* \sa StartOptions.
*/
SingleApplication(int &argc, char **argv, StartOptions options = ExitOnDBusFailure);
virtual ~SingleApplication();
/*!
* \brief Sets the activation window.
* \param w activation window.
*
* Sets the activation window of this application to w. The activation
* window is the widget that will be activated by \a activateWindow().
*
* \sa activationWindow() \sa activateWindow();
*/
void setActivationWindow(QWidget *w);
/*!
* \brief Gets the current activation window.
* \return The current activation window.
*
* \sa setActivationWindow();
*/
QWidget *activationWindow() const;
public Q_SLOTS:
/*!
* \brief Activates this application activation window.
*
* Changes to the desktop where this applications is. It then de-minimizes,
* raises and activates the application's activation window.
* If no activation window has been set, this function does nothing.
*
* \sa setActivationWindow();
*/
void activateWindow();
private:
QWidget *mActivationWindow;
};
#if defined(lxqtSingleApp)
#undef lxqtSingleApp
#endif
#define lxqtSingleApp (static_cast<LxQt::SingleApplication *>(qApp))
}; // namespace LxQt
#endif // LXQTSINGLEAPPLICATION_H

@ -0,0 +1,159 @@
#include "lxqttranslator.h"
#include <QTranslator>
#include <QLocale>
#include <QDebug>
#include <QCoreApplication>
#include <QLibraryInfo>
#include <QStringList>
#include <QStringBuilder>
#include <QFileInfo>
#include <XdgDirs>
using namespace LxQt;
bool translate(const QString &name, const QString &owner = QString());
/************************************************
************************************************/
QStringList *getSearchPaths()
{
static QStringList *searchPath = 0;
if (searchPath == 0)
{
searchPath = new QStringList();
*searchPath << QString(LXQT_SHARE_TRANSLATIONS_DIR);
*searchPath << XdgDirs::dataDirs(LXQT_RELATIVE_SHARE_TRANSLATIONS_DIR);
searchPath->removeDuplicates();
}
return searchPath;
}
/************************************************
************************************************/
QStringList LxQt::Translator::translationSearchPaths()
{
return *(getSearchPaths());
}
/************************************************
************************************************/
void Translator::setTranslationSearchPaths(const QStringList &paths)
{
QStringList *p = getSearchPaths();
p->clear();
*p << paths;
}
/************************************************
************************************************/
bool translate(const QString &name, const QString &owner)
{
QString locale = QLocale::system().name();
QTranslator *appTranslator = new QTranslator(qApp);
QStringList *paths = getSearchPaths();
foreach(QString path, *paths)
{
QStringList subPaths;
if (!owner.isEmpty())
{
subPaths << path % QChar('/') % owner % QChar('/') % name;
}
else
{
subPaths << path % QChar('/') % name;
subPaths << path;
}
foreach(QString p, subPaths)
{
if (appTranslator->load(name + "_" + locale, p))
{
QCoreApplication::installTranslator(appTranslator);
return true;
}
else if (locale == QLatin1String("C") ||
locale.startsWith(QLatin1String("en")))
{
// English is the default. Even if there isn't an translation
// file, we return true. It's translated anyway.
delete appTranslator;
return true;
}
}
}
// If we got here, no translation was loaded. appTranslator has no use.
delete appTranslator;
return false;
}
/************************************************
************************************************/
bool Translator::translateApplication(const QString &applicationName)
{
QString locale = QLocale::system().name();
QTranslator *qtTranslator = new QTranslator(qApp);
if (qtTranslator->load("qt_" + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
{
qApp->installTranslator(qtTranslator);
}
else
{
delete qtTranslator;
qWarning("LxQt::Translator: Qt translations not found");
}
if (!applicationName.isEmpty())
return translate(applicationName);
else
return translate(QFileInfo(QCoreApplication::applicationFilePath()).baseName());
}
/************************************************
************************************************/
bool Translator::translateLibrary(const QString &libraryName)
{
static QSet<QString> loadedLibs;
if (loadedLibs.contains(libraryName))
return true;
loadedLibs.insert(libraryName);
return translate(libraryName);
}
bool Translator::translatePlugin(const QString &pluginName, const QString& type)
{
static QSet<QString> loadedPlugins;
QString fullName = type % QChar('/') % pluginName;
if (loadedPlugins.contains(fullName))
return true;
loadedPlugins.insert(pluginName);
return translate(pluginName, type);
}
static void loadSelfTranslation()
{
Translator::translateLibrary(QLatin1String("liblxqt"));
}
Q_COREAPP_STARTUP_FUNCTION(loadSelfTranslation)

@ -0,0 +1,72 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://razor-qt.org
*
* Copyright: 2013 LXQt team
* Authors:
* Alexander Sokoloff <sokoloff.a@gmail.com>
Luís Pereira <luis.artur.pereira@gmail.com>
*
* This program or library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef LXQTTRANSLATOR_H
#define LXQTTRANSLATOR_H
#include <QStringList>
#include "lxqtglobals.h"
namespace LxQt
{
/**
The Translator class provides internationalization support for application and librarioes.
**/
class LXQT_API Translator
{
public:
/**
Returns a list of paths that the application will search translations files.
**/
static QStringList translationSearchPaths();
/**
Sets the list of directories to search translations. All existing paths
will be deleted and the path list will consist of the paths given in paths.
**/
static void setTranslationSearchPaths(const QStringList &paths);
/**
Loads translations for application. If applicationName is not specified,
then basename of QCoreApplication::applicationFilePath() is used.
Returns true if the translation is successfully loaded; otherwise returns false.
**/
static bool translateApplication(const QString &applicationName = QString());
/**
Loads translations for application. If applicationName is not specified,
then basename of QCoreApplication::applicationFilePath() is used.
Returns true if the translation is successfully loaded; otherwise returns false.
**/
static bool translateLibrary(const QString &libraryName = QString());
static bool translatePlugin(const QString &pluginName, const QString& type);
};
} // namespace LxQt
#endif // LXQTTRANSLATOR_H

@ -0,0 +1,333 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0">
<context>
<name>AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,360 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="ar">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">ضمُّ إضافاتٍ برمجيَّة</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>ابحث:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">ضمُّ إضافةٍ برمجيَّة</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>إغلاق</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>حوار</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">نعم</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete"></translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">خطأٌ في إدارة الطَّاقة لنظام ريزر</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">فشل الانتقال إلى حالة السُّبات</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>ارتداد اشعارات</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>سبات</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>تعليق</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>إعادة إقلاع</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>إطفاء</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>خروج</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>وضع جلسة نظام ريزر في حالة تعليق</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>هل ترغب حقَّاً بتعليق الحاسب؟&lt;p&gt;تعليق الحاسب في وضعيَّة طاقةٍ أخفّ ولا يتم حفظ حالة النِّظام في حال انقطاع التَّيَّار.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>وضع جلسة نظام ريزر في حالة سبات</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>هل ترغب حقَّاً بوضع الحاسب في حالة سبات؟&lt;p&gt;يتم وضع الحاسب في حالة سباتٍ مع وضعيَّة طاقةٍ أخفّ ويتم حفظ حالة النِّظام في حال انقطاع التَّيَّار.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>إعادة إقلاع جلسة نظام ريزر</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>هل ترغب حقَّاً بإعادة تشغيل الحاسب؟ سيتم إضاعة كافَّة اعمال التي لم يتمَُ حفظها..</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>إطفاء نظام ريزر</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>هل ترغب حقَّاً بإطفاء الحاسب؟ سيتم إضاعة كافَّة اعمال التي لم يتمَُ حفظها..</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>الخروج من جلسة نظام ريزر</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>هل ترغب بالخروج حقَّاً؟ سيتم إضاعة كافَّة اعمال التي لم يتمَُ حفظها..</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>خطأٌ في إدارة الطَّاقة لنظام ريزر</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>فشل الانتقال إلى حالة السُّبات</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>فشل الانتقال إلى حالة تعليق الحاسب</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>إقفال الشَّاشة</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>خطأٌ في تشغيل حافظ الشَّاشة</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>حدث خطأٌ في تشغيل حافظ الشَّاشة! يمكن تشغيل حافظ شاشة سطح المكتب الرُّسوميِّ نظراً لانهياره..!</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>حدث خطأٌ في تشغيل حافظ الشَّاشة! لم يتمُّ تثبيت حافظ شاشة سطح المكتب الرُّسوميِّ بالشَّكل الصَّحيح..!</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>حدث خطأٌ في تشغيل حافظ الشَّاشة! يمكن تشغيل حافظ شاشة سطح المكتب الرُّسوميِّ..!</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>حدث خطأٌ في تشغيل حافظ الشَّاشة! هناك خطأٌ في رموز ضبط تعريف حافظ شاشة سطح المكتب الرُّسوميِّ</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>حدث خطأٌ في تشغيل حافظ الشَّاشة! يرجى التَّأكد من أن حافظ شاشة سطح المكتب الرُّسوميِّ مثبَّتٌ ويعمل..</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>حدث خطأٌ في تشغيل حافظ الشَّاشة! فشلٌ في أمر التَّفعيل! يرجى التَّأكد من أن حافظ شاشة سطح المكتب الرُّسوميِّ مثبَّتٌ ويعمل..</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>حصل خطأٌ عند تشغيل حافظ الضَّاضة. خطأٌ غير معروفٍ - قيمةٌ جوابيَّةٌ غير موثَّقةٍ من حافظ شاشة إكس دي جي=%1.</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">مسح</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">شيء</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>خطأ في مدير الطَّاقة</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>واجهة اتصال كيوت غير صالحة</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>خطأ في مدير الطَّاقة (نداء من خطِّ التَّواصل)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>نبذةٌ عن نظام ريزر</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>تبذةٌ عن</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>معلوماتٌ تقنيَّةٌ</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,421 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="cs">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Přidat přídavné moduly</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Hledat:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Přidat přídavný modul</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Zavřít</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialog</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Verze: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Pokročilé, snadno se používající a rychlé pracovní prostředí založené na technologiích Qt.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Autorské právo: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Domovská stránka: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Licence: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt je přeložen do mnoha jazyků díky práci překladatelských týmů z celého světa.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Ano</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Ne</translation>
</message>
<message>
<source>&lt;b&gt;LxQt Desktop Toolbox - Technical Info&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Nástroje LxQt Desktop - Technické informace&lt;/b&gt;</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Verze</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Debug Build</source>
<translation type="obsolete">Ladicí sestavení</translation>
</message>
<message>
<source>System Configuration</source>
<translation type="obsolete">Nastavení systému</translation>
</message>
<message>
<source>Share Directory</source>
<translation type="obsolete">Sdílený adresář</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Překlady</translation>
</message>
<message>
<source>&lt;b&gt;User Directories&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Uživatelské adresáře&lt;/b&gt;</translation>
</message>
<message>
<source>Xdg Data Home</source>
<translation type="obsolete">Domovská složka pro data Xdg</translation>
</message>
<message>
<source>Xdg Config Home</source>
<translation type="obsolete">Domovská složka pro nastavení Xdg</translation>
</message>
<message>
<source>Xdg Data Dirs</source>
<translation type="obsolete">Adresáře pro data Xdg</translation>
</message>
<message>
<source>Xdg Cache Home</source>
<translation type="obsolete">Domovská složka pro vyrovnávací paměť Xdg</translation>
</message>
<message>
<source>Xdg Runtime Home</source>
<translation type="obsolete">Domovská složka pro čas běhu Xdg</translation>
</message>
<message>
<source>Xdg Autostart Dirs</source>
<translation type="obsolete">Adresáře pro automatické spuštění Xdg</translation>
</message>
<message>
<source>Xdg Autostart Home</source>
<translation type="obsolete">Domovská složka pro automatické spuštění Xdg</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">Chyba ve správě energie</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Hibernace se nezdařila.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Záloha oznamování</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Hibernovat</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Uspat</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Restartovat</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Vypnout</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Odhlásit se</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>Pozastavení sezení LxQtu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Opravdu chcete uspat svůj počítač?&lt;p&gt;Uvede počítač do stavu s nízkým odběrem elektrické energie. Stav systému není při ztrátě energie zachován.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>Zazimování sezení LxQtu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Opravdu chcete zazimovat svůj počítač?&lt;p&gt;Uvede počítač do stavu s nízkým odběrem elektrické energie. Stav systému je při ztrátě energie zachován.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>Spuštění sezení LxQtu znovu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Opravdu chcete spustit svůj počítač znovu?&lt;p&gt;Všechna neuložená práce bude ztracena...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>Vypnutí sezení LxQtu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Opravdu chcete vypnout svůj počítač?&lt;p&gt;Všechna neuložená práce bude ztracena...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>Odhlášení sezení LxQtu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Opravdu se chcete odhlásit?&lt;p&gt;Všechna neuložená práce bude ztracena...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>Chyba ve správě energie</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Hibernace se nezdařila.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Uspání se nezdařilo.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Zamknout obrazovku</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Chyba při zapínání šetřiče obrazovky</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Při spouštění šetřiče obrazovky se vyskytla chyba. xdg-screensavernelze spustit kvůli jeho pádu.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Při spouštění šetřiče obrazovky se vyskytla chyba. xdg-screensaver není nainstalován správně.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Při spouštění šetřiče obrazovky se vyskytla chyba. xdg-screensaver nelze spustit.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Při spouštění šetřiče obrazovky se vyskytla chyba. Chybná skladba v argumentech xdg-screensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Při spouštění šetřiče obrazovky se vyskytla chyba. Ujistěte se, že máte xdg-screensaver nainstalován a že běží.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Při spouštění šetřiče obrazovky se vyskytla chyba. Krok &quot;zapnutí&quot; se nezdařil. Ujistěte se, že máte xdg-screensaver nainstalován a že běží.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Během spouštění spořiče obrazovky se vyskytla chyba. Neznámá chyba - nezdokumentovaná vrácená hodnota od xdg-screensaver=%1.</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Smazat</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Žádný</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Chyba správce energie</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface je neplatné</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Chyba správce energie (volání D-BUS)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>O prostředí LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>O</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Autoři</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Poděkování</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Překlady</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Technické informace</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,421 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="cs_CZ">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Přidat přídavné moduly</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Hledat:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Přidat přídavný modul</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Zavřít</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialog</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Verze: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Pokročilé, snadno se používající a rychlé pracovní prostředí založené na technologiích Qt.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Autorské právo: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Domovská stránka: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Licence: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt je přeložen do mnoha jazyků díky práci překladatelských týmů z celého světa.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Ano</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Ne</translation>
</message>
<message>
<source>&lt;b&gt;LxQt Desktop Toolbox - Technical Info&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Nástroje LxQt Desktop - Technické informace&lt;/b&gt;</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Verze</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Debug Build</source>
<translation type="obsolete">Ladicí sestavení</translation>
</message>
<message>
<source>System Configuration</source>
<translation type="obsolete">Nastavení systému</translation>
</message>
<message>
<source>Share Directory</source>
<translation type="obsolete">Sdílený adresář</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Překlady</translation>
</message>
<message>
<source>&lt;b&gt;User Directories&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Uživatelské adresáře&lt;/b&gt;</translation>
</message>
<message>
<source>Xdg Data Home</source>
<translation type="obsolete">Domovská složka pro data Xdg</translation>
</message>
<message>
<source>Xdg Config Home</source>
<translation type="obsolete">Domovská složka pro nastavení Xdg</translation>
</message>
<message>
<source>Xdg Data Dirs</source>
<translation type="obsolete">Adresáře pro data Xdg</translation>
</message>
<message>
<source>Xdg Cache Home</source>
<translation type="obsolete">Domovská složka pro vyrovnávací paměť Xdg</translation>
</message>
<message>
<source>Xdg Runtime Home</source>
<translation type="obsolete">Domovská složka pro čas běhu Xdg</translation>
</message>
<message>
<source>Xdg Autostart Dirs</source>
<translation type="obsolete">Adresáře pro automatické spuštění Xdg</translation>
</message>
<message>
<source>Xdg Autostart Home</source>
<translation type="obsolete">Domovská složka pro automatické spuštění Xdg</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">Chyba ve správě energie</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Hibernace se nezdařila.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Záloha oznamování</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Hibernovat</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Uspat</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Restartovat</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Vypnout</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Odhlásit se</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>Pozastavení sezení LxQtu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Opravdu chcete uspat svůj počítač?&lt;p&gt;Uvede počítač do stavu s nízkým odběrem elektrické energie. Stav systému není při ztrátě energie zachován.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>Zazimování sezení LxQtu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Opravdu chcete zazimovat svůj počítač?&lt;p&gt;Uvede počítač do stavu s nízkým odběrem elektrické energie. Stav systému je při ztrátě energie zachován.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>Spuštění sezení LxQtu znovu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Opravdu chcete spustit svůj počítač znovu?&lt;p&gt;Všechna neuložená práce bude ztracena...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>Vypnutí sezení LxQtu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Opravdu chcete vypnout svůj počítač?&lt;p&gt;Všechna neuložená práce bude ztracena...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>Odhlášení sezení LxQtu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Opravdu se chcete odhlásit?&lt;p&gt;Všechna neuložená práce bude ztracena...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>Chyba ve správě energie</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Hibernace se nezdařila.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Uspání se nezdařilo.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Zamknout obrazovku</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Chyba při zapínání šetřiče obrazovky</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Při spouštění šetřiče obrazovky se vyskytla chyba. xdg-screensavernelze spustit kvůli jeho pádu.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Při spouštění šetřiče obrazovky se vyskytla chyba. xdg-screensaver není nainstalován správně.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Při spouštění šetřiče obrazovky se vyskytla chyba. xdg-screensaver nelze spustit.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Při spouštění šetřiče obrazovky se vyskytla chyba. Chybná skladba v argumentech xdg-screensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Při spouštění šetřiče obrazovky se vyskytla chyba. Ujistěte se, že máte xdg-screensaver nainstalován a že běží.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Při spouštění šetřiče obrazovky se vyskytla chyba. Krok &quot;zapnutí&quot; se nezdařil. Ujistěte se, že máte xdg-screensaver nainstalován a že běží.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Během spouštění spořiče obrazovky se vyskytla chyba. Neznámá chyba - nezdokumentovaná vrácená hodnota od xdg-screensaver=%1.</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Smazat</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Žádný</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Chyba správce energie</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface je neplatné</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Chyba správce energie (volání D-BUS)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>O prostředí LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>O</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Autoři</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Poděkování</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Překlady</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Technické informace</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,333 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="da">
<context>
<name>AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,421 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="da_DK">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Tilføj plugins</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Søg:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Tilføj plugin</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Afslut</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialog</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Version: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Avanceret, nem at bruge, hurtigt skrivebordsmiljø baseret på Qt teknologier.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Copyright: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Hjemmeside: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Licens: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt er oversat til mange sprog takket være oversættere fra hele verden.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Ja</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Nej</translation>
</message>
<message>
<source>&lt;b&gt;LxQt Desktop Toolbox - Technical Info&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;LxQt Desktop Værktøjskasse - Teknisk Information&lt;/b&gt;</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Version</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Debug Build</source>
<translation type="obsolete">Fejlsøgningsversion</translation>
</message>
<message>
<source>System Configuration</source>
<translation type="obsolete">Systemindstillinger</translation>
</message>
<message>
<source>Share Directory</source>
<translation type="obsolete">Delt Katalog</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Oversættelser</translation>
</message>
<message>
<source>&lt;b&gt;User Directories&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Bruger Biblioteker&lt;/b&gt;</translation>
</message>
<message>
<source>Xdg Data Home</source>
<translation type="obsolete">Xdg Brugerdata Katalog</translation>
</message>
<message>
<source>Xdg Config Home</source>
<translation type="obsolete">Xdg Konfigurationsdata Katalog</translation>
</message>
<message>
<source>Xdg Data Dirs</source>
<translation type="obsolete">Xdg Data Kataloger</translation>
</message>
<message>
<source>Xdg Cache Home</source>
<translation type="obsolete">Xdg Cache Katalog</translation>
</message>
<message>
<source>Xdg Runtime Home</source>
<translation type="obsolete">Xdg udførselskatalog</translation>
</message>
<message>
<source>Xdg Autostart Dirs</source>
<translation type="obsolete">Xdg Autostart Katalog</translation>
</message>
<message>
<source>Xdg Autostart Home</source>
<translation type="obsolete">Xdg Autostart Hjemmekatalog</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">LxQt Strømstyringsfejl</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Dvaletilstand mislykkedes.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Alternativ Påmindelse</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Dvale</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Slumre</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Genstart</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Luk ned</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Log ud</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>LxQt Session Slumre</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Vil du virkelig sætte din computer i slumretilstand?&lt;p&gt;Slumretilstand sætter computeren i energispare tilstand. Systemtilstanden mistes hvis strømmen forsvinder.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>LxQt Session Dvale</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Vil du virkelig sætte din computer i dvaletilstand?&lt;p&gt;Dvaletilstand sætter computeren i energispare tilstand. Systemtilstanden bibeholdes hvis strømmen forsvinder.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>LxQt Session Genstart</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Vil du virkelig genstarte din computer? Alt arbejde der ikke er blevet gemt, vil gå tabt...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>LxQt Session Luk Ned</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Vil du virkelig slukke din computer? Alt arbejde der ikke er blevet gemt, vil gå tabt...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>LxQt Session Log Ud</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Vil du virkelig logge ud? Alt arbejde der ikke er blevet gemt, vil gå tabt...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>LxQt Strømstyringsfejl</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Dvaletilstand mislykkedes.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Slumretilstand mislykkedes.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Lås Skærm</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Fejl ved aktivering af pauseskærm</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Fejl ved start af screensaver. xdg-pauseskærm kan ikke starte på grund af nedbrud.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Fejl ved start af screensaver. xdg-pauseskærm er ikke korrekt installeret.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Fejl ved start af screensaver. xdg-pauseskærm kan ikke starte.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Fejl ved start af screensaver. Syntaksfejl i argumenter til xdg-pauseskærm.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Fejl ved start af screensaver. Sørg for at du har xscreensaver installeret og kørende.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Fejl ved start af screensaver. Handling &apos;aktivere&apos; mislykkedes. Sørg for at du har xscreensaver installeret og kørende.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>En fejl opstod ved start af pauseskærm. Ukendt fejl - udokumenteret returværdi sendt fra xdg-screensaver=%1.</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Rens</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Ingen</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Strømstyrings fejl</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface er ugyldig</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Strømstyrings fejl (D-BUS kald)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation> Om LXQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Omkring</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Forfattere</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Tak</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Oversættelser</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Teknisk Information</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,349 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="de">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Plugins hinzufügen</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Suchen:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation>Element hinzufügen</translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Plugin hinzufügen</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialog</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Version: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Fortgeschrittene, leicht zu bedienende und schnelle Desktopumgebung, basierend auf Qt-Technologien.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>LXQt wäre nicht ohne das &lt;a %1&gt;Razor-qt&lt;/a&gt;-Projekt und seine vielen Mitwirkenden möglich gewesen.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Urheberrecht: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Internetseite: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Lizenz: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation>LXQt wird vom &lt;a %1&gt;LXQt Team und Mitwirkenden&lt;/a&gt; entwickelt.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation>Wenn Sie an der Mitarbeit in unserem Entwicklungsteam interessiert sind, &lt;a %1&gt;treten Sie uns bei&lt;/a&gt;.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation>Besonderen Dank an:</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt wird dank der Arbeit unseres über die ganze Welt verteilten Übersetzungsteams in viele Sprachen übersetzt.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Ja</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Nein</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation>(%1 aktiv)</translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation>Fehler der LXQt-Energieverwaltung</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation>Tiefschlaf fehlgeschlagen.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Ersatzbenachrichtigung</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Tiefschlaf</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Bereitschaft</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Neustart</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Herunterfahren</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Abmelden</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>LXQt Bereitschaft</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Möchten Sie ihren Computer in Bereitschaft versetzen?&lt;p&gt;Dies versetzt ihren Computer in einen Energiesparmodus. Der Systemzustand geht verloren, wenn die Energiezufuhr abbricht.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>LXQT Tiefschlaf</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Möchten Sie ihren Computer in Tiefschlaf versetzen?&lt;p&gt;Dies versetzt ihren Computer in einen Energiesparmodus. Der Systemzustand bleibt erhalten, wenn die Energiezufuhr abbricht.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>LXQt Neustart</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Möchten Sie ihren Computer wirklich neustarten? Alle ungespeicherten Arbeiten gehen verloren...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>LXQt Herunterfahren</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Möchten Sie ihren Computer wirklich herunterfahren? Alle ungespeicherten Arbeiten gehen verloren...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>LXQt Abmelden</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Möchten Sie sich wirklich abmelden? Alle ungespeicherten Arbeiten gehen verloren...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>Fehler der LXQt-Energieverwaltung</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Tiefschlaf fehlgeschlagen.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Bereitschaft fehlgeschlagen.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Bildschirm sperren</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Fehler beim Aktivieren des Bildschirmschoners</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Beim Starten des Bildschirmschoners ist ein Fehler aufgetreten. xdg-screensaver kann wegen seines Absturzes nicht gestartet werden.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Beim Starten des Bildschirmschoners ist ein Fehler aufgetreten. xdg-screensaver ist nicht korrekt installiert.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Beim Starten des Bildschirmschoners ist ein Fehler aufgetreten. xdg-screensaver kann nicht gestartet werden.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Beim Starten des Bildschirmschoners ist ein Fehler aufgetreten. Syntaxfehler in den Parametern für xdg-screensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Beim Starten des Bildschirmschoners ist ein Fehler aufgetreten. Bitte stellen Sie sicher, dass xscreensaver installiert ist und funktioniert.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Beim Starten des Bildschirmschoners ist ein Fehler aufgetreten. Aktion &apos;aktivieren&apos; fehlgeschlagen. Bitte stellen Sie sicher, dass xscreensaver installiert ist und funktioniert.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Beim Starten des Bildschirmschoners ist ein Fehler aufgetreten. Unbekannter Fehler - ein undokumentierter Rückgabewert wurde von xdg-screensaver ausgegeben=%1.</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Fehler der Energieverwaltung</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface ist ungültig</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Fehler der Energieverwaltung (D-BUS-Aufruf)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>Über LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Über</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Programmierer</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Danksagungen</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Übersetzungen</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Technische Hinweise</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation>In Zwischenablage kopieren</translation>
</message>
</context>
</TS>

@ -0,0 +1,421 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="de_DE">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Plugins hinzufügen</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Suchen:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Plugin hinzufügen</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialog</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Version: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Moderne, benutzerfreundliche und schnelle Arbeitsumgebung aufbauend auf Qt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Copyright: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Homepage: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Lizenz: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt ist in vielen Sprachen verfügbar dank der Arbeit von Übersetzung-Teams aus der ganzen Welt.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Ja</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Nein</translation>
</message>
<message>
<source>&lt;b&gt;LxQt Desktop Toolbox - Technical Info&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;LxQt Desktop Toolbox - Technische Info&lt;/b&gt;</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Version</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Debug Build</source>
<translation type="obsolete">Debug Build</translation>
</message>
<message>
<source>System Configuration</source>
<translation type="obsolete">System Konfiguration</translation>
</message>
<message>
<source>Share Directory</source>
<translation type="obsolete">Freigegebenes Verzeichnis</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Übersetzung</translation>
</message>
<message>
<source>&lt;b&gt;User Directories&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Benutzer Verzeichnisse&lt;/b&gt;</translation>
</message>
<message>
<source>Xdg Data Home</source>
<translation type="obsolete">Xdg Daten Pfad</translation>
</message>
<message>
<source>Xdg Config Home</source>
<translation type="obsolete">Xdg Konfigurations Pfad</translation>
</message>
<message>
<source>Xdg Data Dirs</source>
<translation type="obsolete">Xdg Daten Verzeichnisse</translation>
</message>
<message>
<source>Xdg Cache Home</source>
<translation type="obsolete">Xdg Cache Pfad</translation>
</message>
<message>
<source>Xdg Runtime Home</source>
<translation type="obsolete">Xdg Laufzeit Pfad</translation>
</message>
<message>
<source>Xdg Autostart Dirs</source>
<translation type="obsolete">Xdg Autostart Verzeichnisse</translation>
</message>
<message>
<source>Xdg Autostart Home</source>
<translation type="obsolete">Xdg Autostart Pfad</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">LxQt Energieverwalter Fehler</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Ruhestand fehlgeschlagen.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Benachrichtigungs Rückgriff</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Ruhezustand</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Energie sparen</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Neustart</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Herunterfahren</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Abmelden</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>LxQt Sitzung Energie sparen</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Wollen sie wirklich Ihren Computer in den Energiesparmodus schicken?&lt;p&gt;Schickt den Computer in einen Energiesparmodus. Der Zustand des Systems geht verloren, wenn die Energieversorgung ausfällt.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>LxQt Sitzung Ruhestand</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Wollen Sie Ihren Computer wirklich in den Ruhestand setzten?&lt;p&gt;Schickt den Computer in einen Ernergiesparmodus. Der Stand des Systems ist gesichert, falls die Energieversorgung ausfällt.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>LxQt Sitzung Neustart</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Wollten Sie Ihren Computer wirklich neustarten? Alle ungespeicherten Arbeiten gehen verloren ...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>LxQt Sitzung Herunterfahren</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Wollten Sie Ihren Computer wirklich herunterfahren? Alle ungespeicherten Arbeiten gehen verloren ...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>LxQt Sitzung Abmelden</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Wollten Sie sich wirklich abmelden? Alle ungespeicherten Arbeiten gehen verloren ...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>LxQt Energieverwalter Fehler</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Ruhestand fehlgeschlagen.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Energiesparmodus fehlgeschlagen.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Bildschirm sperren</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Bildschirmschoner Aktivierungs Fehler</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Es ist ein Fehler beim Starten des Bildschirmschoners aufgetreten. xdg-screensaver kann wegen einem Crash nicht gestartet werden.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Es ist ein Fehler beim Starten des Bildschirmschoners aufgetreten. xgd-screensaver ist nicht korrekt installiert.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Es ist ein Fehler beim Starten des Bildschirmschoners aufgetreten. xdg-screensaver kann nicht gestartet werden.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Es ist ein Fehler beim Startem des Bildschirmschoners aufgetreten. Syntaxfehler in Argumenten von xdg-screensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Es ist ein Fehler beim Starten des Bildschirmschoners aufgetreten. Stelle sicher, dass xscreensaver installiert ist und ausgeführt wird.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Es ist ein Fehler beim Starten des Bildschirmschoners aufgetreten. Die Aktion &apos;aktivieren&apos; schlug fehl. Stelle sicher, dass xscreensaver installiert ist und ausgeführt wird.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Beim Starten des Bildschirmschoners ist ein Fehler aufgetreten. Unbekannter Fehler - undokumentierter Rückgabewert von xdg-screensaver=%1.</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Säubern</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Kein</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Energie Manager Fehler</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface ist ungültig</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Power Manager-Fehler (D-BUS call)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>Über LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Über</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Authoren</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Danke</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Übersetzung</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Technische Informationen</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,421 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="el_GR">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Προσθήκη επεκτάσεων</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Αναζήτηση:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Προσθήκη επέκτασης</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Κλείσιμο</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Διάλογος</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Έκδοση: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Προηγμένη, εύκολη στη χρήση και γρήγορη επιφάνεια εργασίας με βάση τις τεχνολογίες Qt.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Πνευματικά δικαιώματα: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Αρχική σελίδα: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Άδεια χρήσης: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt έχει μεταφραστεί σε πολλές γλώσσες χάρη στο έργο των μεταφραστικών ομάδων σε όλο τον κόσμο.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Ναι</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Όχι</translation>
</message>
<message>
<source>&lt;b&gt;LxQt Desktop Toolbox - Technical Info&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Επιφάνεια εργασίας LXQt - Τεχνικές πληροφορίες&lt;/b&gt;</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Έκδοση</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Debug Build</source>
<translation type="obsolete">Κατασκευή αποσφαλμάτωσης</translation>
</message>
<message>
<source>System Configuration</source>
<translation type="obsolete">Διαμόρφωση συστήματος</translation>
</message>
<message>
<source>Share Directory</source>
<translation type="obsolete">Κοινόχρηστος κατάλογος</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Μεταφράσεις</translation>
</message>
<message>
<source>&lt;b&gt;User Directories&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Κατάλογοι χρηστών&lt;/b&gt;</translation>
</message>
<message>
<source>Xdg Data Home</source>
<translation type="obsolete">Αρχικός κατάλογος δεδομένων xdg</translation>
</message>
<message>
<source>Xdg Config Home</source>
<translation type="obsolete">Αρχικός κατάλογος διαμόρφωσης xdg</translation>
</message>
<message>
<source>Xdg Data Dirs</source>
<translation type="obsolete">Κατάλογοι δεδομένων xdg</translation>
</message>
<message>
<source>Xdg Cache Home</source>
<translation type="obsolete">Αρχικός κατάλογος λανθάνουσας μνήμης xdg</translation>
</message>
<message>
<source>Xdg Runtime Home</source>
<translation type="obsolete">Αρχικός κατάλογος εκτέλεσης xdg</translation>
</message>
<message>
<source>Xdg Autostart Dirs</source>
<translation type="obsolete">Κατάλογοι αυτόματης εκκίνησης xdg</translation>
</message>
<message>
<source>Xdg Autostart Home</source>
<translation type="obsolete">Αρχικός κατάλογος αυτόματης εκκίνησης xdg</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">Σφάλμα διαχείρισης ενέργειας LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Αποτυχία αδρανοποίησης.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Εφεδρικές ειδοποιήσεις</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Αδρανοποίηση</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Αναστολή</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Επανεκκίνηση</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Τερματισμός</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Αποσύνδεση</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>Αναστολή συνεδρίας LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Θέλετε πραγματικά να γίνει αναστολή του υπολογιστή;&lt;p&gt;Θέτει τον υπολογιστή σε κατάσταση χαμηλής κατανάλωσης. Η κατάσταση του συστήματος δε διατηρείται εάν διακοπεί η παροχή ρεύματος.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>Κατάσταση αδρανοποίησης LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Θέλετε πραγματικά να γίνει αδρανοποίηση του υπολογιστή;&lt;p&gt;Θέτει τον υπολογιστή σε κατάσταση χαμηλής κατανάλωσης. Η κατάσταση του συστήματος διατηρείται εάν διακοπεί η παροχή ρεύματος.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>Επανεκκίνηση συνεδρίας LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Θέλετε πραγματικά να επανεκκινήσετε τον υπολογιστή; Όλες οι μη αποθηκευμένες εργασίες σας θα χαθούν...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>Τερματισμός συνεδρίας LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Θέλετε πραγματικά να τερματίσετε τον υπολογιστή; Όλες οι μη αποθηκευμένες εργασίες σας θα χαθούν...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>Αποσύνδεση συνεδρίας LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Θέλετε πραγματικά να αποσυνδεθείτε; Όλες οι μη αποθηκευμένες εργασίες σας θα χαθούν...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>Σφάλμα διαχείρισης ενέργειας LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Αποτυχία αδρανοποίησης.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Αποτυχία αναστολής.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Κλείδωμα οθόνης</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Σφάλμα ενεργοποίησης προστασίας οθόνης</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Προκλήθηκε ένα σφάλμα κατά την έναρξη της προστασίας οθόνης. Αδυναμία εκκίνησης προστασίας οθόνης xdg λόγω κατάρευσης.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Προκλήθηκε ένα σφάλμα κατά την έναρξη της προστασίας οθόνης. Η προστασία οθόνης xdg δεν είναι εγκατεστημένη σωστά.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Προκλήθηκε ένα σφάλμα κατά την έναρξη της προστασίας οθόνης. Αδυναμία έναρξης προστασίας οθόνης xdg.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Προκλήθηκε ένα σφάλμα κατά την έναρξη της προστασίας οθόνης. Σφάλμα σύνταξης παραμέτρων προστασίας οθόνης xdg.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Προκλήθηκε ένα σφάλμα κατά την έναρξη της προστασίας οθόνης. Διασφαλίστε ότι η προστασία οθόνης είναι εγκατεστημένη και ότι εκτελείται.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Προκλήθηκε ένα σφάλμα κατά την έναρξη της προστασία οθόνης. Αποτυχία ενέργειας &quot;ενεργοποίηση&quot;. Διασφαλίστε ότι η προστασία οθόνης είναι εγκατεστημένη και ότι εκτελείται.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Προκλήθηκε ένα σφάλμα κατά την έναρξη της προστασίας οθόνης. Άγνωστο σφάλμα - μη τεκμηριωμένη τιμή επιστροφής από την προστασία οθόνης=%1.</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Εκκαθάριση</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Κανένα</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Σφάλμα διαχείρισης ενέργειας</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>Το QDBusInterface δεν είναι έγκυρο</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Σφάλμα διαχείρισης ενέργειας (κλήση D-BUS)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>Σχετικά με το LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Σχετικά</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Δημιουργοί</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Ευχαριστίες</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Μεταφράσεις</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Τεχνικές πληροφορίες</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,360 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="eo">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Aldoni kromprogramojn</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Serĉi:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Aldoni kromprogramon</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Fermi</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialogo</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Jes</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Ne</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Pasivumigo fiaskis.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Pasivumigi</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Prokrasti</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Restartigi</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Elŝalti</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Elsaluti</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Pasivumigo fiaskis.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Prokrasto fiaskis.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Ŝlosi ekranon</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Vakigi</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Nenio</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface nevalidas</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation> Pri LxQto</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Pri</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Teknikaj informoj</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,421 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="es">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Añadir extensiones</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Buscar:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Añadir extensión</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Cerrar</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialogo</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Versión %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Avanzado, fácil de usar y rápido entorno de escritorio basado en tecnologías Qt.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Copyright: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Página principal: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Licencia: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt es traducido a muchos idiomas gracias a la labor de los equipos de traducción en todo el mundo.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Si</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">No</translation>
</message>
<message>
<source>&lt;b&gt;LxQt Desktop Toolbox - Technical Info&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Caja de herramientas del Escritorio LXQt - Información técnica&lt;/b&gt;</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Versión</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Debug Build</source>
<translation type="obsolete">Construcción con símbolos de depuración</translation>
</message>
<message>
<source>System Configuration</source>
<translation type="obsolete">Configuración del Sistema</translation>
</message>
<message>
<source>Share Directory</source>
<translation type="obsolete">Directorio compartido</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Traducciones</translation>
</message>
<message>
<source>&lt;b&gt;User Directories&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Directorios de usuario&lt;/b&gt;</translation>
</message>
<message>
<source>Xdg Data Home</source>
<translation type="obsolete">Xdg Datos de inicio de usuario</translation>
</message>
<message>
<source>Xdg Config Home</source>
<translation type="obsolete">Xdg Configuración de inicio del usuario</translation>
</message>
<message>
<source>Xdg Data Dirs</source>
<translation type="obsolete">Xdg Directorios de datos</translation>
</message>
<message>
<source>Xdg Cache Home</source>
<translation type="obsolete">Xdg Cache de inicio de usuario</translation>
</message>
<message>
<source>Xdg Runtime Home</source>
<translation type="obsolete">Xdg Inicio de ejecución de usuario</translation>
</message>
<message>
<source>Xdg Autostart Dirs</source>
<translation type="obsolete">Xdg Directorio de inicio automático</translation>
</message>
<message>
<source>Xdg Autostart Home</source>
<translation type="obsolete">Xdg Directorio de usuario de inicio automático</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">Error del gestor de energía de LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Hibernación fallida.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Notificaciones de retorno</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Hibernar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Suspender</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Reiniciar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Apagar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Cerrar sesión</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>Suspender sesión LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>¿Realmente desdea suspender su PC?&lt;p&gt;Suspende la PC a un estado de bajo consumo. El estado del sistema no se preserva si se agota la energía.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>Hibernar la sesión LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>¿Realmente desea hibernar su PC?&lt;p&gt;Hiberna la PC a un estado de bajo consumo. El estado del sistema se preserva si se agota la energía.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>Reiniciar la sesión LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>¿Realmente desea reiniciar su PC? Todo el trabajo sin guardar se perderá...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>Apagar la sesión LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>¿Realmente desea apagar su PC? Todo el trabajo sin guardar se perderá...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>Cerrar la sesión LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>¿Realmente desea cerrar la sesión? Todo el trabajo sin guardar se perderá...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>Error del gestor de energía de LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Hibernación fallida.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Suspensión fallida.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Bloquear pantalla</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Error de activación del protector de pantalla</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Ocurrió un error al iniciar el protector de pantalla. xdg-screensaver no puede iniciar debido a un error.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Ocurrió un error al iniciar el protector de pantalla. xdg-screensaver no está correctamente instalado.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Ocurrió un error al iniciar el protector de pantalla. xdg-screensaver no puede iniciar.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Ocurrió un error al iniciar el protector de pantalla. Error de sintaxis en los argumentos de xdg-screensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Ocurrió un error al iniciar el protector de pantalla. Asegúrese de tener xdg-screensaver instalado y ejecutándose.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Ocurrió un error al iniciar el protector de pantalla. La acción &apos;activate&apos; falló. Asegúrese de tener xdg-screensaver instalado y ejecutándose.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Ocurrio un error al inicio el protector de pantalla. Error desconocido - valor de retorno de xdg-screensaver no documentado=%1</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Limpiar</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Ninguno</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Error del administrador de energía</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface es inválido</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Error en el adminstrador de energía (llamado D-BUS)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>Acerca de LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Acerca</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Autores</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Gracias</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Traducciones</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Información Técnica</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,421 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="es_VE">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Agregar plugins</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Buscar:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Agregar plugin</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Cerrar</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialogo</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Version: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Avanzado, facil de usar, rapido entorno de escritorio basado en tecnologia QT.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Copyright: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>pagina web: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Licencia: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt es traducido en muchos lenguajes gracias al trabajo de traductores en todo el mundo.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Si</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">No</translation>
</message>
<message>
<source>&lt;b&gt;LxQt Desktop Toolbox - Technical Info&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Utilidad de Escritorio LXQt - Informacion&lt;/b&gt;</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Version</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Debug Build</source>
<translation type="obsolete">Debug Build</translation>
</message>
<message>
<source>System Configuration</source>
<translation type="obsolete">Configuracion del sistema</translation>
</message>
<message>
<source>Share Directory</source>
<translation type="obsolete">Directorio de Data</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Traducciones</translation>
</message>
<message>
<source>&lt;b&gt;User Directories&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Directorio de usuario&lt;/b&gt;</translation>
</message>
<message>
<source>Xdg Data Home</source>
<translation type="obsolete">Xdg Data Home</translation>
</message>
<message>
<source>Xdg Config Home</source>
<translation type="obsolete">Xdg Config Home</translation>
</message>
<message>
<source>Xdg Data Dirs</source>
<translation type="obsolete">Xdg Data Dirs</translation>
</message>
<message>
<source>Xdg Cache Home</source>
<translation type="obsolete">Xdg Cache Home</translation>
</message>
<message>
<source>Xdg Runtime Home</source>
<translation type="obsolete">Xdg Runtime Home</translation>
</message>
<message>
<source>Xdg Autostart Dirs</source>
<translation type="obsolete">Xdg Autostart Dirs</translation>
</message>
<message>
<source>Xdg Autostart Home</source>
<translation type="obsolete">Xdg Autostart Home</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">Error en Gestion de energia de LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Hibernacion ha fallado.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Delegacion de notificaciones</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Hibernar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Suspender</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Reiniciar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Apagar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Salirse</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>Suspension del sistema por LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Quiere usted realmente suspender su computador?&lt;p&gt;Suspendera el computador en un estado de baja energia. El estado del sistema operativo no se preservara ante la perdida o caida de energia.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>Hibernacion del sistema por LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Quiere usted realmente hibernar su computador?&lt;p&gt;Hibernara el computador en un estado de baja energia y lo guardara en el disco. El estado del sistema si se preservara ante la perdida o caida de energia.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>Reinicio del sistema por LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Quiere usted realmente reiniciar su computador? Todo el trabajo realizado se perdera si no lo ha guardado, dado que se cerrara...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>Apagado del sistema por LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Quiere usted realmente apagar su computador?&lt;p&gt; Todo el trabajo realizado se perdera si no lo ha guardado, dado que se apagara...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>Cierre de la sesion por LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Quiere realmente cerar su sesion? Todo el trabajo realizado se perdera si no lo ha guardado, dado que se cerrara...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>Error en Gestion de energia de LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Hibernacion ha fallado.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Suspensión ha fallado.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Bloquear Pantalla</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Activacion de salvapantallas erronea</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Un error ha ocurrido al iniciar el salvapantallas. xdg-screensaver no puede iniciarlo debido a un fallo grave.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Un error ha ocurridoal iniciar el salvapantallas. xdg-screensaver no esta instalado correctamente.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Un error ha ocurridoal iniciar el salvapantallas. xdg-screensaver no puede iniciarse.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Un error ha ocurridoal iniciar el salvapantallas. Error en argumentos dados a xdg-screensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Un error ha ocurridoal iniciar el salvapantallas. Asegurate tengas el xscreensaver instalado y ejecutandose.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Un error ha ocurridoal iniciar el salvapantallas. Accion &apos;activate&apos; fallida. Asegurate tengas xscreensaver instalado y corriendo.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Un error ocurrio iniciando el salvapantallas. Desconocido - valor retornado indocumentado desde xdg-screensaver=%1.</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Limpiar</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Nada</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Error del manejador de energia</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>La interfaz Dbus Qt es invalida</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Error del manejador de energia (llamada Dbus)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>Acerca de LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Acerca</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Autores</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Agradecimientos</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Traducciones</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Informacion</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,421 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="eu">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Gehitu pluginak</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Bilatu:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Gehitu plugina</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Itxi</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Elkarrizketa-koadroa</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Bertsioa: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Qt teknologietan oinarritutako mahaigain-ingurune aurreratu, erabilerraz eta azkarra.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Copyright-a: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Webgunea: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Lizentzia: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt hainbat hizkuntzetara itzulita dago mundu osoko itzulpen-taldeen lanari esker.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Bai</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Ez</translation>
</message>
<message>
<source>&lt;b&gt;LxQt Desktop Toolbox - Technical Info&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;LxQt mahaigainaren tresna-jokoa - Informazio teknikoa&lt;/b&gt;</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Bertsioa</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Debug Build</source>
<translation type="obsolete">Arazteko eraikitzea</translation>
</message>
<message>
<source>System Configuration</source>
<translation type="obsolete">Sistemaren konfigurazioa</translation>
</message>
<message>
<source>Share Directory</source>
<translation type="obsolete">Partekatu direktorioa</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Itzulpenak</translation>
</message>
<message>
<source>&lt;b&gt;User Directories&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Erabiltzailearen direktorioak&lt;/b&gt;</translation>
</message>
<message>
<source>Xdg Data Home</source>
<translation type="obsolete">Xdg datuen etxea</translation>
</message>
<message>
<source>Xdg Config Home</source>
<translation type="obsolete">Xdg konfigurazioen etxea</translation>
</message>
<message>
<source>Xdg Data Dirs</source>
<translation type="obsolete">Xdg datuen direktorioak</translation>
</message>
<message>
<source>Xdg Cache Home</source>
<translation type="obsolete">Xdg cache-aren etxea</translation>
</message>
<message>
<source>Xdg Runtime Home</source>
<translation type="obsolete">Xdg exekuzio-denborako etxea</translation>
</message>
<message>
<source>Xdg Autostart Dirs</source>
<translation type="obsolete">Xdg autoabioaren direktorioak</translation>
</message>
<message>
<source>Xdg Autostart Home</source>
<translation type="obsolete">Xdg autoabioaren etxea</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">LxQt energia-kudeatzailearen errorea</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Hibernatzeak huts egin du.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Ordezko jakinarazpenak</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Hibernatu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Eseki</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Berrabiarazi</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Itzali</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Amaitu saioa</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>LxQt saioa eseki</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Ziur zaude ordenagailua eseki nahi duzula?&lt;p&gt;Energia baxuko egoera batetara esekitzen du ordenagailua. Sistemaren egoera ez da mantentzen korrontea eteten bada.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>LxQt saioa hibernatu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Ziur zaude ordenagailua hibernatu nahi duzula?&lt;p&gt;Energia baxuko egoera batetara hibernatzen du ordenagailua. Sistemaren egoera mantentzen da korrontea eteten bada.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>LxQt saioa berrabiarazi</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Ziur zaude ordenagailua berrabiarazi nahi duzula? Gorde gabeko lan guztiak galduko dira...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>LxQt saioa itzali</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Ziur zaude ordenagailua itzali nahi duzula? Gorde gabeko lan guztiak galduko dira...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>LxQt saioa amaitu</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Ziur zaude saioa amaitu nahi duzula? Gorde gabeko lan guztiak galduko dira...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>LxQt energia-kudeatzailearen errorea</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Hibernatzeak huts egin du.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Esekitzeak huts egin du.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Blokeatu pantaila</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Pantaila-babeslearen aktibatze-errorea</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Errore bat gertatu da pantaila-babeslea abiaraztean. Ezin da xdg-screensaver abiarazi kraskatzea dela eta.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Errore bat gertatu da pantaila-babeslea abiaraztean. xdg-screensaver ez dago behar bezala instalatuta.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Errore bat gertatu da pantaila-babeslea abiaraztean. Ezin da xdg-screensaver abiarazi. </translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Errore bat gertatu da pantaila-babeslea abiaraztean. Sintaxi-errore bat dago xdg-screensaver-en argumentuetan.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Errore bat gertatu da pantaila-babeslea abiaraztean. Ziurtatu xdg-screensaver instalatuta eta martxan dagoela. </translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Errore bat gertatu da pantaila-babeslea abiaraztean. &apos;Aktibatu&apos; ekintzak huts egin du. Ziurtatu xdg-screensaver instalatuta eta martxan dagoela. </translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Errore bat gertatu da pantaila-babeslea abiaraztean. Errore ezezaguna - dokumentatu gabeko balioa itzuli du xdg-screensaver-ek: %1</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Garbitu</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Bat ere ez</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Energia-kudeatzailearen errorea</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface baliogabea da</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Energia-kudeatzailearen errorea (D-BUS deia)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>LxQt-i buruz</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Honi buruz</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Egileak</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Eskerrak</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Itzulpenak</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Informazio teknikoa</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,369 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="fi">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Lisää liitännäisiä</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Etsi:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Lisää liitännäinen</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Sulje</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Ikkuna</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Versio: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Tekijänoikeus: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Verkkosivusto: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Lisenssi: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Kyllä</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Ei</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Versio</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Käännökset</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">LxQtin virranhallintavirhe</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Lepotilaan siirtyminen epäonnistui.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Lepotila</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Valmiustila</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Käynnistä uudelleen</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Sammuta</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Kirjaudu ulos</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Haluatko varmasti käynnistää tietokoneen uudelleen? Kaikki tallentamaton tieto menetetään...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>LxQt-istunnon sammutus</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Haluatko varmasti sammuttaa tietokoneen? Kaikki tallentamaton tieto menetetään...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>LxQt-istunnon uloskirjaus</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Haluatko varmasti kirjautua ulos? Kaikki tallentamaton tieto menetetään...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>LxQtin virranhallintavirhe</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Lepotilaan siirtyminen epäonnistui.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Valmiustilaan siirtyminen epäonnistui.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Lukitse näyttö</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Näytönsäästäjän käynnistysvirhe</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Näytönsäästäjää käynnistäessä ilmeni virhe. Näytönsäästäjää xdg-screensaver ei voi käynnistää, koska se kaatui.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Näytönsäästäjää käynnistäessä ilmeni virhe. Näytönsäästäjän xdg-screensaver asennus ei ole kunnossa.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Näytönsäästäjää käynnistäessä ilmeni virhe. Näytönsäästäjää xdg-screensaver ei voi käynnistää.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Näytönsäästäjää käynnistäessä ilmeni virhe. Varmista, että xscreensaver on asennettu ja että se on toiminnassa.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Näytönsäästäjää käynnistäessä ilmeni virhe. Toiminto &apos;activate&apos; epäonnistui. Varmista, että xscreensaver on asennettu ja että se on toiminnassa.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Tyhjennä</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Virranhallinnan virhe</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface on virheellinen</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Virranhallinan virhe (D-Bus-kutsu)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>Tietoja LxQtista</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Tietoja</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Tekijät</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Kiitokset</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Käännökset</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,360 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="fr_FR">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Ajouter des extensions</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Chercher :</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Ajouter l&apos;extension</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Fermer</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialogue</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Oui</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Non</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">Erreur du gestionnaire d&apos;énergie de LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Échec de la mise en hibernation.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Hiberner</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Suspendre</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Redémarrer</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Éteindre</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Se déconnecter</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>Suspendre la session LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Voulez-vous vraiment suspendre votre ordinateur?&lt;p&gt;Votre ordinateur consommera un peu d&apos;énergie. L&apos;état du système ne sera pas préservé si l&apos;énergie est perdue.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>Mettre la session LxQt en hibernation</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Voulez-vous vraiment mettre votre ordinateur en hibernation?&lt;p&gt;Votre ordinateur consommera un peu d&apos;énergie. L&apos;état du système sera préservé si l&apos;énergie est perdue.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>Redémarrer la session LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Voulez-vous vraiment redémarrer votre ordinateur? Tout travail non souvegardé sera perdu...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>Éteindre la session LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Voulez-vous vraiment éteindre votre ordinateur? Tout travail non souvegardé sera perdu...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>Se déconnecter de la session LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Voulez-vous vraiment vous déconnecter? Tout travail non souvegardé sera perdu...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>Erreur du gestionnaire d&apos;énergie de LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Échec de la mise en hibernation.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Échec de la suspension.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Vérouiller l&apos;écran</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Erreur lors de la mise en veille</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Une erreur est survenue lors du démarrage de l&apos;écran de veille. xdg-screensaver n&apos;a pas pu démarrer.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Une erreur est survenue lors du démarrage de l&apos;écran de veille. xdg-screensaver n&apos;est pas installé correctement.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Une erreur est survenue lors du démarrage de l&apos;écran de veille. xdg-screensaver n&apos;a pas pu démarrer.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Une erreur est survenue lors du démarrage de l&apos;écran de veille. Les arguments de xdg-screensaver contiennent des erreurs de syntaxe.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Une erreur est survenue lors du démarrage de l&apos;écran de veille. Assurez-vous que screensaver est installé et actif.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Une erreur est survenue lors du démarrage de l&apos;écran de veille. L&apos;action &apos;activate&apos; a échoué. Assurez-vous que screensaver est installé et actif.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Une erreur s&apos;est produite au lancement de l&apos;économiseur d&apos;écran. Erreur inconnue - valeur retournée par xdg-screensaver=%1 non documentée.</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Vider</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Aucun(e)</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Erreur du gestionnaire d&apos;énergie</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface invalide</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Erreur du gestionnaire d&apos;énergie (appel D-BUS)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>À propos de LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>À propos</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Informations techniques</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,333 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="hu">
<context>
<name>AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,333 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="ia">
<context>
<name>AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,333 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="id_ID">
<context>
<name>AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Hibernasi</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Suspend</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Reboot</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Shutdown</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Keluar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,421 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="it_IT">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Aggiungi plugin</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Cerca:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Aggiungi plugin</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Chiudi</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Finestra di dialogo</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Versione: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Un ambiente desktop veloce, facile da usare e avanzato basato sulle tecnologie Qt.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Copyright: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Sito: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Licenza: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt è tradotto in molte lingue grazie al lavoro dei gruppi di traduzione in giro per il mondo.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Sì</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">No</translation>
</message>
<message>
<source>&lt;b&gt;LxQt Desktop Toolbox - Technical Info&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Strumenti desktop di LXQt - informazioni tecniche&lt;/b&gt;</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Versione</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Debug Build</source>
<translation type="obsolete">Compilazione di debug</translation>
</message>
<message>
<source>System Configuration</source>
<translation type="obsolete">Configurazione del sistema</translation>
</message>
<message>
<source>Share Directory</source>
<translation type="obsolete">Cartella condivisa</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Traduzioni</translation>
</message>
<message>
<source>&lt;b&gt;User Directories&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Cartelle dell&apos;utente&lt;/b&gt;</translation>
</message>
<message>
<source>Xdg Data Home</source>
<translation type="obsolete">Xdg Data Home</translation>
</message>
<message>
<source>Xdg Config Home</source>
<translation type="obsolete">Xdg Config Home</translation>
</message>
<message>
<source>Xdg Data Dirs</source>
<translation type="obsolete">Xdg Data Dirs</translation>
</message>
<message>
<source>Xdg Cache Home</source>
<translation type="obsolete">Xdg Cache Home</translation>
</message>
<message>
<source>Xdg Runtime Home</source>
<translation type="obsolete">Xdg Runtime Home</translation>
</message>
<message>
<source>Xdg Autostart Dirs</source>
<translation type="obsolete">Xdg Autostart Dirs</translation>
</message>
<message>
<source>Xdg Autostart Home</source>
<translation type="obsolete">Xdg Autostart Home</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">Errore del gestore energetico di LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">L&apos;ibernazione non è riuscita.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Notifiche di riserva</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Ibernazione</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Sospensione</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Riavvia</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Spegni</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Esci</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>Sospendi la sessione di LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Vuoi davvero sospendere il computer?&lt;p&gt;Sospendi il computer in uno stato a minore consumo energetico. Lo stato del sistema non viene preservato se la batteria si esaurisce o il pc non è collegato all&apos;alimentazione.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>Iberna la sessione di LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Vuoi davvero ibernare il computer?&lt;p&gt;Iberna il computer in uno stato a minore consumo energetico. Lo stato del sistema non viene preservato se la batteria si esaurisce o il pc non è collegato all&apos;alimentazione.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>Riavvia la sessione di LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Vuoi davvero riavviare il computer? Tutto il lavoro non salvato verrà perso...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>Spegni la sessione di LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Vuoi davvero spegnere il computer? Tutto il lavoro non salvato verrà perso...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>Esci dalla sessione di LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Vuoi davvero chiudere la sessione? Tutto il lavoro non salvato verrà perso...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>Errore del gestore energetico di LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>L&apos;ibernazione non è riuscita.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>La sospensione non è riuscita.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Blocca schermo</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Errore nell&apos;avvio del salvaschermo</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>È avvenuto un errore durante l&apos;avvio del salvaschermo. xdg-screensaver non può essere avviato a causa di un problema dell&apos;applicazione stessa.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>È avvenuto un errore durante l&apos;avvio del salvaschermo. xda-screensaver non è installato correttamente.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>È avvenuto un errore durante l&apos;avvio del salvaschermo. xda-screensaver non può essere avviato.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>È avvenuto un errore durante l&apos;avvio del salvaschermo. Errore di sintassi in xdg-screensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>È avvenuto un errore durante l&apos;avvio del salvaschermo. Assicurati di avere xscreensaver installato e funzionante.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>È avvenuto un errore durante l&apos;avvio del salvaschermo. L&apos;attivazione non è riuscita, assicurati di avere xscreensaver installato e funzionante.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Si è verificato un errore avviando il salvaschermo. Errore sconosciuto: valore di ritorno non documentato da xdg-screensaver=%1.</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Pulisci</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Nessuna</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Errore del gestore dell&apos;energia</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface non è valida</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Errore del gestore dell&apos;energia (chiamata D-BUS)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>Informazioni su LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Informazioni</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Autori</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Ringraziamenti</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Traduzioni</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Informazioni tecniche</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,334 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="ja">
<context>
<name>AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation></translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Qt 使</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>LxQt&lt;a %1&gt;Razor-qt&lt;/a&gt;</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Copyright: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation>LXQt&lt;a %1&gt;LXQt&lt;/a&gt;</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation>&lt;a %1&gt;&lt;/a&gt;</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation>:</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation>(%1 )</translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation>LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation></translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation></translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>&lt;P&gt;</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>&lt;P&gt;
</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation></translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>xdg-</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>xdg-</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>xdg-</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>xdg-</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>xscreensaver</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>&apos;Activate&apos;xscreensaver</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation> - xdg-screensaver=%1</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDbusInterface</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>(D-BUS)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>About</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation></translation>
</message>
</context>
</TS>

@ -0,0 +1,333 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="ko">
<context>
<name>AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,360 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="lt">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Pridėti priedų</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Ieškoti:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Pridėti priedą</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Uždaryti</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialogas</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Taip</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Ne</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">LxQt Energijos Nustatymų Klaida</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Nepavyko užmigdymas į fizinę atmintį</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Pranešimų surogatas</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Užmigdyti į atminį</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Užmigdyti</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Perkrauti</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Išjungti</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Atsijungti</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>LxQt sesijos užmigdymas</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Ar tikrai norite užmigdyti kompiuterį? &lt;p&gt;Užmigdo kompiuterį į mažo energijos naudojimo būklę. Sistemos būklė nėra išsaugoma jei nutrūksta energija.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>LxQt sesijos sustabdymas į atmintį.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Ar tikrai norite sustabdyti kompiuterį į atmintį?&lt;p&gt; Sustabdymas į atmintį sustabdo kompiuterį į mažo energijos kiekio sunaudojimo būklę ir jei energija išjungiama sistemos būklė lieka išsaugota</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>LxQt sesijos perkrovimas</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Ar tikrai norite perkrauti kompiuterį? Visi neišsaugoti pakeitimai bus prarasti</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>LxQt sesijos išjungimas</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Ar tikrai norite išjungti kompiuterį? Visi neišsaugoti pakeitimai bus prarasti</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>LxQt sesijos atjungimas</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Ar tikrai norite atsijungti? Visi neišsaugoti pakeitimai bus prarasti</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>LxQt Energijos Nustatymų Klaida</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Nepavyko užmigdymas į fizinę atmintį</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Nepavyko užmigdymas</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Užrakinti ekraną</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Ekrano užsklandos aktyvavimo klaida</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Klaida paleidžiant ekrano užsklandą. xdg-screensaver negali pasileisti, nes nulūžo.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Klaida paleidžiant ekrano užsklandą. xdg-screensaver nėra tinkamai įdiegtas.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Klaida paleidžiant ekrano užsklandą. xdg-screensaver negali būti paleistas.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Klaida paleidžiant ekrano užsklandą. Sintaksės klaida xdg-screensaver argumentuose.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Klaida paleidžiant ekrano užsklandą. Įsitikinkite, ar įdiegtas ir paleistas xscreensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Klaida paleidžiant ekrano užsklandą. Nevyko atlikti veiksmo activate. Įsitikinkite, ar įdiegtas ir paleistas xscreensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Išvalyti</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Nieko</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Energijos valdymo klaida</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface yra netinkamas</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Energijos valdymo klaida (D-BUS call)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>Apie LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Apie</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Techninė informacija</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,360 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="nl">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Plugins toevoegen</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Zoeken:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Plugin toevoegen</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Sluiten</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialoog</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Ja</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Nee</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">LxQt Energiebeheer fout</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">SCHIJF-slaapstand mislukt.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Notificaties terugval</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Slaapstand</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Slapen</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Herstarten</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Afsluiten</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Afmelden</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>LxQt Sessie Slapen</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Wilt u uw Sessie in RAM slaapstand brengen?&lt;p&gt;Slaat uw sessie op in het RAM geheugen. LET OP! Gegevens gaan verloren tijdens een stroom uitval.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>LxQt Sessie Slaapstand</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Wilt u uw Sessie in SCHIJF slaapstand brengen?&lt;p&gt;Slaat uw sessie op in een bestand op uw Schijf. Gegevens gaan NIET verloren tijdens een stroom uitval.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>LxQt Sessie Herstarten</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Wilt u uw computer herstarten? LET OP! Niet opgeslagen gegevens gaan verloren</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>LxQt Sessie Afsluiten</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Wilt u uw computer Afsluiten? LET OP! Niet opgeslagen gegevens gaan verloren</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>LxQt Sessie Afmelden</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Wilt u uw sessie beeindigen? LET OP! Niet opgeslagen gegevens gaan verloren</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>LxQt Energiebeheer fout</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>SCHIJF-slaapstand mislukt.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>RAM-slaapstand mislukt.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Scherm Vergrendelen</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Schermbeveiliging Activering fout</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Fout tijdens het starten van de schermbeveiliging. xdg-schermbeveiliging kan niet starten, wegens een crash.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Fout tijdens het starten van de schermbeveiliging. xdg-schermbeveiliging is niet correct geinstalleerd..</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Fout tijdens het starten van de schermbeveiliging. xdg-schermbeveiliging kan niet starten.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Fout tijdens het starten van de schermbeveiliging. Regelfout in xdg-schermbeveiliging argumenten.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Fout tijdens het starten van de schermbeveiliging. Controleer of xdg-schermbeveiliging is geinstalleerd en gestart.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Fout tijdens het starten van de schermbeveiliging. Actie &apos;activeren&apos; mislukt. Controleer of xdg-schermbeveiliging is geinstalleerd en gestart.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Wissen</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Geen</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Energiebeheer Fout</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface is ongeldig</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Energiebeheer Error (D-BUS oproep)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>Over LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Over</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Technische Informatie </translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,421 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="pl_PL">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Dodaj wtyczki</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Szukaj:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Dodaj wtyczkę</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Zamknij</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Okno dialogowe</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Wersja: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Zaawansowany, łatwy w obsłudze i szybki pulpit bazujący na Qt.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Prawa autorskie: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Strona: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Licencja: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt jest dostępny w wielu językach dzięki wspanialej pracy ekip tłumaczy z całego świata.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Tak</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Nie</translation>
</message>
<message>
<source>&lt;b&gt;LxQt Desktop Toolbox - Technical Info&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Skrzynka narzędziowa pulpitu LxQt - Informacje techniczne&lt;/b&gt;</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Wersja</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Debug Build</source>
<translation type="obsolete">Wersja debugowa</translation>
</message>
<message>
<source>System Configuration</source>
<translation type="obsolete">Konfiguracja systemu</translation>
</message>
<message>
<source>Share Directory</source>
<translation type="obsolete">Udostępniany katalog</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Tłumaczenia</translation>
</message>
<message>
<source>&lt;b&gt;User Directories&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Katalogi użytkownika&lt;/b&gt;</translation>
</message>
<message>
<source>Xdg Data Home</source>
<translation type="obsolete">Ścieżka dostępu plików Xdg</translation>
</message>
<message>
<source>Xdg Config Home</source>
<translation type="obsolete">Ścieżka dostępu konfiguracji Xdg</translation>
</message>
<message>
<source>Xdg Data Dirs</source>
<translation type="obsolete">Katalogi plików Xdg</translation>
</message>
<message>
<source>Xdg Cache Home</source>
<translation type="obsolete">Ścieżka dostępu pamięci podręcznej Xdg</translation>
</message>
<message>
<source>Xdg Runtime Home</source>
<translation type="obsolete">Ścieżka dostępu środowiska uruchomieniowego Xdg</translation>
</message>
<message>
<source>Xdg Autostart Dirs</source>
<translation type="obsolete">Katalogi autostartu Xdg</translation>
</message>
<message>
<source>Xdg Autostart Home</source>
<translation type="obsolete">Ścieżka dostępu autostart Xdg</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">Błąd zarządzania energią</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Hibernacja nie powiodła się.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Hibernuj</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Uśpij</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Uruchom ponownie</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Wyłącz</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Wyloguj</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>Uśpij sesję</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Czy jesteś pewien, że chcesz uśpić swój komputer?&lt;p&gt;Przełącza komputer w stan niskiego poboru prądu. Stan systemu nie jest zabezpieczony przed utratą zasilania.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>Hibernuj sesję</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Czy jesteś pewien, że chcesz zahibernować swój komputer?&lt;p&gt;Przełącza komputer w stan niskiego poboru prądu. Stan systemu jest zabezpieczony przed utratą zasilania.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>Uruchom ponownie</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Czy jesteś pewien, że chcesz ponownie uruchomić swój komputer?&lt;p&gt;Cała niezapisana praca zostanie utracona...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>Wyłącz</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Czy jesteś pewien, że chcesz wyłączyć swój komputer?&lt;p&gt;Cała niezapisana praca zostanie utracona...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>Wyloguj</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Czy jesteś pewien, że chcesz się wylogować?&lt;p&gt;Cała niezapisana praca zostanie utracona...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>Błąd zarządzania energią</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Hibernacja nie powiodła się.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Uśpienie nie powiodło się.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Zablokuj ekran</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Błąd podczas aktywacji wygaszacza ekranu</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Wystąpił błąd podczas uruchamiania wygaszacza ekranu. xdg-screensaver nie uruchamia się (crash).</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Wystąpił błąd podczas uruchamiania wygaszacza ekranu. xdg-screensaver nie jest poprawnie zainstalowany.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Wystąpił błąd podczas uruchamiania wygaszacza ekranu. xdg-screensaver nie może zostać uruchomiony.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Wystąpił błąd podczas uruchamiania wygaszacza ekranu. Błąd składni argumentów xdg-screensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Wystąpił błąd podczas uruchamiania wygaszacza ekranu. Upewnij się, że xdg-screensaver jest zainstalowany oraz uruchomiony.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Wystąpił błąd podczas uruchamiania wygaszacza ekranu. Akcja &quot;aktywacja&quot; zawiodła. Upewnij się, że xdg-screensaver jest zainstalowany oraz uruchomiony.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Wystąpił błąd podczas wywołania wygaszacza ekranu. Nieznany błąd - nieudokumentowany zwrot wartości z xdg-screensaver=%1.</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Wyczyść</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Brak</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Błąd menedżera zasilania</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface jest nieprawidłowy</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Błąd menedżera zasilania (D-BUS call)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>O LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>O</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Autorzy</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Podziękowania</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Tłumaczenia</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Informacje techniczne</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,421 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="pt">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Adicionar extras</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Procurar:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation>Adicionar widget</translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Adicionar extra</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Fechar</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Caixa de diálogo</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Versão: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Ambiente de trabalho rápido, simples e fácil de utilizar baseado na tecnologia Qt.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>O LxQt não seria possível sem a ajuda dos colaboradores do projeto &lt;a %1&gt;Razor-qt&lt;/a&gt;.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Direitos de autor: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Página web: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Licença: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation>O LxQt é desenvolvido pelos &lt;a %1&gt;colaboradores da equipa LxQt&lt;/a&gt;.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation>Se quiser ajudar no desenvolvimento, &lt;a %1&gt;pode integrar a nossa equipa&lt;/a&gt;.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation>Um especial obrigado:</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>O LxQt está traduzido em diversos idiomas graças ao trabalho desenvolvido pelas equipas de tradução de todo o mundo.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Sim</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Não</translation>
</message>
<message>
<source>&lt;b&gt;LxQt Desktop Toolbox - Technical Info&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Ambiente de trabalho LXQt - Informações técnicas&lt;/b&gt;</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Versão</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Debug Build</source>
<translation type="obsolete">Compilação de depuração</translation>
</message>
<message>
<source>System Configuration</source>
<translation type="obsolete">Configuração do sistema</translation>
</message>
<message>
<source>Share Directory</source>
<translation type="obsolete">Diretório de partilha</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Traduções</translation>
</message>
<message>
<source>&lt;b&gt;User Directories&lt;/b&gt;</source>
<translation type="obsolete">Diretórios do utilizador</translation>
</message>
<message>
<source>Xdg Data Home</source>
<translation type="obsolete">Diretório dos dados do utilizador</translation>
</message>
<message>
<source>Xdg Config Home</source>
<translation type="obsolete">Diretório das configurações do utilizador</translation>
</message>
<message>
<source>Xdg Data Dirs</source>
<translation type="obsolete">Diretórios de dados</translation>
</message>
<message>
<source>Xdg Cache Home</source>
<translation type="obsolete">Diretório de cache do utilizador</translation>
</message>
<message>
<source>Xdg Runtime Home</source>
<translation type="obsolete">Diretório de execução do utilizador</translation>
</message>
<message>
<source>Xdg Autostart Dirs</source>
<translation type="obsolete">Diretórios de arranque automático</translation>
</message>
<message>
<source>Xdg Autostart Home</source>
<translation type="obsolete">Diretório de arranque automático do utilizador</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation>(%1 ativo)</translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation>Erro do gestor de energia do LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation>Falha ao hibernar.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Recurso para notificações</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Hibernar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Suspender</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Reiniciar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Desligar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Terminar sessão</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>Suspender</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Pretende mesmo suspender o computador?&lt;p&gt;A suspensão deixa o computador num estado de energia baixa. O estado do sistema não é guardado se faltar a energia.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>Hibernar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Pretende mesmo hibernar o computador?&lt;p&gt;A hibernação deixa o computador num estado de energia baixa. O estado do sistema é guardado se faltar a energia.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>Reiniciar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Pretende mesmo reiniciar o computador? Os trabalhos não gravados serão perdidos...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>Desligar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Pretende mesmo desligar o computador? Os trabalhos não gravados serão perdidos...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>Terminar sessão</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Pretende mesmo terminar a sessão? Os trabalhos não gravados serão perdidos...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>Erro do gestor de energia do LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Falha ao hibernar.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Falha ao suspender.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Bloquear ecrã</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Erro ao ativar a proteção de ecrã</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Ocorreu um erro ao iniciar a proteção de ecrã. O xdg-screensaver terminou abruptamente.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Ocorreu um erro ao iniciar a proteção de ecrã. O xdg-screensaver não está instalado corretamente.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Ocorreu um erro ao iniciar a proteção de ecrã. O xdg-screensaver não foi iniciado.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Ocorreu um erro ao iniciar a proteção de ecrã. Existem erros na sintaxe nos argumentos xdg-screensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Ocorreu um erro ao iniciar a proteção de ecrã. Certifique-se que o xdg-screensaver está instalado e em execução.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Ocorreu um erro ao iniciar a proteção de ecrã. Erro na ação &apos;activate&apos;. Certifique-se que o xdg-screensaver está instalado e em execução.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Ocorreu um erro ao iniciar a proteção de ecrã. O erro xdg-screensaver=%1 não é conhecido ou documentado.</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Limpar</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Nada</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Erro do gestor de energia</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>A interface QDBus não é válida</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Erro do gestor de energia (D-BUS)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation> Sobre o LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Sobre</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Autores</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Agradecimentos</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Traduções</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Informações técnicas</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation>Copiar para a área de transferência</translation>
</message>
</context>
</TS>

@ -0,0 +1,421 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="pt_BR">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Adicionar plugins</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Pesquisar:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Adicionar plugin</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Fechar</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Diálogo</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Versão: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Avançado, fácil de usar, e ambiente de trabalho rápido baseado nas tecnologias Qt.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Copyright: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Página: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Licença: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQt é traduzido em muitas línguas, graças ao trabalho das equipes de tradução de todo o mundo.</translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Sim</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Não</translation>
</message>
<message>
<source>&lt;b&gt;LxQt Desktop Toolbox - Technical Info&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Caixa De Ferramentas Do Desktop LXQt - Informações Técnicas&lt;/b&gt;</translation>
</message>
<message>
<source>Version</source>
<translation type="obsolete">Versão</translation>
</message>
<message>
<source>Qt</source>
<translation type="obsolete">Qt</translation>
</message>
<message>
<source>Debug Build</source>
<translation type="obsolete">Depuração Da Compilação</translation>
</message>
<message>
<source>System Configuration</source>
<translation type="obsolete">Configuração Do Sistema</translation>
</message>
<message>
<source>Share Directory</source>
<translation type="obsolete">Compartilhar Diretório</translation>
</message>
<message>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="obsolete">Traduções</translation>
</message>
<message>
<source>&lt;b&gt;User Directories&lt;/b&gt;</source>
<translation type="obsolete">&lt;b&gt;Diretórios Do Usuário&lt;/b&gt;</translation>
</message>
<message>
<source>Xdg Data Home</source>
<translation type="obsolete">Xdg Dados Pessoais</translation>
</message>
<message>
<source>Xdg Config Home</source>
<translation type="obsolete">Xdg Configuções Pessoais</translation>
</message>
<message>
<source>Xdg Data Dirs</source>
<translation type="obsolete">Xdg Diretórios Pessoais</translation>
</message>
<message>
<source>Xdg Cache Home</source>
<translation type="obsolete">Xdg Cache Pessoal</translation>
</message>
<message>
<source>Xdg Runtime Home</source>
<translation type="obsolete">Xdg Tempo De Execução Pessoal</translation>
</message>
<message>
<source>Xdg Autostart Dirs</source>
<translation type="obsolete">Xdg Diretórios De Início Automático</translation>
</message>
<message>
<source>Xdg Autostart Home</source>
<translation type="obsolete">Xdg Início Automático Pessoal</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">Erro ao gerenciar energia do LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Falha ao hibernar.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Notificações De Falhas</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Hibernar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Suspender</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Reiniciar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Desligar</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Encerrar sessão</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>Suspender sessão do LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Deseja realmente suspender o computador?&lt;p&gt;Suspende o computador em um estado de baixa energia. O estado do sistema não é preservado se a energia for perdida.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>Hibernar sessão do LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Deseja realmente hibernar o computador?&lt;p&gt;Hiberna o computador em um estado de baixa energia. O estado do sistema é preservado se a energia for perdida.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>Reiniciar sessão do LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Deseja realmente reiniciar o computador? Todos os trabalhos não salvos serão perdidos...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>Desligar sessão do LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Deseja realmente desligar o computador? Todos os trabalhos não salvos serão perdidos...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>Encerrar sessão do LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Deseja realmente encerrar a sessão? Todos os trabalhos não salvos serão perdidos...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>Erro ao gerenciar energia do LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Falha ao hibernar.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Falha ao suspender.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Bloquear tela</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Erro na ativação do protetor de tela</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>Ocorreu um erro ao iniciar o protetor de tela. O xdg-screensaver não pôde ser iniciado devido a uma falha.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>Ocorreu um erro ao iniciar o protetor de tela. O xdg-screensaver não está instalado corretamente.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>Ocorreu um erro ao iniciar o protetor de tela. O xdg-screensaver não pôde ser iniciado.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>Ocorreu um erro ao iniciar o protetor de tela. Erro de sintaxe nos argumentos do xdg-screensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>Ocorreu um erro ao iniciar o protetor de tela. Garanta que você tenha o xscreensaver instalado e funcionado.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>Ocorreu um erro ao iniciar o protetor de tela. A ação &apos;ativar&apos; falhou. Garanta que você tenha o xscreensaver instalado e funcionado.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>Ocorreu um erro ao inicair o protetor de tela. Erro desconhecido - retorno não documentado de xdg-screensaver=%1</translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Limpar</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Nenhum</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Erro no gerenciamento de energia</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface é inválida</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Erro no gerenciamento de energia (chamada D-Bus)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation>Sobre o LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Sobre</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Autores</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Agradecimentos</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Traduções</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Ficha Técnica</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,360 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="ro_RO">
<context>
<name>AddPluginDialog</name>
<message>
<source>Add plugins</source>
<translation type="obsolete">Adaugă module</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Caută:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugin</source>
<translation type="obsolete">Adaugă modul</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Închide</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation>Dialog</translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="obsolete">Da</translation>
</message>
<message>
<source>No</source>
<translation type="obsolete">Nu</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation type="unfinished">Eroare gestiune alimentare LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation type="unfinished">Hibernarea a eșuat.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="113"/>
<source>Hibernate</source>
<translation>Hibernare</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="120"/>
<source>Suspend</source>
<translation>Suspendare</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="127"/>
<source>Reboot</source>
<translation>Repornire</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="134"/>
<source>Shutdown</source>
<translation>Oprire</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="141"/>
<source>Logout</source>
<translation>Ieșire</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="153"/>
<source>LxQt Session Suspend</source>
<translation>Sesiune LXQt - suspendare</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="154"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Doriți să suspendați calculatorul?&lt;p&gt;Suspendă calculatorul într-o stare cu consum minim de energie. Starea sistemului nu va fi păstrată dacă se întrerupe alimentarea.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="163"/>
<source>LxQt Session Hibernate</source>
<translation>Sesiune LXQt - hibernare</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="164"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Doriți să treceți calculatorul în stare de hibernare?&lt;p&gt;Calculatorul va trece într-o stare cu consum minim de energie. Starea sistemului va fi păstrată și dacă se întrerupe alimentarea.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="173"/>
<source>LxQt Session Reboot</source>
<translation>Sesiune LXQt - repornire</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="174"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Doriți să reporniți calculatorul? Tot ce nu ați salvat se va pierde...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="183"/>
<source>LxQt Session Shutdown</source>
<translation>Sesiune LXQt - oprire</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="184"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Doriți să opriți calculatorul? Tot ce nu ați salvat se va pierde...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="193"/>
<source>LxQt Session Logout</source>
<translation>Sesiune LXQt - ieșire</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="194"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Doriți să ieșiți din sesiune? Tot ce nu ați salvat se va pierde...</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>LxQt Power Manager Error</source>
<translation>Eroare gestiune alimentare LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="202"/>
<source>Hibernate failed.</source>
<translation>Hibernarea a eșuat.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="207"/>
<source>Suspend failed.</source>
<translation>Suspendarea a eșuat.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="52"/>
<source>Lock Screen</source>
<translation>Blochează ecranul</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="71"/>
<location filename="../lxqtscreensaver.cpp" line="79"/>
<location filename="../lxqtscreensaver.cpp" line="87"/>
<location filename="../lxqtscreensaver.cpp" line="99"/>
<location filename="../lxqtscreensaver.cpp" line="107"/>
<location filename="../lxqtscreensaver.cpp" line="115"/>
<location filename="../lxqtscreensaver.cpp" line="124"/>
<source>Screen Saver Activation Error</source>
<translation>Eroare la activarea protecției de ecran</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="72"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>A apărut o eroare la activarea protecției de ecran. xdg-screensaver nu a putut fi pornit.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="80"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>A apărut o eroare la activarea protecției de ecran. xdg-screensaver nu a fost instalat corect.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="88"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>A apărut o eroare la activarea protecției de ecran. xdg-screensaver nu a putut fi pornit.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="100"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>A apărut o eroare la activarea protecției de ecran. Eroare de sintaxă în argumentele xdg-screensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="108"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>A apărut o eroare la pornirea protecției de ecran. Asigurați-vă că ați instalat xscreensaver și că acesta rulează.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="116"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>A apărut o eroare la pornirea protecției de ecran. Acțiunea &apos;activează&apos; a eșuat. Asigurați-vă că ați instalat xscreensaver și că acesta rulează.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="125"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::ShortcutButton</name>
<message>
<source>Clear</source>
<translation type="obsolete">Curăță</translation>
</message>
<message>
<source>None</source>
<translation type="obsolete">Nimic</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Eroare gestiune alimentare</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>QDBusInterface este incorect</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Eroare gestiune alimentare (apel D-Bus)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation> Despre LxQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>Despre</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Informații tehnice</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,333 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="ru">
<context>
<name>AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Поиск:</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="52"/>
<source>Add Widget</source>
<translation>Добавить виджет</translation>
</message>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.ui" line="59"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
</context>
<context>
<name>ConfigDialog</name>
<message>
<location filename="../configdialog/lxqtconfigdialog.ui" line="14"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQt::AboutDialogPrivate</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="86"/>
<source>Version: %1</source>
<translation>Версия: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="99"/>
<source>Advanced, easy-to-use, and fast desktop environment based on Qt technologies.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Передовая, быстрая, и простая в использовании среда рабочего стола на основе технологий Qt.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="101"/>
<source>LXQt would not have been possible without the &lt;a %1&gt;Razor-qt&lt;/a&gt; project and its many contributors.</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>LXQT не могло бы существовать без проекта &lt;a %1&gt;Razor-qt&lt;/a&gt; и многих его участников.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="103"/>
<source>Copyright: %1-%2 %3</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Авторские права: %1-%2 %3</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="105"/>
<source>Homepage: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Домашняя страница: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="107"/>
<source>License: %1</source>
<comment>About dialog, &apos;About&apos; tab text</comment>
<translation>Лицензия: %1</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="117"/>
<source>LXQt is developed by the &lt;a %1&gt;LXQt Team and contributors&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation>LXQT разработан &lt;a %1&gt;командой LXQt и прочими участниками&lt;/a&gt;.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="119"/>
<source>If you are interested in working with our development team, &lt;a %1&gt;join us&lt;/a&gt;.</source>
<comment>About dialog, &apos;Authors&apos; tab text</comment>
<translation>Если вы заинтересованы работой с нашей командой разработки, &lt;a %1&gt;присоединяйтесь к нам&lt;/a&gt;.</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="137"/>
<source>Special thanks to:</source>
<comment>About dialog, &apos;Thanks&apos; tab text</comment>
<translation>Особая благодарность:</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.cpp" line="144"/>
<source>LXQt is translated into many languages thanks to the work of the translation teams all over the world.</source>
<comment>About dialog, &apos;Translations&apos; tab text</comment>
<translation>LXQT переведён на множество языков благодаря работе команд переводчиков по всему миру.</translation>
</message>
</context>
<context>
<name>LxQt::AddPluginDialog</name>
<message>
<location filename="../addplugindialog/lxqtaddplugindialog.cpp" line="199"/>
<source>(%1 active)</source>
<translation>(%1 активный)</translation>
</message>
</context>
<context>
<name>LxQt::MessageBox</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>LxQt Power Manager Error</source>
<translation>Ошибка управления энергопотреблением LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="70"/>
<source>Hibernate failed.</source>
<translation>Ошибка перехода в спящий режим.</translation>
</message>
</context>
<context>
<name>LxQt::NotificationPrivate</name>
<message>
<location filename="../lxqtnotification.cpp" line="152"/>
<source>Notifications Fallback</source>
<translation>Резервный вариант уведомлений</translation>
</message>
</context>
<context>
<name>LxQt::PowerManager</name>
<message>
<location filename="../lxqtpowermanager.cpp" line="115"/>
<source>Hibernate</source>
<translation>Спящий режим</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="122"/>
<source>Suspend</source>
<translation>Ждущий режим</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="129"/>
<source>Reboot</source>
<translation>Перезагрузить</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="136"/>
<source>Shutdown</source>
<translation>Выключить компьютер</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="143"/>
<source>Logout</source>
<translation>Завершить сеанс</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="155"/>
<source>LxQt Session Suspend</source>
<translation>Ждущий режим сеанса LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="156"/>
<source>Do you want to really suspend your computer?&lt;p&gt;Suspends the computer into a low power state. System state is not preserved if the power is lost.</source>
<translation>Перевести компьютер в ждущий режим?&lt;p&gt;Переводит компьютер в режим низкого энергопотрбления. Состояние системы будет потеряно при отключении питания.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="165"/>
<source>LxQt Session Hibernate</source>
<translation>Спящий режим сеанса LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="166"/>
<source>Do you want to really hibernate your computer?&lt;p&gt;Hibernates the computer into a low power state. System state is preserved if the power is lost.</source>
<translation>Перевести компьютер в спящий режим?&lt;p&gt;Переводит компьютер в режим низкого энергопотрбления. Состояние системы будет сохранено при отключении питания.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="175"/>
<source>LxQt Session Reboot</source>
<translation>Перезагрузка сеанса LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="176"/>
<source>Do you want to really restart your computer? All unsaved work will be lost...</source>
<translation>Перезагрузить компьютер? Все несохранённые изменения в документах будут потеряны</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="185"/>
<source>LxQt Session Shutdown</source>
<translation>Завершение сеанса LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="186"/>
<source>Do you want to really switch off your computer? All unsaved work will be lost...</source>
<translation>Выключить компьютер? Все несохранённые изменения в документах будут потеряны</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="195"/>
<source>LxQt Session Logout</source>
<translation>Завершение сеанса LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="196"/>
<source>Do you want to really logout? All unsaved work will be lost...</source>
<translation>Завершить сеанс? Все несохранённые изменения в документах будут потеряны</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="204"/>
<location filename="../lxqtpowermanager.cpp" line="209"/>
<source>LxQt Power Manager Error</source>
<translation>Ошибка управления энергопотреблением LxQt</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="204"/>
<source>Hibernate failed.</source>
<translation>Ошибка перехода в спящий режим.</translation>
</message>
<message>
<location filename="../lxqtpowermanager.cpp" line="209"/>
<source>Suspend failed.</source>
<translation>Ошибка перехода в ждущий режим.</translation>
</message>
</context>
<context>
<name>LxQt::ScreenSaver</name>
<message>
<location filename="../lxqtscreensaver.cpp" line="54"/>
<source>Lock Screen</source>
<translation>Заблокировать экран</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="73"/>
<location filename="../lxqtscreensaver.cpp" line="81"/>
<location filename="../lxqtscreensaver.cpp" line="89"/>
<location filename="../lxqtscreensaver.cpp" line="101"/>
<location filename="../lxqtscreensaver.cpp" line="109"/>
<location filename="../lxqtscreensaver.cpp" line="117"/>
<location filename="../lxqtscreensaver.cpp" line="126"/>
<source>Screen Saver Activation Error</source>
<translation>Ошибка запуска хранителя экрана</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="74"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started due its crash.</source>
<translation>При запуске хранителя экрана произошла ошибка. Невозможно запустить xdg-screensaver по причине его сбоя.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="82"/>
<source>An error occurred starting screensaver. xdg-screensaver is not installed correctly.</source>
<translation>При запуске хранителя экрана произошла ошибка. Xdg-screensaver установлен некорректно.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="90"/>
<source>An error occurred starting screensaver. xdg-screensaver cannot be started.</source>
<translation>При запуске хранителя экрана произошла ошибка. Xdg-screensaver не может быть запущен.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="102"/>
<source>An error occurred starting screensaver. Syntax error in xdg-screensaver arguments.</source>
<translation>При запуске хранителя экрана произошла ошибка. Неверные аргументы запуска xdg-screensaver.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="110"/>
<source>An error occurred starting screensaver. Ensure you have xscreensaver installed and running.</source>
<translation>При запуске хранителя экрана произошла ошибка. Убедитесь, что xscreensaver установлен и запущен.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="118"/>
<source>An error occurred starting screensaver. Action &apos;activate&apos; failed. Ensure you have xscreensaver installed and running.</source>
<translation>При запуске заставки произошла ошибка. Невозможно выполнить действие «запустить». Проверьте, чтобы xscreensaver был установлен и запущен.</translation>
</message>
<message>
<location filename="../lxqtscreensaver.cpp" line="127"/>
<source>An error occurred starting screensaver. Unknown error - undocumented return value from xdg-screensaver=%1.</source>
<translation>При запуске заставки произвошла ошибка. Неизвестная ошибка - недокументированное значение возвращено из xdg-screensaver=%1.</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="91"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="141"/>
<source>Power Manager Error</source>
<translation>Ошибка модуля управления питанием</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="92"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="142"/>
<source>QDBusInterface is invalid</source>
<translation>Неправильный интерфейс доступа к шине DBus</translation>
</message>
<message>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="106"/>
<location filename="../lxqtpower/lxqtpowerproviders.cpp" line="156"/>
<source>Power Manager Error (D-BUS call)</source>
<translation>Ошибка управления энергопотреблением (вызов D-BUS)</translation>
</message>
</context>
<context>
<name>about</name>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="14"/>
<source> About LXQt</source>
<translation> О LXQt</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="66"/>
<source>About</source>
<comment>About dialog, Tab title </comment>
<translation>О программе</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="83"/>
<source>Authors</source>
<comment>About dialog, Tab title</comment>
<translation>Авторы</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="100"/>
<source>Thanks</source>
<comment>About dialog, Tab title</comment>
<translation>Благодарности</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="117"/>
<source>Translations</source>
<comment>About dialog, Tab title</comment>
<translation>Переводы</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="134"/>
<source>Technical Info</source>
<comment>About dialog, Tab title</comment>
<translation>Техническая информация</translation>
</message>
<message>
<location filename="../aboutdialog/lxqtaboutdialog.ui" line="165"/>
<source>Copy to clipboard</source>
<translation>Копировать в буфер обмена</translation>
</message>
</context>
</TS>

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

Loading…
Cancel
Save